Commit 8d9696c29e57b39e1abbaa6237e7d419409849cd

Authored by trainee
1 parent b2f214e7
Exists in master

page2 + 3-1/2

src/app/dashboard/dashboard.component.html
... ... @@ -9,17 +9,20 @@
9 9 <a href="#tab1" data-toggle="tab" aria-expanded="true">ติดตั้ง</a>
10 10 </li>
11 11 <li class="sbold">
12   - <a href="#tab2" data-toggle="tab" aria-expanded="false">page 2</a>
  12 + <a href="#tab2" data-toggle="tab" aria-expanded="false">RND</a>
13 13 </li>
14 14 <li class="sbold">
15   - <a href="#tab3" data-toggle="tab" aria-expanded="false">page 3</a>
  15 + <a href="#tab3" data-toggle="tab" aria-expanded="false">SDE+SDN</a>
16 16 </li>
17 17 <li class="sbold">
18   - <a href="#tab4" data-toggle="tab" aria-expanded="false">page 4</a>
  18 + <a href="#tab4" data-toggle="tab" aria-expanded="false">AP Down+APD</a>
19 19 </li>
20 20 <li class="sbold">
21   - <a href="#tab5" data-toggle="tab" aria-expanded="false">page 5</a>
  21 + <a href="#tab5" data-toggle="tab" aria-expanded="false">BNW+NDS+NED+NES+NET</a>
22 22 </li>
  23 + <li class="sbold">
  24 + <a href="#tab6" data-toggle="tab" aria-expanded="false">CUS</a>
  25 + </li>
23 26 </ul>
24 27 <div class="tab-content">
25 28 <div class="panel tab-pane active" id="tab1">
... ... @@ -128,7 +131,6 @@
128 131 </div>
129 132 </div>
130 133 </div>
131   -
132 134 <div class="panel tab-pane" id="tab2">
133 135 <div class="caption">
134 136 <h1 class="icon-bubble font-green-sharp">
... ... @@ -148,7 +150,7 @@
148 150 </div>
149 151 <div class="panel-body">
150 152 <div class="row">
151   - <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData | filter:FilterSearch: '' ">
  153 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData2 | filter:FilterSearch: '' ">
152 154 <a class="dashboard-stat dashboard-stat-v2 red "
153 155 href="{{item.link}}"
154 156 target="_blank"
... ... @@ -202,7 +204,7 @@
202 204 </div>
203 205 <div class="panel-body">
204 206 <div class="row">
205   - <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold | filter:FilterSearchOnHold: '' ">
  207 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold2 | filter:FilterSearchOnHold: '' ">
206 208 <a class="dashboard-stat dashboard-stat-v2 red "
207 209 href="{{item.link}}"
208 210 target="_blank"
... ... @@ -254,7 +256,7 @@
254 256 </div>
255 257 <div class="panel-body">
256 258 <div class="row">
257   - <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData | filter:FilterSearch: '' ">
  259 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData3 | filter:FilterSearch: '' ">
258 260 <a class="dashboard-stat dashboard-stat-v2 red "
259 261 href="{{item.link}}"
260 262 target="_blank"
... ... @@ -308,7 +310,7 @@
308 310 </div>
309 311 <div class="panel-body">
310 312 <div class="row">
311   - <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold | filter:FilterSearchOnHold: '' ">
  313 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold3 | filter:FilterSearchOnHold: '' ">
312 314 <a class="dashboard-stat dashboard-stat-v2 red "
313 315 href="{{item.link}}"
314 316 target="_blank"
... ... @@ -553,6 +555,112 @@
553 555 </div>
554 556 </div>
555 557 </div>
  558 + <div class="panel tab-pane" id="tab6">
  559 + <div class="caption">
  560 + <h1 class="icon-bubble font-green-sharp">
  561 + <span class="caption-subject font-green-sharp sbold font"> Active</span>
  562 + </h1>
  563 +
  564 + <div class="input-group" style="float: right; margin-top: 11px;">
  565 + <div class="input-icon right">
  566 + <i class="icon-magnifier">
  567 + </i>
  568 + <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearch">
  569 + </div>
  570 + </div>
  571 +
  572 + <hr>
  573 + <br>
  574 + </div>
  575 + <div class="panel-body">
  576 + <div class="row">
  577 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultData | filter:FilterSearch: '' ">
  578 + <a class="dashboard-stat dashboard-stat-v2 red "
  579 + href="{{item.link}}"
  580 + target="_blank"
  581 + [ngStyle] = "{'background-color': getColorDay(item.days.toFixed(0))}">
  582 + <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> -->
  583 + <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> -->
  584 + <div class="avater" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}" style="font-size: 26px; text-align: center; font-weight: bold;" >{{item.days.toFixed(0)}}D</div>
  585 + <div class="visual">
  586 + <i class="fa fa-comments"></i>
  587 + </div>
  588 + <table>
  589 + <tr>
  590 + <div class="details" style="width: calc(100% - 50px);">
  591 + <div style="text-align: right; margin-top: -50px; color: black;">{{item.STATUS}}</div>
  592 + <div class= "number" style=" color: black; display: block; text-align: right;">
  593 + <span data-counter="counterup" data-value="">{{item.custgroupName}}</span>
  594 + </div>
  595 + <div class="desc" style=" color: black;">{{item.team}}</div><br>
  596 + <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> -->
  597 + </div>
  598 + </tr>
  599 + <tr>
  600 + <div class="details" style="width: calc(100% - 50px);">
  601 + <div class="desc" style="text-align: left; color: black; margin-top: 100px;">{{item.COMMENT | short}}</div>
  602 + </div>
  603 + </tr>
  604 + </table>
  605 + </a>
  606 + </div>
  607 + </div>
  608 + </div>
  609 + <br>
  610 + <br>
  611 + <br>
  612 + <br>
  613 + <!-- On Hold -->
  614 +
  615 + <div class="caption">
  616 + <h1 class="icon-bubble font-grey-gallery">
  617 + <span class="caption-subject font-grey-gallery sbold font"> On Hold</span>
  618 + </h1>
  619 + <div class="input-group" style="float: right; margin-top: 11px;">
  620 + <div class="input-icon right">
  621 + <i class="icon-magnifier">
  622 + </i>
  623 + <input type="text" placeholder="Search.." class="form-control sbold font" [(ngModel)]="FilterSearchOnHold">
  624 + </div>
  625 + </div>
  626 + <hr>
  627 + <br>
  628 + </div>
  629 + <div class="panel-body">
  630 + <div class="row">
  631 + <div class="col-lg-4 col-md-3 col-sm-6 col-xs-12" *ngFor="let item of resultDataOnHold | filter:FilterSearchOnHold: '' ">
  632 + <a class="dashboard-stat dashboard-stat-v2 red "
  633 + href="{{item.link}}"
  634 + target="_blank"
  635 + [ngStyle] = "{'background-color': getColorDay(item.days.toFixed(0))}">
  636 + <!-- <div [ngStyle]="{'background-color':item.days === '366.0098' ? 'green' : 'red' }"></<div> -->
  637 + <!-- <div class="avater">{{(item.days).toFixed(0)}} D</div> -->
  638 + <div class="avater" [ngStyle]="{'background-color': getColorDay(item.days.toFixed(0))}" style="font-size: 26px; text-align: center; font-weight: bold;" >{{item.days.toFixed(0)}}D</div>
  639 + <div class="visual">
  640 + <i class="fa fa-comments"></i>
  641 + </div>
  642 + <table>
  643 + <tr>
  644 + <div class="details" style="width: calc(100% - 50px);">
  645 + <div style="text-align: right; margin-top: -50px; color: black;">{{item.STATUS}}</div>
  646 + <div class= "number" style=" color: black; display: block; text-align: right;">
  647 + <span data-counter="counterup" data-value="">{{item.custgroupName}}</span>
  648 + </div>
  649 + <div class="desc" style=" color: black;">{{item.team}}</div><br>
  650 + <!-- <div class="desc" style="text-align: left; text-align: bottom; color: black;">{{(item.COMMENT > 20)? | (item.COMMENT | slice:0:20) + '....':(item.COMMENT)}}</div> -->
  651 + </div>
  652 + </tr>
  653 + <tr>
  654 + <div class="details" style="width: calc(100% - 50px);">
  655 + <div class="desc" style="text-align: left; color: black; margin-top: 100px;">{{item.COMMENT | short}}</div>
  656 + </div>
  657 + </tr>
  658 + </table>
  659 + </a>
  660 + </div>
  661 + </div>
  662 + </div>
  663 + </div>
556 664 </div>
557 665 </div>
558 666 </div>
... ...
src/app/dashboard/dashboard.component.ts
... ... @@ -41,8 +41,24 @@ export class DashboardComponent implements OnInit {
41 41 resultData: any;
42 42 resultDataOnHold: any;
43 43  
  44 + resultData2: any;
  45 + resultDataOnHold2: any;
  46 +
  47 + resultData3: any;
  48 + resultDataOnHold3: any;
  49 +
  50 + resultData4: any;
  51 + resultDataOnHold4: any;
  52 +
  53 + resultDat5: any;
  54 + resultDataOnHold5: any;
  55 +
  56 + resultData6: any;
  57 + resultDataOnHold6: any;
  58 +
44 59  
45 60 async ngOnInit() {
  61 + //----------------------------1------------------------
46 62 // Active
47 63 try {
48 64 const data = {
... ... @@ -99,9 +115,130 @@ export class DashboardComponent implements OnInit {
99 115 setInterval(async() => {
100 116 await this.getDataOnHold();
101 117 }, 600000);
  118 +
  119 + //----------------------------2------------------------
  120 + // Active
  121 + try {
  122 + const data2 = {
  123 + // tslint:disable-next-line:max-line-length
  124 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) = 'RND (Renovate)' AND LCASE(vtiger_troubletickets. STATUS) not in('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  125 + "params": ["vtiger_crmentity"]
  126 + };
  127 + let response = await this._apiService.post('dynamic', data2);
  128 + if (response !== null) {
  129 + this.resultData2 = response;
  130 + this.resultData2.link = decodeURIComponent(decodeURIComponent(this.resultData2.link));
  131 + console.log('link: ', this.resultData2.link);
  132 + // tslint:disable-next-line:forin
  133 + for (const i in this.resultData2) {
  134 + this.resultData2[i].link = this._common.decodeURI(this.resultData2[i].link);
  135 + this.resultData2[i].birth_date = this._common.convertDate(this.resultData2[i].birth_date);
  136 + }
  137 + } else {
  138 + this.resultData2 = [];
  139 + }
  140 + } catch (error) {
  141 + console.log(error);
  142 + }
  143 +
  144 + setInterval(async() => {
  145 + await this.getData2();
  146 + }, 600000);
  147 +
  148 +
  149 + //OnHold
  150 + try {
  151 + const dataOnHold2 = {
  152 + // tslint:disable-next-line:max-line-length
  153 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) = 'RND (Renovate)' AND LCASE(vtiger_troubletickets. STATUS) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  154 + "params": ["vtiger_crmentity"]
  155 + };
  156 + let response = await this._apiService.post('dynamic', dataOnHold2);
  157 + if (response !== null) {
  158 + this.resultDataOnHold2 = response;
  159 + this.resultDataOnHold2.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold2.link));
  160 + console.log('link: ', this.resultDataOnHold2.link);
  161 + // tslint:disable-next-line:forin
  162 + for (const i in this.resultDataOnHold2) {
  163 + this.resultDataOnHold2[i].link = this._common.decodeURI(this.resultDataOnHold2[i].link);
  164 + this.resultDataOnHold2[i].birth_date = this._common.convertDate(this.resultDataOnHold2[i].birth_date);
  165 + }
  166 + } else {
  167 + this.resultDataOnHold2 = [];
  168 + }
  169 + } catch (error) {
  170 + console.log(error);
  171 + }
  172 +
  173 + setInterval(async() => {
  174 + await this.getDataOnHold2();
  175 + }, 600000);
  176 + //----------------------------3------------------------
  177 + // Active
  178 + try {
  179 + const data3 = {
  180 + // tslint:disable-next-line:max-line-length
  181 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) IN ('SDE (Site Down บ่อย)','SDN (Site Down Reset แล้วใช้งานไม่ได้)') AND LCASE(vtiger_troubletickets. STATUS) not in('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  182 + "params": ["vtiger_crmentity"]
  183 + };
  184 + let response = await this._apiService.post('dynamic', data3);
  185 + if (response !== null) {
  186 + this.resultData3 = response;
  187 + this.resultData3.link = decodeURIComponent(decodeURIComponent(this.resultData3.link));
  188 + console.log('link: ', this.resultData3.link);
  189 + // tslint:disable-next-line:forin
  190 + for (const i in this.resultData3) {
  191 + this.resultData3[i].link = this._common.decodeURI(this.resultData3[i].link);
  192 + this.resultData3[i].birth_date = this._common.convertDate(this.resultData3[i].birth_date);
  193 + }
  194 + } else {
  195 + this.resultData3 = [];
  196 + }
  197 + } catch (error) {
  198 + console.log(error);
  199 + }
  200 +
  201 + setInterval(async() => {
  202 + await this.getData3();
  203 + }, 600000);
  204 +
  205 +
  206 + //OnHold
  207 + try {
  208 + const dataOnHold3 = {
  209 + // tslint:disable-next-line:max-line-length
  210 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) IN ('SDE (Site Down บ่อย)','SDN (Site Down Reset แล้วใช้งานไม่ได้)') AND LCASE(vtiger_troubletickets. STATUS) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  211 + "params": ["vtiger_crmentity"]
  212 + };
  213 + let response = await this._apiService.post('dynamic', dataOnHold3);
  214 + if (response !== null) {
  215 + this.resultDataOnHold3 = response;
  216 + this.resultDataOnHold3.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold3.link));
  217 + console.log('link: ', this.resultDataOnHold3.link);
  218 + // tslint:disable-next-line:forin
  219 + for (const i in this.resultDataOnHold3) {
  220 + this.resultDataOnHold3[i].link = this._common.decodeURI(this.resultDataOnHold3[i].link);
  221 + this.resultDataOnHold3[i].birth_date = this._common.convertDate(this.resultDataOnHold3[i].birth_date);
  222 + }
  223 + } else {
  224 + this.resultDataOnHold3 = [];
  225 + }
  226 + } catch (error) {
  227 + console.log(error);
  228 + }
  229 +
  230 + setInterval(async() => {
  231 + await this.getDataOnHold3();
  232 + }, 600000);
  233 + //----------------------------4------------------------
  234 + //----------------------------5------------------------
  235 + //----------------------------6------------------------
102 236 }
103 237  
  238 + /////////////Get data come to use//////////////////////
  239 +
104 240  
  241 + //----------------------------1------------------------
105 242 // Active
106 243 async getData() {
107 244 try {
... ... @@ -127,7 +264,6 @@ export class DashboardComponent implements OnInit {
127 264 console.log(error);
128 265 }
129 266 }
130   -
131 267 //On Hold
132 268 async getDataOnHold() {
133 269 try {
... ... @@ -154,18 +290,110 @@ export class DashboardComponent implements OnInit {
154 290 }
155 291 }
156 292  
  293 + //----------------------------2------------------------
  294 + // Active
  295 + async getData2() {
  296 + try {
  297 + const data2 = {
  298 + // tslint:disable-next-line:max-line-length
  299 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) = 'RND (Renovate)' AND LCASE(vtiger_troubletickets. STATUS) not in('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  300 + "params": ["vtiger_crmentity"]
  301 + };
  302 + let response = await this._apiService.post('dynamic', data2);
  303 + if (response !== null) {
  304 + this.resultData2 = response;
  305 + this.resultData2.link = decodeURIComponent(decodeURIComponent(this.resultData2.link));
  306 + console.log('link: ', this.resultData2.link);
  307 + // tslint:disable-next-line:forin
  308 + for (const i in this.resultData2) {
  309 + this.resultData2[i].link = this._common.decodeURI(this.resultData2[i].link);
  310 + this.resultData2[i].birth_date = this._common.convertDate(this.resultData2[i].birth_date);
  311 + }
  312 + } else {
  313 + this.resultData2 = [];
  314 + }
  315 + } catch (error) {
  316 + console.log(error);
  317 + }
  318 + }
  319 + //On Hold
  320 + async getDataOnHold2() {
  321 + try {
  322 + const dataOnHold2 = {
  323 + // tslint:disable-next-line:max-line-length
  324 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) = 'RND (Renovate)' AND LCASE(vtiger_troubletickets. STATUS) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  325 + "params": ["vtiger_crmentity"]
  326 + };
  327 + let response = await this._apiService.post('dynamic', dataOnHold2);
  328 + if (response !== null) {
  329 + this.resultDataOnHold2 = response;
  330 + this.resultDataOnHold2.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold2.link));
  331 + console.log('link: ', this.resultDataOnHold2.link);
  332 + // tslint:disable-next-line:forin
  333 + for (const i in this.resultDataOnHold) {
  334 + this.resultDataOnHold2[i].link = this._common.decodeURI(this.resultDataOnHold2[i].link);
  335 + this.resultDataOnHold2[i].birth_date = this._common.convertDate(this.resultDataOnHold2[i].birth_date);
  336 + }
  337 + } else {
  338 + this.resultDataOnHold2 = [];
  339 + }
  340 + } catch (error) {
  341 + console.log(error);
  342 + }
  343 + }
  344 + //----------------------------3------------------------
  345 + // Active
  346 + async getData3() {
  347 + try {
  348 + const data3 = {
  349 + // tslint:disable-next-line:max-line-length
  350 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) IN ('SDE (Site Down บ่อย)','SDN (Site Down Reset แล้วใช้งานไม่ได้)') AND LCASE(vtiger_troubletickets. STATUS) not in('closed' , 'Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  351 + "params": ["vtiger_crmentity"]
  352 + };
  353 + let response = await this._apiService.post('dynamic', data3);
  354 + if (response !== null) {
  355 + this.resultData3 = response;
  356 + this.resultData3.link = decodeURIComponent(decodeURIComponent(this.resultData3.link));
  357 + console.log('link: ', this.resultData3.link);
  358 + // tslint:disable-next-line:forin
  359 + for (const i in this.resultData3) {
  360 + this.resultData3[i].link = this._common.decodeURI(this.resultData3[i].link);
  361 + this.resultData3[i].birth_date = this._common.convertDate(this.resultData3[i].birth_date);
  362 + }
  363 + } else {
  364 + this.resultData3 = [];
  365 + }
  366 + } catch (error) {
  367 + console.log(error);
  368 + }
  369 + }
  370 + //On Hold
  371 + async getDataOnHold3() {
  372 + try {
  373 + const dataOnHold3 = {
  374 + // tslint:disable-next-line:max-line-length
  375 + "query": "SELECT vtiger_account.accountname AS custgroupName , vtiger_troubletickets.ticketid AS id , IF( vtiger_groups.groupname IS NOT NULL , vtiger_groups.groupname , vu.user_name) AS team , vtiger_troubletickets.title , vtiger_troubletickets. STATUS , vtiger_troubletickets.priority , CONCAT( 'http%3A%2F%2Fvtiger.sourcecode.co.th%2Findex.php%3Faction%3DDetailView%26module%3DHelpDesk%26parenttab%3DSupport%26record%3D' , vtiger_troubletickets.ticketid) AS link ,( SELECT xx.comments FROM vtiger_ticketcomments xx WHERE xx.ticketid = vtiger_troubletickets.ticketid ORDER BY xx.createdtime DESC LIMIT 1) AS COMMENT , CASE vtiger_troubletickets. STATUS WHEN 'Closed' THEN( unix_timestamp(vtiger_crmentity.modifiedtime) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 ELSE( unix_timestamp(now()) - unix_timestamp(vtiger_crmentity.createdtime)) / 86400 END AS days , concat( vtiger_ticketcf.cf_568 , ' (' , vtiger_cf_568.day_amount , ')') AS type , IFNULL(( SELECT 'Wait for response by' FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , 'Created by') userType , IFNULL(( SELECT concat('' , assigned_by , '') FROM vtiger_ticket_history WHERE vtiger_troubletickets.ticketid = vtiger_ticket_history.ticketid AND assigned_type = 'Wait for response' ORDER BY updatetime DESC LIMIT 0 , 1) , vtiger_users.user_name) username , vtiger_crmentity.description , vtiger_crmentity.createdtime , vtiger_crmentity.modifiedtime , vtiger_cf_568.cf_568id FROM vtiger_crmentity JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smcreatorid JOIN vtiger_troubletickets ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid JOIN vtiger_account ON vtiger_account.accountid = vtiger_troubletickets.parent_id JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid JOIN vtiger_cf_568 ON vtiger_cf_568.cf_568 = vtiger_ticketcf.cf_568 LEFT OUTER JOIN vtiger_groups ON vtiger_crmentity.smownerid = vtiger_groups.groupid LEFT OUTER JOIN vtiger_users vu ON vtiger_crmentity.smownerid = vu.id WHERE 1 AND vtiger_crmentity.setype = 'HelpDesk' AND vtiger_crmentity.deleted = 0 AND vtiger_ticketcf.cf_568 != '' AND vtiger_cf_568.cf_568id NOT IN(8 , 9 , 10) AND( LCASE(vtiger_cf_568.cf_568) IN ('SDE (Site Down บ่อย)','SDN (Site Down Reset แล้วใช้งานไม่ได้)') AND LCASE(vtiger_troubletickets. STATUS) IN('Wait For Customer')) GROUP BY vtiger_troubletickets.ticketid ORDER BY vtiger_crmentity.createdtime ASC LIMIT 0 , 100",
  376 + "params": ["vtiger_crmentity"]
  377 + };
  378 + let response = await this._apiService.post('dynamic', dataOnHold3);
  379 + if (response !== null) {
  380 + this.resultDataOnHold3 = response;
  381 + this.resultDataOnHold3.link = decodeURIComponent(decodeURIComponent(this.resultDataOnHold3.link));
  382 + console.log('link: ', this.resultDataOnHold3.link);
  383 + // tslint:disable-next-line:forin
  384 + for (const i in this.resultDataOnHold) {
  385 + this.resultDataOnHold3[i].link = this._common.decodeURI(this.resultDataOnHold3[i].link);
  386 + this.resultDataOnHold3[i].birth_date = this._common.convertDate(this.resultDataOnHold3[i].birth_date);
  387 + }
  388 + } else {
  389 + this.resultDataOnHold3 = [];
  390 + }
  391 + } catch (error) {
  392 + console.log(error);
  393 + }
  394 + }
  395 + //----------------------------4------------------------
  396 + //----------------------------5------------------------
  397 + //----------------------------6------------------------
157 398  
158   -}
159   -
160   - // getColor(color) {
161   - // console.log(color)
162   - // switch (color) {
163   - // case 'red' :
164   - // return 'red';
165   - // case 'yellow' :
166   - // return 'yellow';
167   - // case 'green' :
168   - // return 'green';
169   - // }
170   - // }
171   -
  399 +}
172 400 \ No newline at end of file
... ...