@chat21/chat21-ionic 3.0.61-rc8 → 3.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +6 -0
  3. package/angular.json +2 -0
  4. package/config.xml +0 -1
  5. package/deploy_pre.sh +1 -1
  6. package/deploy_prod.sh +1 -1
  7. package/env.sample +1 -1
  8. package/package.json +4 -4
  9. package/src/app/app-routing.module.ts +15 -0
  10. package/src/app/app.component.ts +12 -9
  11. package/src/app/app.module.ts +11 -3
  12. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +36 -25
  13. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +160 -50
  14. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +108 -18
  15. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +21 -36
  16. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +19 -7
  17. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +35 -40
  18. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -1
  19. package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +13 -10
  20. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +3 -2
  21. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +2 -0
  22. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +142 -71
  23. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +57 -20
  24. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +32 -9
  25. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +98 -24
  26. package/src/app/components/ddp-header/ddp-header.component.html +9 -2
  27. package/src/app/components/ddp-header/ddp-header.component.ts +93 -18
  28. package/src/app/components/project-item/project-item.component.html +1 -1
  29. package/src/app/components/project-item/project-item.component.scss +1 -1
  30. package/src/app/components/project-item/project-item.component.ts +3 -3
  31. package/src/app/components/sidebar/sidebar.component.html +65 -52
  32. package/src/app/components/sidebar/sidebar.component.scss +23 -0
  33. package/src/app/components/sidebar/sidebar.component.ts +74 -26
  34. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +20 -9
  35. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +20 -3
  36. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +24 -8
  37. package/src/app/pages/conversation-detail/conversation-detail.module.ts +5 -1
  38. package/src/app/pages/conversation-detail/conversation-detail.page.html +19 -10
  39. package/src/app/pages/conversation-detail/conversation-detail.page.scss +28 -0
  40. package/src/app/pages/conversation-detail/conversation-detail.page.ts +229 -389
  41. package/src/app/pages/conversations-list/conversations-list.page.ts +646 -454
  42. package/src/app/pages/create-canned-response/create-canned-response-routing.module.ts +17 -0
  43. package/src/app/pages/create-canned-response/create-canned-response.module.ts +30 -0
  44. package/src/app/pages/create-canned-response/create-canned-response.page.html +150 -0
  45. package/src/app/pages/create-canned-response/create-canned-response.page.scss +55 -0
  46. package/src/app/pages/create-canned-response/create-canned-response.page.spec.ts +24 -0
  47. package/src/app/pages/create-canned-response/create-canned-response.page.ts +319 -0
  48. package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
  49. package/src/app/pages/create-requester/create-requester.module.ts +28 -0
  50. package/src/app/pages/create-requester/create-requester.page.html +67 -0
  51. package/src/app/pages/create-requester/create-requester.page.scss +30 -0
  52. package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
  53. package/src/app/pages/create-requester/create-requester.page.ts +138 -0
  54. package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
  55. package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
  56. package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
  57. package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
  58. package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
  59. package/src/app/pages/create-ticket/create-ticket.page.ts +432 -0
  60. package/src/app/pages/loader-preview/loader-preview.page.ts +2 -11
  61. package/src/app/pages/profile-info/profile-info.page.html +2 -2
  62. package/src/app/pages/profile-info/profile-info.page.scss +12 -1
  63. package/src/app/services/tiledesk/tiledesk.service.ts +190 -0
  64. package/src/app/shared/shared.module.ts +1 -1
  65. package/src/assets/i18n/de.json +37 -1
  66. package/src/assets/i18n/en.json +37 -1
  67. package/src/assets/i18n/es.json +38 -2
  68. package/src/assets/i18n/fr.json +38 -2
  69. package/src/assets/i18n/it.json +38 -2
  70. package/src/assets/i18n/pt.json +38 -2
  71. package/src/assets/i18n/ru.json +38 -2
  72. package/src/assets/i18n/sr.json +38 -2
  73. package/src/assets/i18n/tr.json +37 -1
  74. package/src/assets/images/default-avatar-x-select.png +0 -0
  75. package/src/assets/images/priority_icons/high.svg +3 -0
  76. package/src/assets/images/priority_icons/high_v2.svg +14 -0
  77. package/src/assets/images/priority_icons/low.svg +10 -0
  78. package/src/assets/images/priority_icons/low_v2.svg +14 -0
  79. package/src/assets/images/priority_icons/medium.svg +16 -0
  80. package/src/assets/images/priority_icons/medium_v2.svg +11 -0
  81. package/src/assets/images/priority_icons/urgent.svg +4 -0
  82. package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
  83. package/src/chat-config-mqtt.json +25 -16
  84. package/src/chat-config-template.json +5 -4
  85. package/src/chat-config.json +1 -0
  86. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +8 -3
  87. package/src/chat21-core/utils/constants.ts +2 -0
  88. package/src/chat21-core/utils/utils-message.ts +19 -0
  89. package/src/global.scss +33 -9
@@ -0,0 +1,432 @@
1
+ import { Component, OnInit } from '@angular/core'
2
+ import { ModalController } from '@ionic/angular'
3
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service'
4
+ import { TiledeskService } from '../../services/tiledesk/tiledesk.service'
5
+ import { zip } from 'rxjs'
6
+ import { AppConfigProvider } from 'src/app/services/app-config'
7
+ import { CreateRequesterPage } from 'src/app/pages/create-requester/create-requester.page'
8
+ import * as uuid from 'uuid';
9
+ import { EventsService } from 'src/app/services/events-service'
10
+ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
11
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
12
+
13
+ @Component({
14
+ selector: 'app-create-ticket',
15
+ templateUrl: './create-ticket.page.html',
16
+ styleUrls: ['./create-ticket.page.scss'],
17
+ })
18
+ export class CreateTicketPage implements OnInit {
19
+ selectedPriority: string;
20
+ assignee_id: string;
21
+ assignee_participants_id: string;
22
+ assignee_dept_id: string;
23
+ loadingAssignee: boolean = true;
24
+ loadingRequesters: boolean = true;
25
+ prjctID: string;
26
+ tiledeskToken: string;
27
+ selectedRequester: any;
28
+ storageBucket: string;
29
+ baseUrl: string;
30
+ UPLOAD_ENGINE_IS_FIREBASE: boolean;
31
+ id_for_view_requeter_dtls: string;
32
+ requester_type: string;
33
+ projectUserAndLeadsArray = [];
34
+ projectUserBotsAndDeptsArray = [];
35
+ ticket_subject: string;
36
+ ticket_message: string;
37
+ departments: any;
38
+ internal_request_id: string;
39
+ showSpinnerCreateTicket: boolean = false;
40
+ ticketCreationCompleted: boolean = false;
41
+ dashboard_base_url: string
42
+ priority = [
43
+ {
44
+ id: 1,
45
+ name: 'urgent',
46
+ avatar: 'assets/images/priority_icons/urgent_v2.svg'
47
+ },
48
+ {
49
+ id: 2,
50
+ name: 'high',
51
+ avatar: 'assets/images/priority_icons/high_v2.svg '
52
+ },
53
+ {
54
+ id: 3,
55
+ name: 'medium',
56
+ avatar: 'assets/images/priority_icons/medium_v2.svg'
57
+ },
58
+ {
59
+ id: 4,
60
+ name: 'low',
61
+ avatar: 'assets/images/priority_icons/low_v2.svg'
62
+ },
63
+ ];
64
+
65
+ logger: LoggerService = LoggerInstance.getInstance();
66
+ constructor(
67
+ public modalController: ModalController,
68
+ public tiledeskService: TiledeskService,
69
+ public tiledeskAuthService: TiledeskAuthService,
70
+ public appConfigProvider: AppConfigProvider,
71
+ public events: EventsService
72
+ ) {}
73
+
74
+ ngOnInit() {
75
+ this.getUploadEngine()
76
+ this.dashboard_base_url = this.appConfigProvider.getConfig().dashboardUrl
77
+ this.selectedPriority = this.priority[2].name
78
+ this.logger.log('[CREATE-TICKET]', this.selectedPriority)
79
+
80
+ const stored_project = localStorage.getItem('last_project')
81
+ const storedPrjctObjct = JSON.parse(stored_project)
82
+ this.logger.log('[CREATE-TICKET] storedPrjctObjct ', storedPrjctObjct)
83
+ if (storedPrjctObjct) {
84
+ this.prjctID = storedPrjctObjct.id_project.id
85
+ this.logger.log('[CREATE-TICKET] this.prjctID ', this.prjctID)
86
+ }
87
+ this.tiledeskToken = this.tiledeskAuthService.getTiledeskToken()
88
+ this.logger.log('[CREATE-TICKET] tiledeskToken ', this.tiledeskToken)
89
+
90
+ this.getProjectUsersAndContacts(this.prjctID, this.tiledeskToken)
91
+ this.getProjectUserBotsAndDepts(this.prjctID, this.tiledeskToken)
92
+ }
93
+
94
+ getUploadEngine() {
95
+ if (this.appConfigProvider.getConfig().uploadEngine === 'firebase') {
96
+ this.UPLOAD_ENGINE_IS_FIREBASE = true
97
+ const firebase_conf = this.appConfigProvider.getConfig().firebaseConfig
98
+ this.storageBucket = firebase_conf['storageBucket']
99
+ this.logger.log('[CREATE-TICKET] - IMAGE STORAGE', this.storageBucket, '- usecase firebase: ', this.UPLOAD_ENGINE_IS_FIREBASE)
100
+ } else {
101
+ this.UPLOAD_ENGINE_IS_FIREBASE = false
102
+ this.baseUrl = this.appConfigProvider.getConfig().apiUrl
103
+ this.logger.log('[WS-REQUESTS-LIST] - IMAGE STORAGE ',this.baseUrl,'- usecase firebase: ', this.UPLOAD_ENGINE_IS_FIREBASE)
104
+ }
105
+ }
106
+
107
+ // -------------------------------------------------------------------------------------------
108
+ // Create the array of the project-users and contacts displayed in the combo box "Requester"
109
+ // -------------------------------------------------------------------------------------------
110
+ getProjectUsersAndContacts(projctid: string, tiledesktoken: string) {
111
+ const projectUsers = this.tiledeskService.getProjectUsersByProjectId(
112
+ projctid,
113
+ tiledesktoken,
114
+ )
115
+ const leads = this.tiledeskService.getAllLeadsActiveWithLimit(
116
+ projctid,
117
+ tiledesktoken,
118
+ 10000,
119
+ )
120
+
121
+ zip(projectUsers, leads).subscribe(
122
+ ([_prjctUsers, _leads]) => {
123
+ this.logger.log('[CREATE-TICKET] GET PROJECT-USER RES ', _prjctUsers)
124
+ this.logger.log('[CREATE-TICKET] GET ALL ACTIVE LEADS (LIMIT 10000) RES ', _leads.leads)
125
+
126
+ if (_prjctUsers) {
127
+ _prjctUsers.forEach((p_user) => {
128
+ this.projectUserAndLeadsArray.push({
129
+ id: p_user.id_user._id,
130
+ name: p_user.id_user.firstname + ' ' + p_user.id_user.lastname,
131
+ role: p_user.role,
132
+ email: p_user.id_user.email,
133
+ requestertype: 'agent',
134
+ requester_id: p_user._id,
135
+ })
136
+ })
137
+ }
138
+
139
+ if (_leads && _leads.leads) {
140
+ _leads.leads.forEach((lead) => {
141
+ let e_mail = 'n/a'
142
+ if (lead.email) {
143
+ e_mail = lead.email
144
+ }
145
+ this.projectUserAndLeadsArray.push({
146
+ id: lead.lead_id,
147
+ name: lead.fullname,
148
+ role: 'lead',
149
+ email: e_mail,
150
+ requestertype: 'lead',
151
+ requester_id: lead._id,
152
+ })
153
+ // this.projectUserAndLeadsArray = this.projectUserAndLeadsArray.slice(0);
154
+ })
155
+ }
156
+
157
+ this.logger.log( '[CREATE-TICKET] - GET P-USERS-&-LEADS - PROJECT-USER-&-LEAD-ARRAY: ', this.projectUserAndLeadsArray)
158
+
159
+ // component will not detect a change. Instead you need to do: this.items = [...this.items, {id: 1, name: 'New item'}]; // https://www.npmjs.com/package/@ng-select/ng-select/v/3.7.3
160
+ // Resolves the "NO ITEMS FOUND" bug displayed in the template select
161
+ // this workaround is used for "change detection" because the spread operator is available with "es6" but the target in the tsconfig.json file is "es5"
162
+ this.projectUserAndLeadsArray = this.projectUserAndLeadsArray.slice(0) // the array returned by slice(0) is identical to the input, which basically means it's a cheap way to duplicate an array.
163
+ },
164
+ (error) => {
165
+ this.loadingRequesters = false
166
+ this.logger.error('[CREATE-TICKET] - GET P-USERS-&-LEADS - ERROR: ', error)
167
+ },
168
+ () => {
169
+ this.loadingRequesters = false
170
+ this.logger.log('[CREATE-TICKET] - GET P-USERS-&-LEADS * COMPLETE *')
171
+ },
172
+ )
173
+ }
174
+
175
+ customSearchFn(term: string, item: any) {
176
+ // console.log( '[CREATE-TICKET] - GET P-USERS-&-LEADS - customSearchFn term : ', term)
177
+
178
+ term = term.toLocaleLowerCase()
179
+ // console.log('[CREATE-TICKET] - GET P-USERS-&-LEADS - customSearchFn item : ',item)
180
+ // console.log('[CREATE-TICKET] - GET P-USERS-&-LEADS - customSearchFn item.name.toLocaleLowerCase().indexOf(term) : ',item.name.toLocaleLowerCase().indexOf(term) > -1)
181
+
182
+ return (
183
+ item.name.toLocaleLowerCase().indexOf(term) > -1 || item.email.toLocaleLowerCase().indexOf(term) > -1
184
+ )
185
+ }
186
+
187
+ // used nella select requester OF CREATE TICKET
188
+ selectRequester($event) {
189
+ this.logger.log('[CREATE-TICKET] - SELECT REQUESTER event', $event)
190
+ this.logger.log('[CREATE-TICKET] - SELECT REQUESTER ID', this.selectedRequester)
191
+ if($event && $event.requester_id ) {
192
+ this.id_for_view_requeter_dtls = $event.requester_id
193
+ this.logger.log('[CREATE-TICKET] - SELECT REQUESTER $event requester_id ', $event.requester_id)
194
+ }
195
+
196
+ if($event && $event.requestertype ) {
197
+ this.requester_type = $event.requestertype
198
+ this.logger.log('[CREATE-TICKET] - SELECT REQUESTER $event requestertype ', $event.requestertype)
199
+ }
200
+
201
+
202
+
203
+
204
+
205
+ // const hasFound = this.projectUserAndLeadsArray.filter((obj: any) => {
206
+ // return obj.id === this.selectedRequester
207
+ // })
208
+
209
+ // console.log('[CREATE-TICKET] - hasFound REQUESTER ', hasFound)
210
+
211
+ // if (hasFound.length > 0)
212
+ // (this.id_for_view_requeter_dtls = hasFound[0]['requester_id']),
213
+ // console.log(
214
+ // '[CREATE-TICKET] - hasFound REQUESTER id_for_view_requeter_dtls',
215
+ // this.id_for_view_requeter_dtls,
216
+ // )
217
+
218
+ // if (hasFound[0]['requestertype'] === 'agent') {
219
+ // this.requester_type = 'agent'
220
+ // console.log(
221
+ // '[CREATE-TICKET]- hasFound REQUESTER requester_type',
222
+ // this.requester_type,
223
+ // )
224
+ // } else {
225
+ // this.requester_type = 'lead'
226
+ // console.log(
227
+ // '[CREATE-TICKET] - hasFound REQUESTER requester_type',
228
+ // this.requester_type,
229
+ // )
230
+ // }
231
+ }
232
+
233
+ openRequesterDetails() {
234
+ if (this.selectedRequester) {
235
+ if (this.requester_type === "agent") {
236
+
237
+ this.logger.log('[CREATE-TICKET] - openRequesterDetails ', this.requester_type, ' details')
238
+ const url = this.dashboard_base_url + '#/project/' + this.prjctID + '/user/edit/' + this.id_for_view_requeter_dtls
239
+ this.logger.log('[CREATE-TICKET] - openRequesterDetails URL', url)
240
+ window.open(url, '_blank');
241
+
242
+ } else if (this.requester_type === "lead") {
243
+
244
+ this.logger.log('[CREATE-TICKET] - openRequesterDetails ', this.requester_type, ' details')
245
+ const url = this.dashboard_base_url + '#/project/' + this.prjctID + '/contact/' + this.id_for_view_requeter_dtls
246
+ this.logger.log('[CREATE-TICKET] - openRequesterDetails URL', url)
247
+ window.open(url, '_blank');
248
+ }
249
+ }
250
+ }
251
+
252
+ // -------------------------------------------------------------------------------------------------------------------
253
+ // Create the array of the project-users, the bots and of the departments displayed in the combo box "Select Assignee"
254
+ // -------------------------------------------------------------------------------------------------------------------
255
+ getProjectUserBotsAndDepts(projctid: string, tiledesktoken: string) {
256
+ // this.loadingAssignee = true;
257
+ const projectUsers = this.tiledeskService.getProjectUsersByProjectId( projctid, tiledesktoken)
258
+ const bots = this.tiledeskService.getAllBotByProjectId(projctid, tiledesktoken)
259
+ const depts = this.tiledeskService.getDeptsByProjectId(projctid, tiledesktoken)
260
+
261
+ zip(projectUsers, bots, depts).subscribe(
262
+ ([_prjctUsers, _bots, _depts]) => {
263
+ this.logger.log( '[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS - PROJECT USERS : ', _prjctUsers )
264
+ this.logger.log( '[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS - BOTS : ', _bots)
265
+ this.logger.log( '[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS - DEPTS: ',_depts)
266
+ this.departments = _depts
267
+ this.logger.log( '[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS - this.departments: ',this.departments)
268
+ // projectUserAndLeadsArray
269
+
270
+ if (_prjctUsers) {
271
+ _prjctUsers.forEach((p_user) => {
272
+ this.projectUserBotsAndDeptsArray.push({ id: p_user.id_user._id, name: p_user.id_user.firstname + ' ' + p_user.id_user.lastname + ' (' + p_user.role + ')' })
273
+ })
274
+ }
275
+
276
+ if (_bots) {
277
+ _bots.forEach((bot) => {
278
+ if (bot['trashed'] === false && bot['type'] !== 'identity') {
279
+ this.projectUserBotsAndDeptsArray.push({
280
+ id: 'bot_' + bot._id,
281
+ name: bot.name + ' (bot)',
282
+ })
283
+ }
284
+ })
285
+ }
286
+
287
+ if (_depts) {
288
+ _depts.forEach((dept) => {
289
+ this.projectUserBotsAndDeptsArray.push({
290
+ id: dept._id,
291
+ name: dept.name + ' (dept)',
292
+ })
293
+ })
294
+ }
295
+
296
+ this.logger.log('[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS ARRAY: ',this.projectUserBotsAndDeptsArray )
297
+
298
+ this.projectUserBotsAndDeptsArray = this.projectUserBotsAndDeptsArray.slice(0)
299
+ },
300
+ (error) => {
301
+ this.loadingAssignee = false
302
+ this.logger.error('[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS - ERROR: ', error)
303
+ },
304
+ () => {
305
+ this.loadingAssignee = false
306
+ this.logger.log('[CREATE-TICKET] - GET P-USERS-&-BOTS-&-DEPTS * COMPLETE *')
307
+ },
308
+ )
309
+ }
310
+
311
+ selectedAssignee() {
312
+ this.logger.log('[CREATE-TICKET] - SELECT ASSIGNEE: ', this.assignee_id);
313
+ this.logger.log('[CREATE-TICKET] - DEPTS: ', this.departments);
314
+
315
+ const hasFound = this.departments.filter((obj: any) => {
316
+ return obj.id === this.assignee_id;
317
+ });
318
+
319
+ this.logger.log("[CREATE-TICKET] - SELECT ASSIGNEE HAS FOUND IN DEPTS: ", hasFound);
320
+
321
+ if (hasFound.length === 0) {
322
+
323
+ this.assignee_dept_id = undefined
324
+ this.assignee_participants_id = this.assignee_id
325
+ } else {
326
+
327
+ this.assignee_dept_id = this.assignee_id
328
+ this.assignee_participants_id = undefined
329
+ }
330
+ }
331
+
332
+ onChangeSelectedPriority(selectedPriority) {
333
+ this.logger.log('[CREATE-TICKET] onChangeSelectedPriority selectedPriority ', selectedPriority)
334
+ this.selectedPriority = selectedPriority;
335
+ }
336
+
337
+ createTicket() {
338
+ // if (this.ticketCreationCompleted === false) {
339
+ // this.hasClickedCreateNewInternalRequest = true
340
+ this.showSpinnerCreateTicket = true
341
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - ticket_message ', this.ticket_message);
342
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - assignee_dept_id ', this.assignee_dept_id);
343
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - assignee_participants_id ', this.assignee_participants_id);
344
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - ticket_subject', this.ticket_subject);
345
+
346
+ const uiid = uuid.v4();
347
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - uiid', uiid);
348
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - uiid typeof', typeof uiid);
349
+ const uiid_no_dashes = uiid.replace(/-/g, "");;
350
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - uiid_no_dash', uiid_no_dashes);
351
+ // Note: the request id must be in the form "support-group-" + "-" + "project_id" + "uid" <- uid without dash
352
+ // this.logger.log('% WsRequestsList createTicket - UUID', uiid);
353
+ this.internal_request_id = 'support-group-' + this.prjctID + '-' + uiid_no_dashes
354
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - internal_request_id', this.internal_request_id);
355
+ // (request_id:string, subject: string, message:string, departmentid: string)
356
+ this.tiledeskService.createInternalRequest(this.selectedRequester,
357
+ this.internal_request_id,
358
+ this.ticket_subject,
359
+ this.ticket_message,
360
+ this.assignee_dept_id,
361
+ this.assignee_participants_id,
362
+ this.selectedPriority,
363
+ this.prjctID,
364
+ this.tiledeskToken
365
+ ).subscribe((newticket: any) => {
366
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest - RES ', newticket);
367
+
368
+ }, error => {
369
+ this.showSpinnerCreateTicket = false
370
+ this.logger.error('[WS-REQUESTS-LIST] create internalRequest - ERROR: ', error);
371
+ }, () => {
372
+ this.logger.log('[WS-REQUESTS-LIST] create internalRequest * COMPLETE *')
373
+ this.showSpinnerCreateTicket = false;
374
+ this.ticketCreationCompleted = true
375
+ // this.closeModalCreateTicketModal()
376
+
377
+ // this.events.publish('closeModalCreateTicket', true)
378
+ });
379
+ // }
380
+ // else {
381
+ // this.closeModalCreateTicketModal()
382
+ // }
383
+ }
384
+
385
+ async closeModalCreateTicketModal() {
386
+ this.logger.log('[CREATE-TICKET] modalController', this.modalController)
387
+ this.logger.log('[CREATE-TICKET] .getTop()', this.modalController.getTop())
388
+ await this.modalController.getTop()
389
+ this.modalController.dismiss({ confirmed: true })
390
+ }
391
+
392
+ async presentModalAddNewRequester(): Promise<any> {
393
+ // this.closeModalCreateTicketModal()
394
+ const attributes = {
395
+ projectUserAndLeadsArray: this.projectUserAndLeadsArray,
396
+ }
397
+ const modal: HTMLIonModalElement = await this.modalController.create({
398
+ component: CreateRequesterPage,
399
+ componentProps: attributes,
400
+ swipeToClose: false,
401
+ backdropDismiss: false,
402
+ })
403
+ modal.onDidDismiss().then((dataReturned: any) => {
404
+ //
405
+ this.logger.log('[CREATE-TICKET] ', dataReturned.data)
406
+ this.logger.log('[CREATE-TICKET] PRJCT-USERS-&-LEADS-ARRAY RETURNED FROM CREATE REQUESTER',dataReturned.data.updatedProjectUserAndLeadsArray)
407
+ this.logger.log('[CREATE-TICKET] CREATED LEAD ID RETURNED FROM CREATE REQUESTER', dataReturned.data.selectedRequester)
408
+
409
+ if (dataReturned.data && dataReturned.data.selectedRequester) {
410
+ this.selectedRequester = dataReturned.data.selectedRequester
411
+ }
412
+
413
+ if (dataReturned.data && dataReturned.data.requester_type) {
414
+ this.requester_type = dataReturned.data.requester_type
415
+ }
416
+
417
+ if (dataReturned.data && dataReturned.data.requester_id) {
418
+ const requester_id = dataReturned.data.requester_id;
419
+ this.logger.log('[CREATE-TICKET] REQUESTER ID RERETURNED FROM CREATE REQUESTER', requester_id)
420
+ this.id_for_view_requeter_dtls = requester_id
421
+
422
+ }
423
+
424
+ if ( dataReturned.data && dataReturned.data.updatedProjectUserAndLeadsArray) {
425
+ this.projectUserAndLeadsArray = dataReturned.data.updatedProjectUserAndLeadsArray
426
+ this.projectUserAndLeadsArray = this.projectUserAndLeadsArray.slice(0)
427
+ }
428
+ })
429
+
430
+ return await modal.present()
431
+ }
432
+ }
@@ -1,16 +1,7 @@
1
1
  import {
2
- Component,
3
- OnInit,
4
- Input,
5
- Output,
6
- ViewChild,
7
- ElementRef,
8
- EventEmitter,
9
- HostListener,
10
- AfterViewInit,
11
- } from '@angular/core'
2
+ Component, OnInit, Input, ViewChild, ElementRef, HostListener, AfterViewInit} from '@angular/core'
12
3
  import { TYPE_MSG_IMAGE } from 'src/chat21-core/utils/constants'
13
- import { NavParams, ModalController } from '@ionic/angular'
4
+ import { ModalController } from '@ionic/angular'
14
5
  import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'
15
6
 
16
7
  // Logger
@@ -77,10 +77,10 @@
77
77
 
78
78
 
79
79
  <ion-footer class="ion-no-border">
80
- <ion-toolbar>
80
+ <!-- <ion-toolbar style="background-color: #1e2129 !important"> -->
81
81
  <div class="content-chat-version">
82
82
  <!-- <p class="chat-title">Tiledesk Chat</p> -->
83
83
  <p class="chat-version">{{ 'LABEL_VERSION' | translate }} {{version}}</p>
84
84
  </div>
85
- </ion-toolbar>
85
+ <!-- </ion-toolbar> -->
86
86
  </ion-footer>
@@ -114,6 +114,15 @@
114
114
  margin-top: 15px;
115
115
  margin-bottom: 5px;
116
116
  }
117
+
118
+ // ion-toolbar {
119
+ // --padding-bottom: 0px;
120
+ // --background: #1e2129 !important;
121
+ // div.toolbar-container {
122
+ // padding: 0px !important;
123
+ // background: #1e2129 !important;
124
+ // }
125
+ // }
117
126
  }
118
127
 
119
128
  .avatar-container {
@@ -250,6 +259,7 @@ ion-footer{
250
259
  .content-chat-version {
251
260
  color: white;
252
261
  padding: 20px;
262
+ background-color: #1e2129;
253
263
  }
254
264
  .chat-title{
255
265
  font-size: 14px;
@@ -261,4 +271,5 @@ ion-footer{
261
271
  font-weight: 400;
262
272
  margin: 0;
263
273
  }
264
- }
274
+ }
275
+