Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
N
nobu-web-v2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ari_darmawan
nobu-web-v2
Commits
9bcda59b
Commit
9bcda59b
authored
Dec 09, 2022
by
ari_darmawan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update crud user agent and join tabs dashboard
parent
ee87d964
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
240 additions
and
33 deletions
+240
-33
logbooks-report.component.html
...d-logbooks/logbooks-report/logbooks-report.component.html
+96
-0
logbooks-report.component.ts
...ard-logbooks/logbooks-report/logbooks-report.component.ts
+33
-1
logbooks.component.html
...admin-dashboard-logbooks/logbooks/logbooks.component.html
+2
-0
logbooks.component.ts
...n/admin-dashboard-logbooks/logbooks/logbooks.component.ts
+13
-4
admin-ticket-create.component.html
...et/admin-ticket-create/admin-ticket-create.component.html
+3
-3
admin-ticket-create.component.ts
...cket/admin-ticket-create/admin-ticket-create.component.ts
+14
-10
admin-ticket-detail.component.html
...et/admin-ticket-detail/admin-ticket-detail.component.html
+2
-2
admin-ticket-detail.component.ts
...cket/admin-ticket-detail/admin-ticket-detail.component.ts
+20
-2
admin-user-agent.component.html
...pp/admin/admin-user-agent/admin-user-agent.component.html
+6
-6
admin-user-agent.component.ts
src/app/admin/admin-user-agent/admin-user-agent.component.ts
+36
-2
create-agent.component.ts
...n/admin-user-agent/create-agent/create-agent.component.ts
+4
-2
environment.ts
src/environments/environment.ts
+1
-1
service-proxy.service.ts
src/shared/serviceproxy/service-proxy.service.ts
+10
-0
No files found.
src/app/admin/admin-dashboard-logbooks/logbooks-report/logbooks-report.component.html
View file @
9bcda59b
...
@@ -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>
...
...
src/app/admin/admin-dashboard-logbooks/logbooks-report/logbooks-report.component.ts
View file @
9bcda59b
...
@@ -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
()
}
}
...
...
src/app/admin/admin-dashboard-logbooks/logbooks/logbooks.component.html
View file @
9bcda59b
...
@@ -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
src/app/admin/admin-dashboard-logbooks/logbooks/logbooks.component.ts
View file @
9bcda59b
...
@@ -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,6 +255,8 @@ export class LogbooksComponent implements OnInit, OnChanges {
...
@@ -255,6 +255,8 @@ export class LogbooksComponent implements OnInit, OnChanges {
}
}
for
(
var
i
=
0
;
i
<
logbooksData
.
length
;
i
++
){
for
(
var
i
=
0
;
i
<
logbooksData
.
length
;
i
++
){
if
(
this
.
TeamID
==
this
.
Env
.
Team
.
AgentCallCenter
)
{
if
(
logbooksData
[
i
].
name
==
"Pengaduan Dashboard SD"
||
logbooksData
[
i
].
name
==
"Permintaan Dashboard SD"
)
{
this
.
listChildTabs
.
push
({
this
.
listChildTabs
.
push
({
id
:
logbooksData
[
i
].
id
,
id
:
logbooksData
[
i
].
id
,
name
:
logbooksData
[
i
].
name
,
name
:
logbooksData
[
i
].
name
,
...
@@ -262,6 +264,15 @@ export class LogbooksComponent implements OnInit, OnChanges {
...
@@ -262,6 +264,15 @@ export class LogbooksComponent implements OnInit, OnChanges {
tabs
:
'logbooks'
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
;
// if (this.listChildTabs[0].servicefamily_id) {
// if (this.listChildTabs[0].servicefamily_id) {
...
@@ -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
){
...
...
src/app/admin/admin-ticket/admin-ticket-create/admin-ticket-create.component.html
View file @
9bcda59b
...
@@ -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>
...
...
src/app/admin/admin-ticket/admin-ticket-create/admin-ticket-create.component.ts
View file @
9bcda59b
...
@@ -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
){
...
@@ -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
),
...
...
src/app/admin/admin-ticket/admin-ticket-detail/admin-ticket-detail.component.html
View file @
9bcda59b
...
@@ -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>
...
...
src/app/admin/admin-ticket/admin-ticket-detail/admin-ticket-detail.component.ts
View file @
9bcda59b
...
@@ -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
()
...
...
src/app/admin/admin-user-agent/admin-user-agent.component.html
View file @
9bcda59b
...
@@ -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>
<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=
"10
0"
>
<input
type=
"text"
class=
"form-control form-control-sm"
[(
ngModel
)]="
code
"
placeholder=
"Input Code"
maxlength=
"3
0"
>
</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=
"10
0"
>
<input
type=
"text"
class=
"form-control form-control-sm"
[(
ngModel
)]="
name
"
placeholder=
"Input Name"
maxlength=
"3
0"
>
</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>
...
...
src/app/admin/admin-user-agent/admin-user-agent.component.ts
View file @
9bcda59b
...
@@ -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
()
})
}
})
}
}
}
src/app/admin/admin-user-agent/create-agent/create-agent.component.ts
View file @
9bcda59b
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
()
})
})
...
...
src/environments/environment.ts
View file @
9bcda59b
...
@@ -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"
,
...
...
src/shared/serviceproxy/service-proxy.service.ts
View file @
9bcda59b
...
@@ -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
({
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment