Commit 9bcda59b authored by ari_darmawan's avatar ari_darmawan

update crud user agent and join tabs dashboard

parent ee87d964
...@@ -438,6 +438,102 @@ ...@@ -438,6 +438,102 @@
</table> </table>
</div> </div>
<!-- Agent -->
<div class="table-responsive mt-4" *ngIf="(TeamID == Env.Team.AgentCallCenter)">
<table class="table table-bordered table-striped table-sm">
<thead>
<ng-container *ngIf="serviceFamilyName == 'Pengaduan Dashboard SD'">
<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>
</ng-container>
<ng-container *ngIf="serviceFamilyName == 'Permintaan Dashboard SD'">
<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>
</ng-container>
</thead>
<!-- [ngStyle]="{'background-color': (i%2 == 0)? '#ccc' : '#fff'}" -->
<tbody>
<ng-container *ngIf="serviceFamilyName == 'Pengaduan Dashboard SD'">
<ng-container *ngFor="let data of listLogbooks.data; let i = index">
<tr>
<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>
<ng-container *ngIf="serviceFamilyName == 'Permintaan Dashboard SD'">
<ng-container *ngFor="let data of listLogbooks.data; let i = index">
<tr>
<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>
</tbody>
</table>
</div>
</div> </div>
</div> </div>
......
...@@ -21,6 +21,7 @@ export class LogbooksReportComponent implements OnInit, OnChanges { ...@@ -21,6 +21,7 @@ export class LogbooksReportComponent implements OnInit, OnChanges {
@Input() endDate!: string; @Input() endDate!: string;
@Input() paramsRequest; @Input() paramsRequest;
@Input() isDisabledButtonSearch; @Input() isDisabledButtonSearch;
@Input() triggerTabs;
@Output() public onChild = new EventEmitter(); @Output() public onChild = new EventEmitter();
public TeamID = this._SP.getUserInformation.values.team_id public TeamID = this._SP.getUserInformation.values.team_id
...@@ -112,8 +113,36 @@ export class LogbooksReportComponent implements OnInit, OnChanges { ...@@ -112,8 +113,36 @@ export class LogbooksReportComponent implements OnInit, OnChanges {
{"name": 'resolve_date', "value": false, "field": "Tanggal & Waktu Resolved"}, {"name": 'resolve_date', "value": false, "field": "Tanggal & Waktu Resolved"},
{"name": 'cscabang', "value": false, "field": "Nama Staff"}, {"name": 'cscabang', "value": false, "field": "Nama Staff"},
] ]
} else if (this.TeamID == this.Env.Team.AgentCallCenter) {
this.fieldExport = [
{"name": 'ref', "value": false, "field": "No Ticket CRM"},
{"name": 'createdby_name', "value": false, "field": "Nama User"},
{"name": 'agent_name', "value": false, "field": "Assigned Agent"},
{"name": 'unit_pengaduan', "value": false, "field": "Unit Pengaduan (Cabang/ Call Center/ Sociomile Staff)"},
{"name": 'start_date', "value": false, "field": 'Tanggal ' + ((this.listRequest.servicefamily_id[0] == 2) ? 'Pengaduan' : 'Permintaan')},
{"name": 'caller_name', "value": false, "field": "Nama Nasabah"},
{"name": 'caller_mobile_phone', "value": false, "field": "No Telepon"},
{"name": 'no_rekening', "value": false, "field": "No Rekening"},
{"name": 'no_kartu_atm', "value": false, "field": "No Kartu ATM"},
{"name": 'penyebab_pengaduan', "value": false, "field": "Penyebab Pengaduan"},
{"name": 'ticket_servicefamiliy_name', "value": false, "field": "Topik"},
{"name": 'ticket_service_name', "value": false, "field": "Sub Topik"},
{"name": 'ticket_servicesubcategory_name', "value": false, "field": "Kategori"},
{"name": 'deskripsi', "value": false, "field": 'Deskripsi ' + ((this.listRequest.servicefamily_id[0] == 2) ? 'Pengaduan' : 'Permintaan')},
{"name": 'tanggal_transaksi', "value": false, "field": "Tanggal Transaksi"},
{"name": 'e_channel', "value": false, "field": "E-channel/Non-E-channel"},
{"name": 'kategori', "value": false, "field": 'Kategori ' + ((this.listRequest.servicefamily_id[0] == 2) ? 'Pengaduan' : 'Permintaan')},
{"name": 'tidak_lanjut', "value": false, "field": 'Tindak Lanjut ' + ((this.listRequest.servicefamily_id[0] == 2) ? 'Pengaduan' : 'Permintaan')},
{"name": 'team_name', "value": false, "field": "Unit Terkait (Divisi)"},
{"name": 'pic', "value": false, "field": "PIC"},
{"name": 'ticket_solution', "value": false, "field": "Tindak lanjut oleh Unit Terkait"},
{"name": 'ticket_status', "value": false, "field": 'Status ' + ((this.listRequest.servicefamily_id[0] == 2) ? 'Pengaduan' : 'Permintaan')},
{"name": 'resolve_date', "value": false, "field": "Tanggal Resolved"},
{"name": 'sla_internal', "value": false, "field": "SLA Internal"},
{"name": 'sla_hari_kerja', "value": false, "field": "Hari SLA"}
]
} else if (this.listRequest.servicefamily_id[0] == 2 || this.listRequest.servicefamily_id[0] == 4 } else if (this.listRequest.servicefamily_id[0] == 2 || this.listRequest.servicefamily_id[0] == 4
|| this._SP.getUserInformation.values.team_id == this.Env.Team.ServiceReport) { || this.TeamID == this.Env.Team.ServiceReport) {
this.fieldExport = [ this.fieldExport = [
{"name": 'ref', "value": false, "field": "No Ticket CRM"}, {"name": 'ref', "value": false, "field": "No Ticket CRM"},
{"name": 'createdby_name', "value": false, "field": "Nama User"}, {"name": 'createdby_name', "value": false, "field": "Nama User"},
...@@ -184,6 +213,9 @@ export class LogbooksReportComponent implements OnInit, OnChanges { ...@@ -184,6 +213,9 @@ export class LogbooksReportComponent implements OnInit, OnChanges {
} }
this.listRequest.page = 1; this.listRequest.page = 1;
this.listRequest.perpage = 10; this.listRequest.perpage = 10;
if (changes.triggerTabs) {
this.isEmptyLogbooks = true;
}
if (this.isDisabledButtonSearch) this.GettingTicketReportDataAPI() if (this.isDisabledButtonSearch) this.GettingTicketReportDataAPI()
} }
......
...@@ -126,6 +126,7 @@ ...@@ -126,6 +126,7 @@
[isDisabledButtonSearch]="isDisabledButtonSearch" [isDisabledButtonSearch]="isDisabledButtonSearch"
[startDate]="startDate" [startDate]="startDate"
[endDate]="endDate" [endDate]="endDate"
[triggerTabs]="triggerTabs"
(onChild)="onRefresh($event)"> (onChild)="onRefresh($event)">
</app-logbooks-report> </app-logbooks-report>
</ng-container> </ng-container>
\ No newline at end of file
...@@ -43,7 +43,7 @@ export class LogbooksComponent implements OnInit, OnChanges { ...@@ -43,7 +43,7 @@ export class LogbooksComponent implements OnInit, OnChanges {
isEmptyReport: boolean = true; isEmptyReport: boolean = true;
isDisabledButtonSearch: boolean = true; isDisabledButtonSearch: boolean = true;
tabsName: string = 'report'; tabsName: string = 'report';
triggerTabs: string = "";
listReport: any = {}; listReport: any = {};
fieldExportReport: any[] = [ fieldExportReport: any[] = [
...@@ -130,6 +130,7 @@ export class LogbooksComponent implements OnInit, OnChanges { ...@@ -130,6 +130,7 @@ export class LogbooksComponent implements OnInit, OnChanges {
this.TicketReportRequest.servicefamily_name = this.listChildTabs[i].servicefamily_name; this.TicketReportRequest.servicefamily_name = this.listChildTabs[i].servicefamily_name;
this.isEmptyReport = true; this.isEmptyReport = true;
this.tabsName = this.listChildTabs[i].tabs; this.tabsName = this.listChildTabs[i].tabs;
this.triggerTabs = this.listChildTabs[i].name
if (this.tabsName == 'logbooks') { if (this.tabsName == 'logbooks') {
this.TicketReportRequest.servicefamily_id = this.listChildTabs[i].id; this.TicketReportRequest.servicefamily_id = this.listChildTabs[i].id;
this.TicketReportRequest.servicefamily_name = this.listChildTabs[i].name; this.TicketReportRequest.servicefamily_name = this.listChildTabs[i].name;
...@@ -218,7 +219,6 @@ export class LogbooksComponent implements OnInit, OnChanges { ...@@ -218,7 +219,6 @@ export class LogbooksComponent implements OnInit, OnChanges {
promiseLogbooks promiseLogbooks
]) ])
.then((result: any) => { .then((result: any) => {
console.log(result)
let reportData = []; let reportData = [];
let logbooksData = []; let logbooksData = [];
...@@ -255,12 +255,23 @@ export class LogbooksComponent implements OnInit, OnChanges { ...@@ -255,12 +255,23 @@ export class LogbooksComponent implements OnInit, OnChanges {
} }
for(var i = 0 ; i < logbooksData.length; i++){ for(var i = 0 ; i < logbooksData.length; i++){
this.listChildTabs.push({ if (this.TeamID == this.Env.Team.AgentCallCenter) {
id : logbooksData[i].id, if (logbooksData[i].name == "Pengaduan Dashboard SD" || logbooksData[i].name == "Permintaan Dashboard SD") {
name : logbooksData[i].name, this.listChildTabs.push({
selected : false, id : logbooksData[i].id,
tabs: 'logbooks' name : logbooksData[i].name,
}) selected : false,
tabs: 'logbooks'
})
}
} else {
this.listChildTabs.push({
id : logbooksData[i].id,
name : logbooksData[i].name,
selected : false,
tabs: 'logbooks'
})
}
} }
this.listChildTabs[0].selected = true; this.listChildTabs[0].selected = true;
...@@ -280,7 +291,6 @@ export class LogbooksComponent implements OnInit, OnChanges { ...@@ -280,7 +291,6 @@ export class LogbooksComponent implements OnInit, OnChanges {
} }
GettingTicketReportDataAPI() { GettingTicketReportDataAPI() {
console.log(this.tabsName)
if (this.tabsName == "logbooks") { if (this.tabsName == "logbooks") {
this.isDisabledButtonSearch = true; this.isDisabledButtonSearch = true;
return false; return false;
...@@ -290,7 +300,6 @@ export class LogbooksComponent implements OnInit, OnChanges { ...@@ -290,7 +300,6 @@ export class LogbooksComponent implements OnInit, OnChanges {
this.isDisabledButtonSearch = true; this.isDisabledButtonSearch = true;
this._DashboardService.ReportTicket(this.TicketReportRequest) this._DashboardService.ReportTicket(this.TicketReportRequest)
.subscribe((result: any) => { .subscribe((result: any) => {
console.log(result)
this.isDisabledButtonSearch = false; this.isDisabledButtonSearch = false;
if(result.values.data.length != 0){ if(result.values.data.length != 0){
......
...@@ -32,14 +32,14 @@ ...@@ -32,14 +32,14 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="text-muted">Ext Agent <span class="text-danger">*</span></label> <label class="text-muted">Ext Agent <span class="text-danger">*</span></label>
<input type="text" placeholder="Input Ext Agent ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="extAgent"> <input type="text" placeholder="Input Ext Agent ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="extAgent" maxlength="30">
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="text-muted">Date Time Call <span class="text-danger">*</span></label> <label class="text-muted">Date Time Call <span class="text-danger">*</span></label>
<div class="input-group date" id="DateTimeCall" data-target-input="nearest"> <div class="input-group date" id="DateTimeCall" data-target-input="nearest">
<input type="text" <input type="text"
class="form-control form-control-sm datetimepicker-input" data-toggle="datetimepicker" class="form-control form-control-sm datetimepicker-input" data-toggle="datetimepicker"
data-target="#DateTimeCall" /> data-target="#DateTimeCall" (blur)="onChangeCallTImeAgent()"/>
<div class="input-group-append" data-target="#DateTimeCall" data-toggle="datetimepicker"> <div class="input-group-append" data-target="#DateTimeCall" data-toggle="datetimepicker">
<div class="input-group-text"><i class="far fa-calendar-alt"></i></div> <div class="input-group-text"><i class="far fa-calendar-alt"></i></div>
</div> </div>
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
</div> </div>
<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"> <input type="text" placeholder="Input Channel ..." #inputRequired class="form-control form-control-sm" [(ngModel)]="channel" maxlength="30">
</div> </div>
<hr> <hr>
<p> <p>
......
...@@ -147,10 +147,8 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -147,10 +147,8 @@ export class AdminTicketCreateComponent implements OnInit {
} }
}); });
} }
ngOnInit() { ngOnInit() {
if(this.RoleID != this._SP.PARAM_AGENT){ if(this.RoleID != this._SP.PARAM_AGENT){
...@@ -158,7 +156,7 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -158,7 +156,7 @@ export class AdminTicketCreateComponent implements OnInit {
} }
var NowDate = new Date(); var NowDate = new Date();
AratakaConfig.BootstrapDateCustomPicker({ AratakaConfig.BootstrapDateCustomPicker({
ID : '#DateTransaction', ID : '#DateTransaction',
DateValue : NowDate, DateValue : NowDate,
...@@ -229,6 +227,19 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -229,6 +227,19 @@ export class AdminTicketCreateComponent implements OnInit {
} }
} }
onChangeCallTImeAgent() {
if (AratakaConfig.GetDateBDTP({ ID: '#DateTimeCall', isGet: true, isGetFormat: 'YYYYMMDD' }) != moment(new Date()).format('YYYYMMDD')) {
AratakaConfig.Alert.showAlert('Please Select Date Now','alert-danger',2000)
AratakaConfig.BootstrapDateCustomPicker({
ID : '#DateTimeCall',
DateValue : new Date(),
Format : 'DD MMMM YYYY HH:mm:ss',
isGet : false
})
return false;
}
}
SelectCustomerMDClick(_Data) { SelectCustomerMDClick(_Data) {
this.CallViewChildCustomerMd.ngOnInitAfter(this.CustomerMdData,this.UrlPhoneNumberParam); this.CallViewChildCustomerMd.ngOnInitAfter(this.CustomerMdData,this.UrlPhoneNumberParam);
...@@ -269,12 +280,6 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -269,12 +280,6 @@ export class AdminTicketCreateComponent implements OnInit {
SubmitClick(){ SubmitClick(){
var valid = true; var valid = true;
if (AratakaConfig.GetDateBDTP({ ID: '#DateTimeCall', isGet: true, isGetFormat: 'YYYYMMDD' }) != moment(new Date()).format('YYYYMMDD')) {
AratakaConfig.Alert.showAlert('Please Select Date Now','alert-danger',2000)
return false;
}
this.inputRequired.forEach(element => { this.inputRequired.forEach(element => {
//console.log(element.nativeElement.value) //console.log(element.nativeElement.value)
if(element.nativeElement.value == ""){ if(element.nativeElement.value == ""){
...@@ -283,7 +288,6 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -283,7 +288,6 @@ export class AdminTicketCreateComponent implements OnInit {
} }
}); });
var Request = { var Request = {
caller_id : this.CustomerMdData.ID, caller_id : this.CustomerMdData.ID,
service_id : this.SubTopic_ID, service_id : this.SubTopic_ID,
...@@ -794,7 +798,7 @@ export class AdminTicketCreateComponent implements OnInit { ...@@ -794,7 +798,7 @@ export class AdminTicketCreateComponent implements OnInit {
console.log(created) console.log(created)
const params = { const params = {
"agent_custom": this.extAgent, "agent_custom": this.extAgent,
"agent_extension_id": this.idAgent, "agent_extension_id": Number(this.idAgent),
"call_time": AratakaConfig.GetDateBDTP({ ID: '#DateTimeCall', isGet: true, isGetFormat: 'YYYY-MM-DD HH:mm:ss' }), "call_time": AratakaConfig.GetDateBDTP({ ID: '#DateTimeCall', isGet: true, isGetFormat: 'YYYY-MM-DD HH:mm:ss' }),
"channel": this.channel, "channel": this.channel,
"ticket_id": Number(created.key), "ticket_id": Number(created.key),
......
...@@ -27,14 +27,14 @@ ...@@ -27,14 +27,14 @@
<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">
<hr>
<p> <p>
<b>Agent</b> <b>Agent</b>
</p> </p>
<div class="form-group"> <div class="form-group">
<label class="text-muted">Nama Agent <span class="text-danger">*</span></label> <label class="text-muted">Nama Agent <span class="text-danger">*</span></label>
<select type="text" <select type="text"
class="form-control form-control-sm select-style" [(ngModel)]="idAgent" #inputRequired disabled> class="form-control form-control-sm select-style" [(ngModel)]="idAgent" #inputRequired
disabled>
<ng-container *ngFor="let agent of listAgent; let i = index"> <ng-container *ngFor="let agent of listAgent; let i = index">
<option value="{{agent.id}}">{{agent.code}} - {{agent.name}}</option> <option value="{{agent.id}}">{{agent.code}} - {{agent.name}}</option>
</ng-container> </ng-container>
......
...@@ -128,6 +128,7 @@ export class AdminTicketDetailComponent implements OnInit { ...@@ -128,6 +128,7 @@ export class AdminTicketDetailComponent implements OnInit {
public idAgent: string = ""; public idAgent: string = "";
public extAgent: string = ""; public extAgent: string = "";
public channel: string = ""; public channel: string = "";
detailAgentExt: any = {};
listAgent: any[] = []; listAgent: any[] = [];
public PublicReplyEditor : string = "" public PublicReplyEditor : string = ""
...@@ -809,6 +810,7 @@ export class AdminTicketDetailComponent implements OnInit { ...@@ -809,6 +810,7 @@ export class AdminTicketDetailComponent implements OnInit {
this.idAgent = response.items[0].agent_extension.id; this.idAgent = response.items[0].agent_extension.id;
this.channel = response.items[0].channel; this.channel = response.items[0].channel;
this.extAgent = response.items[0].agent_custom; this.extAgent = response.items[0].agent_custom;
this.detailAgentExt = response.items[0];
AratakaConfig.BootstrapDateCustomPicker({ AratakaConfig.BootstrapDateCustomPicker({
ID : '#DateTimeCall', ID : '#DateTimeCall',
DateValue : response.items[0].call_time, DateValue : response.items[0].call_time,
...@@ -2130,11 +2132,27 @@ export class AdminTicketDetailComponent implements OnInit { ...@@ -2130,11 +2132,27 @@ export class AdminTicketDetailComponent implements OnInit {
AratakaConfig.Alert.showAlert('Ticket assigned to agent successfully','alert-success',2000) AratakaConfig.Alert.showAlert('Ticket assigned to agent successfully','alert-success',2000)
this.ClearModel(); this.ClearModel();
// const params = {
// "agent_custom": this.extAgent,
// "agent_extension_id": Number(this.idAgent),
// "call_time": this.detailAgentExt.call_time,
// "channel": this.channel,
// "id": this.detailAgentExt.id,
// "ticket_id": this.paramTicketID,
// "ticket_type": this.itemDetailTicket.ticket_type
// }
// this.API.put('ticket_extension', params, this.detailAgentExt.id)
// .subscribe((response: any) => {
// AratakaConfig.Alert.showAlert('Ticket assigned to agent successfully','alert-success',2000)
// AratakaConfig.LoadingPage.hideLoading()
// }, (err: HttpErrorResponse) => {
// AratakaConfig.Alert.showAlert('Ticket assigned to agent successfully','alert-success',2000)
// AratakaConfig.LoadingPage.hideLoading()
// })
this.GettingTicketDetailAPI({ this.GettingTicketDetailAPI({
ID : this.paramTicketID ID : this.paramTicketID
}) })
AratakaConfig.LoadingPage.hideLoading()
this.ConversationViewByRole() this.ConversationViewByRole()
this.ConversationReplyNoteViewByRole() this.ConversationReplyNoteViewByRole()
......
...@@ -44,11 +44,11 @@ ...@@ -44,11 +44,11 @@
<td>{{data.created_user}}</td> <td>{{data.created_user}}</td>
<td class="text-center"> <td class="text-center">
<a class="btn btn-primary btn-sm mb-2" style="color: wheat;" <a class="btn btn-primary btn-sm mb-2" style="color: wheat;"
data-toggle="modal" data-target="#edit-agent" (click)="formEditAgent = data"> data-toggle="modal" data-target="#edit-agent" (click)="editAgent(data)">
<i class="fa fa-edit"></i> Edit <i class="fa fa-edit"></i> Edit
</a> </a>
&nbsp; &nbsp;
<a class="btn btn-danger btn-sm mb-2" style="color: wheat;"> <a class="btn btn-danger btn-sm mb-2" style="color: wheat;" (click)="DeletetAgent(data)">
<i class="fa fa-trash"></i> Delete <i class="fa fa-trash"></i> Delete
</a> </a>
</td> </td>
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
<div class="modal fade" id="create-agent" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal fade" id="create-agent" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<app-create-agent></app-create-agent> <app-create-agent (onChild)="onRefresh($event)"></app-create-agent>
</div> </div>
</div> </div>
</div> </div>
...@@ -102,16 +102,16 @@ ...@@ -102,16 +102,16 @@
<div class="modal-body"> <div class="modal-body">
<div class="form-group"> <div class="form-group">
<label class="text-muted">Code <span class="text-danger">*</span></label> <label class="text-muted">Code <span class="text-danger">*</span></label>
<input type="text" class="form-control form-control-sm" [(ngModel)]="formEditAgent.code" placeholder="Input Kode" maxlength="100"> <input type="text" class="form-control form-control-sm" [(ngModel)]="code" placeholder="Input Code" maxlength="30">
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="text-muted">Name <span class="text-danger">*</span></label> <label class="text-muted">Name <span class="text-danger">*</span></label>
<input type="text" class="form-control form-control-sm" [(ngModel)]="formEditAgent.name" placeholder="Input Name" maxlength="100"> <input type="text" class="form-control form-control-sm" [(ngModel)]="name" placeholder="Input Name" maxlength="30">
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" style="width: 150px;" data-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" style="width: 150px;" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" style="width: 150px;" [disabled]="formEditAgent.id < 1" (click)="EditAgent(formEditAgent.id)">Edit</button> <button type="button" class="btn btn-primary" style="width: 150px;" (click)="EditAgent(formEditAgent.id)">Edit</button>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -4,6 +4,7 @@ import { ServiceProxyWeb, MicroService } from '../../../shared/serviceproxy/serv ...@@ -4,6 +4,7 @@ import { ServiceProxyWeb, MicroService } from '../../../shared/serviceproxy/serv
import { DomSanitizer } from '@angular/platform-browser'; import { DomSanitizer } from '@angular/platform-browser';
import { FormBuilder, Validators } from '@angular/forms'; import { FormBuilder, Validators } from '@angular/forms';
import * as moment from 'moment'; import * as moment from 'moment';
import { Data } from '@angular/router';
declare const AratakaConfig : any; declare const AratakaConfig : any;
@Component({ @Component({
...@@ -47,6 +48,16 @@ export class AdminUserAgentComponent implements OnInit { ...@@ -47,6 +48,16 @@ export class AdminUserAgentComponent implements OnInit {
this.requestAgent(); this.requestAgent();
} }
onRefresh(ev: Event) {
if (ev) this.requestAgent()
}
editAgent(item: Data) {
this.id = item.id;
this.name = item.name;
this.code = item.code;
}
PagingArrowLeft(){ PagingArrowLeft(){
if(this.listRequest.filter_page != 1){ if(this.listRequest.filter_page != 1){
this.listRequest.filter_page = this.listRequest.filter_page -= 1 this.listRequest.filter_page = this.listRequest.filter_page -= 1
...@@ -86,9 +97,13 @@ export class AdminUserAgentComponent implements OnInit { ...@@ -86,9 +97,13 @@ export class AdminUserAgentComponent implements OnInit {
} }
EditAgent(id: number) { EditAgent(id: number) {
console.log(this.formEditAgent) const req = {
id: this.id,
code: this.code,
name: this.name
}
AratakaConfig.LoadingPage.showLoading('Edit Agent ...') AratakaConfig.LoadingPage.showLoading('Edit Agent ...')
this.API.put(`agent_extension/${id}`, this.formEditAgent, id) this.API.put(`agent_extension/${id}`, req, id)
.subscribe((response: any) => { .subscribe((response: any) => {
this.requestAgent() this.requestAgent()
AratakaConfig.BootstrapModal({ID:'#edit-agent', Open: false, Static: true }); AratakaConfig.BootstrapModal({ID:'#edit-agent', Open: false, Static: true });
...@@ -100,4 +115,23 @@ export class AdminUserAgentComponent implements OnInit { ...@@ -100,4 +115,23 @@ export class AdminUserAgentComponent implements OnInit {
}) })
} }
DeletetAgent(item: Data) {
let $this = this;
AratakaConfig.CallDialog.showModal(`Delete Agent ${item.name}`,{ isConfirm :
function(){
AratakaConfig.LoadingPage.showLoading('Delete Agent ...')
$this.API.delete(`agent_extension/${item.id}`)
.subscribe((response: any) => {
$this.requestAgent()
AratakaConfig.BootstrapModal({ID:'#edit-agent', Open: false, Static: true });
AratakaConfig.Alert.showAlert('Delete Agent Success','alert-success',2000)
AratakaConfig.LoadingPage.hideLoading();
}, (err: HttpErrorResponse) => {
AratakaConfig.Alert.showAlert(err.error.message,'alert-danger',2000)
AratakaConfig.LoadingPage.hideLoading()
})
}
})
}
} }
import { HttpErrorResponse } from '@angular/common/http'; import { HttpErrorResponse } from '@angular/common/http';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { ServiceProxyWeb, MicroService } from '../../../../shared/serviceproxy/service-proxy.service'; import { ServiceProxyWeb, MicroService } from '../../../../shared/serviceproxy/service-proxy.service';
import { DomSanitizer } from '@angular/platform-browser'; import { DomSanitizer } from '@angular/platform-browser';
import { FormBuilder, Validators } from '@angular/forms'; import { FormBuilder, Validators } from '@angular/forms';
...@@ -12,7 +12,7 @@ declare const AratakaConfig : any; ...@@ -12,7 +12,7 @@ declare const AratakaConfig : any;
styleUrls: ['./create-agent.component.css'] styleUrls: ['./create-agent.component.css']
}) })
export class CreateAgentComponent implements OnInit { export class CreateAgentComponent implements OnInit {
@Output() public onChild = new EventEmitter();
formAgent = this.form.group({ formAgent = this.form.group({
code: ['', Validators.required], code: ['', Validators.required],
name: ['', Validators.required], name: ['', Validators.required],
...@@ -36,10 +36,12 @@ export class CreateAgentComponent implements OnInit { ...@@ -36,10 +36,12 @@ export class CreateAgentComponent implements OnInit {
code: "", code: "",
name: "", name: "",
}) })
this.onChild.next(true);
AratakaConfig.BootstrapModal({ID:'#create-agent', Open: false, Static: true }); AratakaConfig.BootstrapModal({ID:'#create-agent', Open: false, Static: true });
AratakaConfig.Alert.showAlert('Create Agent Success','alert-success',2000) AratakaConfig.Alert.showAlert('Create Agent Success','alert-success',2000)
AratakaConfig.LoadingPage.hideLoading(); AratakaConfig.LoadingPage.hideLoading();
}, (err: HttpErrorResponse) => { }, (err: HttpErrorResponse) => {
this.onChild.next(false);
AratakaConfig.Alert.showAlert(err.error.message,'alert-danger',2000) AratakaConfig.Alert.showAlert(err.error.message,'alert-danger',2000)
AratakaConfig.LoadingPage.hideLoading() AratakaConfig.LoadingPage.hideLoading()
}) })
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
export const environment = { export const environment = {
production: false, production: false,
"APIBASEURL" : "http://localhost:9825/", "APIBASEURL" : "http://innodev.vnetcloud.com/nobucall-api-v2/",
"MICROSERVICEURL" : "http://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",
......
...@@ -73,6 +73,16 @@ export class MicroService { ...@@ -73,6 +73,16 @@ export class MicroService {
return this.http.put(`${API_MICROSERVICE}${url}`, request, options); return this.http.put(`${API_MICROSERVICE}${url}`, request, options);
} }
delete(url: string) {
var service = this.injector.get(ServiceProxyWeb)
var headers = new HttpHeaders({
'Content-Type': 'application/json',
'Authorization' : 'Bearer '+ service.getUserInformation.values.access_token
});
var options = { headers: headers };
return this.http.delete(`${API_MICROSERVICE}${url}`, options);
}
exportFile(url: string, request: object) { exportFile(url: string, request: object) {
var service = this.injector.get(ServiceProxyWeb) var service = this.injector.get(ServiceProxyWeb)
var headers = new HttpHeaders({ var headers = new HttpHeaders({
......
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