Commit 565f5925 authored by ari_darmawan's avatar ari_darmawan

change behavior logbook pda team and behavior config env

parent cad53651
...@@ -12,6 +12,156 @@ ...@@ -12,6 +12,156 @@
Download Excel <i class="fas fa-download"></i> Download Excel <i class="fas fa-download"></i>
</span> </span>
<!-- <div class="table-responsive mt-4">
<table class="table table-bordered table-striped table-sm">
<thead>
<tr>
<th rowspan="2" style="max-width: 15px;">#</th>
<th *ngFor="let data of fieldExport; let i = index">
<div class="form-check">
<input type="checkbox" class="form-check-input" [checked]="data['value']" id="exampleCheck1" (change)="onChangeFieldReport(i, $event)">
<label class="form-check-label" for="exampleCheck1">{{data['field']}}</label>
</div>
</th>
</tr>
</thead>
<tbody>
<div *ngIf="TeamID == Env.Team.SociomileStaff">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.title}}</td>
<td>{{data.team_name}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.cscabang}}</td>
</tr>
</div>
<div *ngIf="TeamID == Env.Team.CsCabangBranchAgent">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.title}}</td>
<td>{{data.team_name}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.cscabang}}</td>
<td>{{data.supervisor}}</td>
</tr>
</div>
<div *ngIf="TeamID == Env.Team.AgentCallCenter">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.agent_name}}</td>
<td>{{data.unit_pengaduan}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.no_rekening}}</td>
<td>{{data.no_kartu_atm}}</td>
<td>{{data.penyebab_pengaduan}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.tanggal_transaksi}}</td>
<td>{{data.e_channel}}</td>
<td>{{data.kategori}}</td>
<td>{{data.tidak_lanjut}}</td>
<td>{{data.team_name}}</td>
<td>{{data.pic}}</td>
<td>{{(data.ticket_solution != null)? (data.ticket_solution | pipeSubstring) : ''}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.sla_hari_kerja}}</td>
</tr>
</div>
<div *ngIf="TeamID == Env.Team.ServiceReport">
<div *ngIf="servicefamily_id == 2 || servicefamily_id == 4">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.agent_name}}</td>
<td>{{data.unit_pengaduan}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.no_rekening}}</td>
<td>{{data.no_kartu_atm}}</td>
<td>{{data.penyebab_pengaduan}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.tanggal_transaksi}}</td>
<td>{{data.e_channel}}</td>
<td>{{data.kategori}}</td>
<td>{{data.tidak_lanjut}}</td>
<td>{{data.team_name}}</td>
<td>{{data.pic}}</td>
<td>{{(data.ticket_solution != null)? (data.ticket_solution | pipeSubstring) : ''}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.sla_hari_kerja}}</td>
<td>{{data.target_penyelesaian}}</td>
<td>{{data.remark}}</td>
<td>{{data.nasabah}}</td>
<td>{{data.bank}}</td>
</tr>
</div>
<div *ngIf="servicefamily_id == 1 || servicefamily_id == 5">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.no_rekening}}</td>
<td>{{data.no_kartu_atm}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.e_channel}}</td>
<td>{{data.kategori}}</td>
<td>{{data.ticket_solution}}</td>
<td>{{data.team_name}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.close_date}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.sla_hari_kerja}}</td>
</tr>
</div>
</div>
</tbody>
</table>
</div> -->
<!-- Role SPV and SD Only --> <!-- Role SPV and SD Only -->
<div class="table-responsive mt-4" *ngIf="RoleID == _SP.PARAM_SPV || RoleID == _SP.PARAM_SERVICEDESK || TeamID == Env.Team.ServiceReport"> <div class="table-responsive mt-4" *ngIf="RoleID == _SP.PARAM_SPV || RoleID == _SP.PARAM_SERVICEDESK || TeamID == Env.Team.ServiceReport">
<table class="table table-bordered table-striped table-sm"> <table class="table table-bordered table-striped table-sm">
......
...@@ -37,6 +37,7 @@ export class LogbooksReportComponent implements OnInit, OnChanges { ...@@ -37,6 +37,7 @@ export class LogbooksReportComponent implements OnInit, OnChanges {
listRequest: any = {}; listRequest: any = {};
serviceFamilyName: string = ""; serviceFamilyName: string = "";
servicefamily_id: number = 0;
constructor( constructor(
private _cRef: ChangeDetectorRef, private _cRef: ChangeDetectorRef,
private router: Router, private router: Router,
...@@ -57,6 +58,7 @@ export class LogbooksReportComponent implements OnInit, OnChanges { ...@@ -57,6 +58,7 @@ export class LogbooksReportComponent implements OnInit, OnChanges {
let start_date_ticket = ''; let start_date_ticket = '';
let deskripsi = ''; let deskripsi = '';
let status= ''; let status= '';
this.servicefamily_id = this.listRequest.servicefamily_id[0];
switch (this.listRequest.servicefamily_id[0]) { switch (this.listRequest.servicefamily_id[0]) {
case 2: case 2:
start_date_ticket += " Pengaduan"; start_date_ticket += " Pengaduan";
......
...@@ -12,16 +12,21 @@ import { AdminLivedashboardComponent } from './admin-livedashboard/admin-livedas ...@@ -12,16 +12,21 @@ import { AdminLivedashboardComponent } from './admin-livedashboard/admin-livedas
import { LoginLogsComponent } from './login-logs/login-logs.component'; import { LoginLogsComponent } from './login-logs/login-logs.component';
import { AdminDashboardLogbooksComponent } from './admin-dashboard-logbooks/admin-dashboard-logbooks.component'; import { AdminDashboardLogbooksComponent } from './admin-dashboard-logbooks/admin-dashboard-logbooks.component';
import { AdminUserAgentComponent } from './admin-user-agent/admin-user-agent.component'; import { AdminUserAgentComponent } from './admin-user-agent/admin-user-agent.component';
import { LogbookComponent } from './logbook/logbook.component';
const routes: Routes = [ const routes: Routes = [
{
path: '',
component: LogbookComponent
},
// { // {
// path: '', // path: '',
// component: AdminDashboardComponent // component: AdminDashboardComponent
// }, // },
{ // {
path: '', // path: '',
component: AdminDashboardLogbooksComponent // component: AdminDashboardLogbooksComponent
}, // },
{ {
path: 'live-dashboard', path: 'live-dashboard',
component: AdminLivedashboardComponent component: AdminLivedashboardComponent
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
{{CustomerMdData.Name}} {{CustomerMdData.Name}}
</button> </button>
</div> </div>
<hr> <!-- <hr>
<p> <p>
<b>Agent</b> <b>Agent</b>
</p> </p>
...@@ -48,8 +48,8 @@ ...@@ -48,8 +48,8 @@
<div class="form-group"> <div class="form-group">
<label class="text-muted">Channel <span class="text-danger">*</span></label> <label class="text-muted">Channel <span class="text-danger">*</span></label>
<input type="text" placeholder="Input Channel ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="channel" maxlength="30"> <input type="text" placeholder="Input Channel ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="channel" maxlength="30">
</div> </div> -->
<hr> <!-- <hr> -->
<p> <p>
<b>Assignee</b> <b>Assignee</b>
</p> </p>
......
...@@ -175,7 +175,7 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -175,7 +175,7 @@ export class AdminTicketCreateComponent implements OnInit {
this.GettingTeamsListAPI() this.GettingTeamsListAPI()
this.GettingTopicListAPI() this.GettingTopicListAPI()
this.GettingComplaintmentListAPI() this.GettingComplaintmentListAPI()
this.requestAgent(); // this.requestAgent();
} }
//Take By User ------------------------------------------------------------------------ //Take By User ------------------------------------------------------------------------
...@@ -370,7 +370,8 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -370,7 +370,8 @@ export class AdminTicketCreateComponent implements OnInit {
this.Env.Team.SociomileStaff, this.Env.Team.SociomileStaff,
this.Env.Team.ITRM, this.Env.Team.ITRM,
this.Env.Team.BarcodeQRIS, this.Env.Team.BarcodeQRIS,
this.Env.Team.MerchantBusiness this.Env.Team.MerchantBusiness,
this.Env.Team.DigitalLoan
] ]
} }
...@@ -786,16 +787,11 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -786,16 +787,11 @@ export class AdminTicketCreateComponent implements OnInit {
this._TicketService.CreateTicketWithContact(_Request) this._TicketService.CreateTicketWithContact(_Request)
.subscribe((result: any) => { .subscribe((result: any) => {
if(result != null){ if(result != null){
//console.log(JSON.stringify(result))
if(result.values.code == 0){ if(result.values.code == 0){
// AratakaConfig.LoadingPage.hideLoading() // AratakaConfig.LoadingPage.hideLoading()
var ObjKey = Object.keys(result.values.objects) var ObjKey = Object.keys(result.values.objects)
var created = result.values.objects[ObjKey[0]] var created = result.values.objects[ObjKey[0]]
console.log(ObjKey)
console.log(created)
const params = { const params = {
"agent_custom": this.extAgent, "agent_custom": this.extAgent,
"agent_extension_id": Number(this.idAgent), "agent_extension_id": Number(this.idAgent),
...@@ -804,18 +800,7 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -804,18 +800,7 @@ export class AdminTicketCreateComponent implements OnInit {
"ticket_id": Number(created.key), "ticket_id": Number(created.key),
"ticket_type": created.class "ticket_type": created.class
} }
console.log(params)
this.API.post('ticket_extension', params)
.subscribe((response: any) => {
this.InsertNewTicketAssignAPI({
ticket_assign : created.key,
ticket_class : created.class,
team_id : this.AssigneeTeam_ID,
agent_id : this.AssigneeTeamAgent_ID,
source_agent_id : this._SP.getUserInformation.values.user_id
})
}, (err: HttpErrorResponse) => {
this.InsertNewTicketAssignAPI({ this.InsertNewTicketAssignAPI({
ticket_assign : created.key, ticket_assign : created.key,
ticket_class : created.class, ticket_class : created.class,
...@@ -823,7 +808,25 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -823,7 +808,25 @@ export class AdminTicketCreateComponent implements OnInit {
agent_id : this.AssigneeTeamAgent_ID, agent_id : this.AssigneeTeamAgent_ID,
source_agent_id : this._SP.getUserInformation.values.user_id source_agent_id : this._SP.getUserInformation.values.user_id
}) })
})
// this.API.post('ticket_extension', params)
// .subscribe((response: any) => {
// this.InsertNewTicketAssignAPI({
// ticket_assign : created.key,
// ticket_class : created.class,
// team_id : this.AssigneeTeam_ID,
// agent_id : this.AssigneeTeamAgent_ID,
// source_agent_id : this._SP.getUserInformation.values.user_id
// })
// }, (err: HttpErrorResponse) => {
// this.InsertNewTicketAssignAPI({
// ticket_assign : created.key,
// ticket_class : created.class,
// team_id : this.AssigneeTeam_ID,
// agent_id : this.AssigneeTeamAgent_ID,
// source_agent_id : this._SP.getUserInformation.values.user_id
// })
// })
// this.InsertNewTicketContactAPI({ // this.InsertNewTicketContactAPI({
// ticket_id : created.key, // ticket_id : created.key,
...@@ -928,7 +931,8 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -928,7 +931,8 @@ export class AdminTicketCreateComponent implements OnInit {
if(result != null){ if(result != null){
//console.log(JSON.stringify(result)) //console.log(JSON.stringify(result))
if(result.values.code == 0){ if(result.values.code == 0){
AratakaConfig.LoadingPage.hideLoading();
AratakaConfig.Alert.showAlert('Create Ticket Success','alert-success',2000)
}else{ }else{
AratakaConfig.Alert.showAlert('Failed to Create Ticket Dispatch','alert-danger',2000) AratakaConfig.Alert.showAlert('Failed to Create Ticket Dispatch','alert-danger',2000)
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<br> <br>
<div class="row"> <div class="row">
<div class="col-12 col-sm-4 col-md-4 col-lg-3 mb-3"> <div class="col-12 col-sm-4 col-md-4 col-lg-3 mb-3">
<p> <!-- <p>
<b>Agent</b> <b>Agent</b>
</p> </p>
<div class="form-group"> <div class="form-group">
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<div class="form-group"> <div class="form-group">
<label class="text-muted">Channel <span class="text-danger">*</span></label> <label class="text-muted">Channel <span class="text-danger">*</span></label>
<input type="text" placeholder="Input Channel ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="channel" disabled> <input type="text" placeholder="Input Channel ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="channel" disabled>
</div> </div> -->
<hr> <hr>
<p> <p>
<b>Assignee</b> <b>Assignee</b>
......
...@@ -250,8 +250,8 @@ export class AdminTicketDetailComponent implements OnInit { ...@@ -250,8 +250,8 @@ export class AdminTicketDetailComponent implements OnInit {
this.GettingTicketDetailAPI({ this.GettingTicketDetailAPI({
ID : this.paramTicketID ID : this.paramTicketID
}) })
this.getDetailExtensionTiket() // this.getDetailExtensionTiket()
this.requestAgent() // this.requestAgent()
this.ConversationViewByRole() this.ConversationViewByRole()
AratakaConfig.BootstrapDateCustomPicker({ AratakaConfig.BootstrapDateCustomPicker({
......
...@@ -31,6 +31,8 @@ import { LogbooksComponent } from './admin-dashboard-logbooks/logbooks/logbooks. ...@@ -31,6 +31,8 @@ import { LogbooksComponent } from './admin-dashboard-logbooks/logbooks/logbooks.
import { LogbooksReportComponent } from './admin-dashboard-logbooks/logbooks-report/logbooks-report.component'; import { LogbooksReportComponent } from './admin-dashboard-logbooks/logbooks-report/logbooks-report.component';
import { AdminUserAgentComponent } from './admin-user-agent/admin-user-agent.component'; import { AdminUserAgentComponent } from './admin-user-agent/admin-user-agent.component';
import { CreateAgentComponent } from './admin-user-agent/create-agent/create-agent.component'; import { CreateAgentComponent } from './admin-user-agent/create-agent/create-agent.component';
import { LogbookComponent } from './logbook/logbook.component';
import { TabsLogbookComponent } from './logbook/tabs-logbook/tabs-logbook.component';
/*import { PipeSha256 } from '../pipe/pipe-global.pipe'; /*import { PipeSha256 } from '../pipe/pipe-global.pipe';
import { PipeEncryptoJs } from '../pipe/pipe-global.pipe'; import { PipeEncryptoJs } from '../pipe/pipe-global.pipe';
import { PipeDencryptoJs } from '../pipe/pipe-global.pipe'; import { PipeDencryptoJs } from '../pipe/pipe-global.pipe';
...@@ -65,6 +67,8 @@ import { PipeDencryptoJs } from '../pipe/pipe-global.pipe'; ...@@ -65,6 +67,8 @@ import { PipeDencryptoJs } from '../pipe/pipe-global.pipe';
LogbooksReportComponent, LogbooksReportComponent,
AdminUserAgentComponent, AdminUserAgentComponent,
CreateAgentComponent, CreateAgentComponent,
LogbookComponent,
TabsLogbookComponent,
], ],
imports: [ imports: [
PipeglobalModule, PipeglobalModule,
......
.jumbotron{
background: url('../../../assets/StoredImage/DahsboardJumbotron.png') no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: 100%;
margin-top:0px;
/*border: 1px solid #ccc;*/
}
.container-01{
border: 2px solid #ccc;
border-radius:3px;
}
.dashboardBox{
padding: 8px;
border: 1px solid transparent;
text-align: center;
border-radius: 5px;
margin: 5px 0;
}
.ticketTect{
font-size: 11px;
font-weight: bold;
}
.downloadExportDashboard{
top: 0;
right: 0;
position: absolute;
cursor: pointer;
color: #636e72;
margin-right: 10px;
background: #fff;
/* border: 1px solid #ccc; */
border-radius: 50%;
padding: 5px 8px;
font-size: 12px;
}
.downloadExportDashboard:hover{
color: #222;
}
.TabsCustomTitle{
background: transparent;
margin: 2px;
color: #222;
padding: 3px 30px;
border-bottom: 3px solid #ebe9e9;
cursor: pointer;
word-wrap: break-word;
display: inline-block;
font-size: 13px;
font-weight: 900;
text-transform: uppercase;
}
.TabsCustomTitle:hover{
color: #222;
border-bottom: 3px solid #d18b5d;
}
.TabsCustomTitle.active{
color: #222;
border-bottom: 3px solid #e67e22;
}
.TabsCustom{
background: transparent;
margin: 2px;
color: #222;
padding: 3px 20px;
border-bottom: 3px solid #ebe9e9;
cursor: pointer;
word-wrap: break-word;
display: inline-block;
font-size: 12px;
}
.TabsCustom:hover{
color: #222;
border-bottom: 3px solid #7e8389;
}
.TabsCustom.active{
color: #222;
border-bottom: 3px solid #2c3e50;
}
<div class="container" style="margin-top: -20px;">
<div class="row">
<div class="col-12 col-sm-6 col-md-4 col-lg-8">
<p style="font-size: 15px;">DASHBOARD</p>
</div>
<div class="col-12 col-sm-6 col-md-4 col-lg-2">
<div class="form-group" >
<label class="text-muted"><small>Start Date </small></label>
<div class="input-group date" id="StartDate" data-target-input="nearest">
<input type="text"
class="form-control form-control-sm datetimepicker-input" data-toggle="datetimepicker"
data-target="#StartDate" (blur)="GettingDashboardCardColorsDataAPI()"/>
<div class="input-group-append" data-target="#StartDate" data-toggle="datetimepicker">
<div class="input-group-text"><i class="far fa-calendar-alt"></i></div>
</div>
</div>
</div>
</div>
<div class="col-12 col-sm-6 col-md-4 col-lg-2">
<div class="form-group">
<label class="text-muted"><small>End Date </small></label>
<div class="input-group date" id="EndDate" data-target-input="nearest">
<input type="text"
class="form-control form-control-sm datetimepicker-input" data-toggle="datetimepicker"
data-target="#EndDate" (blur)="GettingDashboardCardColorsDataAPI()"/>
<div class="input-group-append" data-target="#EndDate" data-toggle="datetimepicker">
<div class="input-group-text"><i class="far fa-calendar-alt"></i></div>
</div>
</div>
</div>
</div>
</div>
<p *ngIf="isDashboardCardEmpty" style="font-size:18px;" class="text-muted text-center">
<i class="far fa-chart-bar fa-3x"></i>
<br> Upss... no Dashboard!
</p>
<p *ngIf="isDashboardCardLoading" style="font-size:18px;" class="text-muted text-center">
<i class="fas fa-spinner fa-spin"></i>
Retrieving data
</p>
<ng-container *ngIf="!isDashboardCardEmpty && !isDashboardCardLoading">
<div class="row">
<ng-container *ngFor="let data of dashboardListCard; let i = index">
<div class="col-12 col-sm-6 col-md-4 col-lg-2">
<div class="dashboardBox" [ngStyle]="{'background-color': data.colour,'color': '#fff'}">
<p class="downloadExportDashboard"
*ngIf="(data.Count != 0) && (RoleID == _SP.PARAM_SPV || RoleID == _SP.PARAM_SERVICEDESK)"
(click)="GettingExcelForDashboardDataAPI(i)">
<i class="fas fa-download"></i>
</p>
<p class="m-0 p-0">
{{data.Count}}
</p>
<p class="m-0 p-0 ticketTect">{{data.Name}}</p>
</div>
</div>
</ng-container>
</div>
</ng-container>
<br>
<p class="mb-3">
<span class="mb-1 TabsCustomTitle active">
Logbook
</span>
</p>
<p *ngIf="isEmptyChild" style="font-size:18px;" class="text-muted text-center">
<i class="fas fa-columns fa-3x"></i> <br>
There is no Dashboard
</p>
<p *ngIf="isLoadingChild" style="font-size:18px;" class="text-muted text-center">
<i class="fas fa-spinner fa-spin"></i>
Retrieving data
</p>
<p *ngIf="!isLoadingChild && !isEmptyChild">
<ng-container *ngFor="let data of listChildTabs; let i = index">
<span
class="TabsCustom"
[ngClass]="{'active': data.selected, '': !data.selected}" (click)="changeTab(i)">
{{data.name}} {{data.count ? data.count : ''}}
</span>
</ng-container>
</p>
<app-tabs-logbook
[paramsRequest]="paramsRequest">
</app-tabs-logbook>
</div>
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { LogbookComponent } from './logbook.component';
describe('LogbookComponent', () => {
let component: LogbookComponent;
let fixture: ComponentFixture<LogbookComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LogbookComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LogbookComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
This diff is collapsed.
.downloadExportReport{
border: 1px solid #607D8B;
padding: 5px 10px;
border-radius: 3px;
float: right;
font-size: 12px;
background: #607D8B;
color: #fff;
cursor: pointer;
margin: 0 10px 30px 0;
}
.downloadExportReport:hover{
color: #ffffff;
background-color:#263238 ;
}
.Table-Background{
/* border: 2px solid #ebe9e9; */
padding: 20px 5px;
margin: 10px;
/* border-radius: 10px; */
}
.table th {
vertical-align: middle;
}
.table td, .table th {
min-width: 150px;
}
.table td:first-child, .table th:first-child {
min-width: 20px;
}
\ No newline at end of file
<button class="btn btn-sm btn-success arataka-btn-success" style="width: 100px;" (click)="GettingTicketReportDataAPI()" [disabled]="isDisabledButtonSearch">
<i class="bi bi-search"></i>
Search
</button>
<br>
<div class="row">
<div class="col-12 col-sm-12 text-center mt-5" *ngIf="isEmptyLogbooks">
<p style="font-size:18px;" class="text-muted"><i class="fas fa-table fa-3x"></i> <br> No List of Report</p>
</div>
<div class="col-12 col-sm-12 text-center mt-5" *ngIf="isLoadingLogbooks">
<p style="font-size:18px;" class="text-muted"><i class="fas fa-spinner fa-spin"></i> Retrieving data</p>
</div>
<div class="col-12 col-sm-12 Table-Background" *ngIf="!isLoadingLogbooks && !isEmptyLogbooks">
<span
class="downloadExportReport"
(click)="GettingExcelForReportDataAPI()">
Download Excel <i class="fas fa-download"></i>
</span>
<div class="table-responsive mt-4">
<table class="table table-bordered table-striped table-sm">
<thead>
<tr>
<th rowspan="2" style="max-width: 15px;">#</th>
<th *ngFor="let data of fieldExport; let i = index">
<div class="form-check">
<input type="checkbox" class="form-check-input" [checked]="data['value']" id="exampleCheck1" (change)="onChangeFieldReport(i, $event)">
<label class="form-check-label" for="exampleCheck1">{{data['field']}}</label>
</div>
</th>
</tr>
</thead>
<tbody>
<ng-container *ngIf="TeamID == Env.Team.SociomileStaff">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.title}}</td>
<td>{{data.team_name}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.cscabang}}</td>
</tr>
</ng-container>
<ng-container *ngIf="TeamID == Env.Team.CsCabangBranchAgent">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.title}}</td>
<td>{{data.team_name}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.cscabang}}</td>
<td>{{data.supervisor}}</td>
</tr>
</ng-container>
<ng-container *ngIf="TeamID == Env.Team.AgentCallCenter">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.agent_name}}</td>
<td>{{data.unit_pengaduan}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.no_rekening}}</td>
<td>{{data.no_kartu_atm}}</td>
<td>{{data.penyebab_pengaduan}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.tanggal_transaksi}}</td>
<td>{{data.e_channel}}</td>
<td>{{data.kategori}}</td>
<td>{{data.tidak_lanjut}}</td>
<td>{{data.team_name}}</td>
<td>{{data.pic}}</td>
<td>{{(data.ticket_solution != null)? (data.ticket_solution | pipeSubstring) : ''}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.sla_hari_kerja}}</td>
</tr>
</ng-container>
<ng-container *ngIf="RoleID == _SP.PARAM_SPV || RoleID == _SP.PARAM_SERVICEDESK || TeamID == Env.Team.ServiceReport">
<ng-container *ngIf="servicefamily_id == 2 || servicefamily_id == 4">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.agent_name}}</td>
<td>{{data.unit_pengaduan}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.no_rekening}}</td>
<td>{{data.no_kartu_atm}}</td>
<td>{{data.penyebab_pengaduan}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.tanggal_transaksi}}</td>
<td>{{data.e_channel}}</td>
<td>{{data.kategori}}</td>
<td>{{data.tidak_lanjut}}</td>
<td>{{data.team_name}}</td>
<td>{{data.pic}}</td>
<td>{{(data.ticket_solution != null)? (data.ticket_solution | pipeSubstring) : ''}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.sla_hari_kerja}}</td>
<td>{{data.target_penyelesaian}}</td>
<td>{{data.remark}}</td>
<td>{{data.nasabah}}</td>
<td>{{data.bank}}</td>
</tr>
</ng-container>
<ng-container *ngIf="servicefamily_id == 1 || servicefamily_id == 5">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.no_rekening}}</td>
<td>{{data.no_kartu_atm}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.ticket_service_name}}</td>
<td>{{data.ticket_servicesubcategory_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.e_channel}}</td>
<td>{{data.kategori}}</td>
<td>{{data.ticket_solution}}</td>
<td>{{data.team_name}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.close_date}}</td>
<td>{{data.sla_internal}}</td>
<td>{{data.sla_hari_kerja}}</td>
</tr>
</ng-container>
</ng-container>
<ng-container *ngIf="RoleID == Env.PARAM_SUPPORT">
<tr *ngFor="let data of listLogbooks.data; let i = index">
<td class="col-1">{{((i+1) + ((listRequest.perpage * listRequest.page) - listRequest.perpage))}}.</td>
<td>{{data.ref}}</td>
<td>{{data.createdby_name}}</td>
<td>{{data.start_date}}</td>
<td>{{data.caller_name}}</td>
<td>{{data.caller_mobile_phone}}</td>
<td>{{data.ticket_servicefamiliy_name}}</td>
<td>{{data.deskripsi}}</td>
<td>{{data.ticket_status}}</td>
<td>{{data.resolve_date}}</td>
<td>{{data.target_penyelesaian}}</td>
<td>{{data.sla_hari_kerja}}</td>
</tr>
</ng-container>
</tbody>
</table>
</div>
</div>
</div>
<br>
<div class="row" *ngIf="!isLoadingLogbooks && !isEmptyLogbooks">
<div class="col-12">
<p class="text-center text-muted">
<small>
{{listLogbooks.PagingDisplay}}
</small>
</p>
</div>
<div class="col-6">
<h5 class="text-center arataka-paging-arrow mb-5" (click)="PagingArrowLeft()">
<i class="fas fa-chevron-left"></i> Previous
</h5>
</div>
<div class="col-6">
<h5 class="text-center arataka-paging-arrow mb-5" (click)="PagingArrowRight()">
Next <i class="fas fa-chevron-right"></i>
</h5>
</div>
</div>
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { TabsLogbookComponent } from './tabs-logbook.component';
describe('TabsLogbookComponent', () => {
let component: TabsLogbookComponent;
let fixture: ComponentFixture<TabsLogbookComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ TabsLogbookComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TabsLogbookComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
This diff is collapsed.
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; import { NgModule, APP_INITIALIZER } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
...@@ -7,7 +7,7 @@ import { FormsModule,ReactiveFormsModule } from '@angular/forms'; ...@@ -7,7 +7,7 @@ import { FormsModule,ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http';
import { HomeService } from './home.service'; import { HomeService } from './home.service';
import { ServiceProxyWeb } from '../shared/serviceproxy/service-proxy.service'; import { ConfigService, ServiceProxyWeb } from '../shared/serviceproxy/service-proxy.service';
import { AuthService } from '../shared/serviceproxy/service-proxy.service'; import { AuthService } from '../shared/serviceproxy/service-proxy.service';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
...@@ -22,6 +22,10 @@ import { PageNotFoundComponent } from './page-not-found/page-not-found.component ...@@ -22,6 +22,10 @@ import { PageNotFoundComponent } from './page-not-found/page-not-found.component
import { PipeglobalModule } from './pipe/pipeglobal/pipeglobal.module'; import { PipeglobalModule } from './pipe/pipeglobal/pipeglobal.module';
export const configFactory = (configService: ConfigService) => {
return () => configService.loadEnvConfig();
};
@NgModule({ @NgModule({
declarations: [ declarations: [
AppComponent, AppComponent,
...@@ -45,7 +49,13 @@ import { PipeglobalModule } from './pipe/pipeglobal/pipeglobal.module'; ...@@ -45,7 +49,13 @@ import { PipeglobalModule } from './pipe/pipeglobal/pipeglobal.module';
providers: [ providers: [
HomeService, HomeService,
ServiceProxyWeb, ServiceProxyWeb,
AuthService AuthService,
{
provide: APP_INITIALIZER,
useFactory: configFactory,
deps: [ConfigService],
multi: true
}
], ],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
......
{ {
"APIBASEURL" : "http://localhost:9825/", "APIBASEURL" : "http://innodev.vnetcloud.com/nobucall-api-v2/",
"MICROSERVICEURL" : "hhttp://innodev.vnetcloud.com/nobu-history-login/api/v1/", "MICROSERVICEURL" : "http://innodev.vnetcloud.com/nobu-history-login/api/v1/",
"SITE_NAME" : "Visionet Helpdesk System", "SITE_NAME" : "Visionet Helpdesk System",
"SITE_LOGO" : "https://i0.wp.com/jogorogo.info/wp-content/uploads/2017/07/logo_visionet.png?fit=879%2C227", "SITE_LOGO" : "https://i0.wp.com/jogorogo.info/wp-content/uploads/2017/07/logo_visionet.png?fit=879%2C227",
"COMPANY_NAME" : "PT. Visionet Data Internasional", "COMPANY_NAME" : "PT. Visionet Data Internasional",
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
export const environment = { export const environment = {
production: false, production: false,
"APIBASEURL" : "http://crm.nobubank.com/nobucall-api-v2/", "APIBASEURL" : "http://innodev.vnetcloud.com/nobucall-api-v2/",
"MICROSERVICEURL" : "http://crm.nobubank.com/nobucall-api-log/api/v1/", "MICROSERVICEURL" : "http://innodev.vnetcloud.com/nobucall-history-log/api/v1/",
"SITE_NAME" : "Visionet Helpdesk System", "SITE_NAME" : "Visionet Helpdesk System",
"SITE_LOGO" : "https://i0.wp.com/jogorogo.info/wp-content/uploads/2017/07/logo_visionet.png?fit=879%2C227", "SITE_LOGO" : "https://i0.wp.com/jogorogo.info/wp-content/uploads/2017/07/logo_visionet.png?fit=879%2C227",
"COMPANY_NAME" : "PT. Visionet Data Internasional", "COMPANY_NAME" : "PT. Visionet Data Internasional",
......
...@@ -9,42 +9,22 @@ import { Http, ResponseContentType, RequestOptions } from '@angular/http'; ...@@ -9,42 +9,22 @@ import { Http, ResponseContentType, RequestOptions } from '@angular/http';
import { environment } from '../../environments/environment'; import { environment } from '../../environments/environment';
//const API_URL = environment.apiUrl; //const API_URL = environment.apiUrl;
var API_URL = environment.APIBASEURL; var API_URL;
var API_MICROSERVICE = environment.MICROSERVICEURL; var API_MICROSERVICE;
var ckConfig = environment.ckeConfig; var ckConfig;
var SITE_NAME = environment.SITE_NAME; var SITE_NAME;
var SITE_LOGO = environment.SITE_LOGO; var SITE_LOGO;
var COMPANY_NAME = environment.COMPANY_NAME var COMPANY_NAME;
var PARAM_AGENTROLEID = environment.PARAM_AGENTROLEID var PARAM_AGENTROLEID;
var PARAM_AGENTSPVROLEID = environment.PARAM_AGENTSPVROLEID var PARAM_AGENTSPVROLEID ;
var PARAM_SPV = environment.PARAM_SPV var PARAM_SPV;
var PARAM_AGENT = environment.PARAM_AGENT var PARAM_AGENT;
var PARAM_SERVICEDESK = environment.PARAM_SERVICEDESK var PARAM_SERVICEDESK;
var PARAM_SUPPORT = environment.PARAM_SUPPORT var PARAM_SUPPORT;
var ZENDESK_API_URL = environment.ZENDESK_API_URL var ZENDESK_API_URL;
var ZENDESK_API_USER = environment.ZENDESK_API_USER var ZENDESK_API_USER;
var ZENDESK_API_PASS = environment.ZENDESK_API_PASS var ZENDESK_API_PASS;
var CATEGORY = environment.category.servicesubcategory_id var CATEGORY;
console.log(environment)
// fetch('./assets/configAPI.json').then(res => res.json())
// .then(res => {
// API_URL = res.APIBASEURL;
// API_MICROSERVICE = res.MICROSERVICEURL;
// ckConfig = res.ckeConfig;
// SITE_NAME = res.SITE_NAME;
// SITE_LOGO = res.SITE_LOGO;
// COMPANY_NAME = res.COMPANY_NAME
// PARAM_AGENTROLEID = res.PARAM_AGENTROLEID
// PARAM_AGENTSPVROLEID = res.PARAM_AGENTSPVROLEID
// PARAM_SPV = res.PARAM_SPV
// PARAM_AGENT = res.PARAM_AGENT
// PARAM_SERVICEDESK = res.PARAM_SERVICEDESK
// PARAM_SUPPORT = res.PARAM_SUPPORT
// ZENDESK_API_URL = res.ZENDESK_API_URL
// ZENDESK_API_USER = res.ZENDESK_API_USER
// ZENDESK_API_PASS = res.ZENDESK_API_PASS
// CATEGORY = res.category.servicesubcategory_id
// })
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
...@@ -1128,6 +1108,38 @@ export class DashboardService { ...@@ -1128,6 +1108,38 @@ export class DashboardService {
} }
@Injectable({
providedIn: 'root'
})
export class ConfigService {
config;
constructor(private http: HttpClient) {}
loadEnvConfig() {
this.config = this.http
.get('./assets/configAPI.json')
.subscribe((config: any) => {
API_URL = config.APIBASEURL;
API_MICROSERVICE = config.MICROSERVICEURL;
ckConfig = config.ckeConfig;
SITE_NAME = config.SITE_NAME;
SITE_LOGO = config.SITE_LOGO;
COMPANY_NAME = config.COMPANY_NAME;
PARAM_AGENTROLEID = config.PARAM_AGENTROLEID;
PARAM_AGENTSPVROLEID = config.PARAM_AGENTSPVROLEID;
PARAM_SPV = config.PARAM_SPV;
PARAM_AGENT = config.PARAM_AGENT;
PARAM_SERVICEDESK = config.PARAM_SERVICEDESK;
PARAM_SUPPORT = config.PARAM_SUPPORT;
ZENDESK_API_URL = config.ZENDESK_API_URL;
ZENDESK_API_USER = config.ZENDESK_API_USER;
ZENDESK_API_PASS = config.ZENDESK_API_PASS;
CATEGORY = config.category.servicesubcategory_id;
})
}
}
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment