{"version":3,"sources":["./src/app/components/location/location.component.ts","./src/app/components/location/location.component.html","./src/app/page/closed-chats/closed-chats.component.ts","./src/app/page/closed-chats/closed-chats.component.html","./src/app/components/message-window/message-window.component.ts","./src/app/components/message-window/message-window.component.html","./src/app/components/toast-message/toast-message.component.ts","./src/app/components/toast-message/toast-message.component.html","./src/app/pipes/chat-room-filter.pipe.ts","./src/app/services/socket.service.ts","./src/app/services/chats/chat.room.service.ts","./src/app/components/dialog/add-edit-reference-number-dialog/add-edit-reference-number-dialog.component.ts","./src/app/components/dialog/add-edit-reference-number-dialog/add-edit-reference-number-dialog.component.html","./src/app/enums.ts","./src/app/services/auth/auth.service.ts","./src/app/services/error.service.ts","./src/app/page/contacts/contacts.component.ts","./src/app/page/contacts/contacts.component.html","./src/environments/environment.ts","./src/app/components/dialog/dialog.component.ts","./src/app/components/dialog/dialog.component.html","./src/app/services/chats/chat.service.ts","./src/app/services/base-api.service.ts","./src/app/page/chats-landing-page/chats-landing-page.component.ts","./src/app/page/chats-landing-page/chats-landing-page.component.html","./src/app/components/dialog/edit-whatsapp-user-dialog/edit-whatsapp-user-dialog.component.ts","./src/app/components/dialog/edit-whatsapp-user-dialog/edit-whatsapp-user-dialog.component.html","./src/app/components/dialog/add-edit-chat-notes-dialog/add-edit-chat-notes-dialog.component.ts","./src/app/components/dialog/add-edit-chat-notes-dialog/add-edit-chat-notes-dialog.component.html","./src/app/page/online-users/online-users.component.ts","./src/app/page/online-users/online-users.component.html","./src/app/services/api/user.api.service.ts","./src/app/components/message-item/message-item.component.ts","./src/app/components/message-item/message-item.component.html","./src/app/page/template-manager/template-manager.component.ts","./src/app/page/template-manager/template-manager.component.html","./src/app/components/drop-down/drop-down.component.ts","./src/app/components/drop-down/drop-down.component.html","./src/app/components/dialog/add-whatsapp-user-dialog/add-whatsapp-user-dialog.component.ts","./src/app/components/dialog/add-whatsapp-user-dialog/add-whatsapp-user-dialog.component.html","./src/app/services/notification.service.ts","./src/app/services/chats/claimed.chats.service.ts","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/services/products.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/components/dialog/close-chat-dialog/close-chat-dialog.component.ts","./src/app/components/dialog/close-chat-dialog/close-chat-dialog.component.html","./src/app/services/auth/auth.manager.ts","./src/app/components/chats-panel/chats-panel.component.ts","./src/app/components/chats-panel/chats-panel.component.html","./src/app/components/dialog/dialog.service.ts","./src/app/components/dialog/preview-messages-dialog/preview-messages-dialog.component.ts","./src/app/components/dialog/preview-messages-dialog/preview-messages-dialog.component.html","./src/app/components/room-chat-item/room-chat-item.component.ts","./src/app/components/room-chat-item/room-chat-item.component.html","./src/app/app.module.ts","./src/app/components/chat-item/chat-item.component.ts","./src/app/components/chat-item/chat-item.component.html","./src/app/page/chat-rooms/chat-rooms.component.ts","./src/app/page/chat-rooms/chat-rooms.component.html","./src/app/components/chat-window/chat-window.component.ts","./src/app/components/chat-window/chat-window.component.html","./src/app/components/spinner/spinner.component.ts","./src/app/components/spinner/spinner.component.html","./src/app/components/dialog/claim-room-chat-dialog/claim-room-chat-dialog.component.ts","./src/app/components/dialog/claim-room-chat-dialog/claim-room-chat-dialog.component.html","./src/app/components/dialog/reassign-chat-dialog/reassign-chat-dialog.component.ts","./src/app/components/dialog/reassign-chat-dialog/reassign-chat-dialog.component.html","./src/app/services/api/template.api.service.ts","./src/app/services/api/api.service.ts","./src/app/page/login/login.component.ts","./src/app/page/login/login.component.html","./src/app/services/permissions.service.ts","./src/app/services/browser.service.ts","./src/app/services/message.service.ts","./src/app/app-routing.module.ts","./src/app/services/api/chat.api.service.ts","./src/app/components/side-menu/side-menu.component.ts","./src/app/components/side-menu/side-menu.component.html","./src/app/material.module.ts","./src/app/components/dialog/messages-preview-claim-chat-dialog/messages-preview-claim-chat-dialog.component.ts","./src/app/components/dialog/messages-preview-claim-chat-dialog/messages-preview-claim-chat-dialog.component.html","./src/app/components/toast-message/toast.message.service.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2B;;;;;;;;;;;;ACnSA;AAAA;AAAA;AAAA;AAAA;AAA2C;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","file":"main-es2015.js","sourcesContent":["import { Component, ElementRef, NgZone, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport * as L from \"leaflet\";\r\nimport \"leaflet.markercluster\";\r\nimport { latLng, tileLayer, marker, icon, Popup, Layer, Control, Map, } from 'leaflet';\r\nimport 'leaflet/dist/images/marker-shadow.png';\r\nimport 'leaflet/dist/images/marker-icon.png';\r\nimport * as _ from 'lodash'\r\n\r\n@Component({\r\n selector: 'app-location',\r\n templateUrl: './location.component.html',\r\n styleUrls: ['./location.component.scss']\r\n})\r\nexport class LocationComponent implements OnInit {\r\n\r\n myLatLng: any = [];\r\n initialRenderComplete = false;\r\n\r\n fitBounds: any = undefined;\r\n map: Map;\r\n LAYER_OSM = {\r\n id: \"openstreetmap\",\r\n name: \"Open Street Map\",\r\n enabled: false,\r\n layer: L.tileLayer(\"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\r\n maxZoom: 18,\r\n attribution: \"Open Street Map\"\r\n })\r\n };\r\n\r\n\r\n layersControlOptions = { position: \"bottomright\" };\r\n baseLayers = {\r\n \"Open Street Map\": this.LAYER_OSM.layer\r\n };\r\n options = {\r\n zoom: 5,\r\n center: latLng([-29.8225845, 30.8591048]),\r\n attributionControl: false,\r\n maxZoom: 18,\r\n };\r\n\r\n markerClusterData: any[] = []; \r\n\r\n markerClusterGroup: L.MarkerClusterGroup;\r\n markerClusterOptions: L.MarkerClusterGroupOptions = {\r\n iconCreateFunction: (cluster) => {\r\n var markers = cluster.getAllChildMarkers();\r\n let hasAlert = false\r\n let found = _.find(markers, (d) => {\r\n return d.hasAlert == true\r\n })\r\n if (found) {\r\n hasAlert = true\r\n }\r\n var html = '
' + markers.length + '
';\r\n if (hasAlert) {\r\n return L.divIcon({ html: html, className: 'marker-cluster marker-cluster-large', iconSize: L.point(40, 40) });\r\n }\r\n else {\r\n return L.divIcon({ html: html, className: 'marker-cluster marker-cluster-small', iconSize: L.point(40, 40) });\r\n }\r\n },\r\n // spiderfyOnMaxZoom: false, showCoverageOnHover: true, zoomToBoundsOnClick: false \r\n };\r\n\r\n markerClusterReady(group: L.MarkerClusterGroup) {\r\n this.markerClusterGroup = group;\r\n }\r\n\r\n constructor(private el: ElementRef,\r\n private _ngZone: NgZone,\r\n\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.map = L.map('map').setView([-32.9359151,27.7746228], 1);\r\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\r\n attribution: 'edupala.com © Angular LeafLet',\r\n }).addTo(this.map);\r\n }\r\n\r\n onMapReady(map: Map) {\r\n this.map = map;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.map) {\r\n this.map.clearAllEventListeners();\r\n this.map.remove();\r\n } \r\n this.el.nativeElement.remove();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport * as moment from 'moment';\r\nimport { ClosedChats as ClosedChat } from '../../../interfaces/chat.interfaces';\r\nimport { ChatApiService } from '../../services/api/chat.api.service';\r\nimport { ToastMessageService } from '../../components/toast-message/toast.message.service';\r\nimport { SystemUser, WhatsappUser } from '../../../interfaces/user.interfaces';\r\nimport { UserApiService } from '../../services/api/user.api.service';\r\nimport { Dropdown } from '../../../interfaces/global.interfaces';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogComponent } from '../../components/dialog/dialog.component';\r\nimport { DialogType } from '../../enums';\r\nimport { Location } from '@angular/common';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'app-closed-chats',\r\n templateUrl: './closed-chats.component.html',\r\n styleUrls: ['./closed-chats.component.scss']\r\n})\r\nexport class ClosedChatsComponent implements OnInit {\r\n\r\n @ViewChild(MatSort) sort!: MatSort;\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n @ViewChild('picker') picker: any;\r\n public displayedColumns: string[] = ['refNo', 'whatsappUserName', 'body', 'sendDate', 'group', 'lastClaimedBy'];\r\n public closedChats: MatTableDataSource = new MatTableDataSource([]);\r\n public selectedDate!: Date;\r\n public systemUsers: Dropdown[] = [];\r\n public selectedSystemUserId!: number;\r\n public selectedWhatsappUserId!: number;\r\n public whatsappUsers: Dropdown[] = [];\r\n public selectedClosedChat: ClosedChat | null = null;\r\n public selectedRowIndex: number = -1;\r\n\r\n public tableSpinner: boolean = false;\r\n public showSpinner: boolean = false;\r\n\r\n constructor(\r\n public chatService: ChatService,\r\n private chatApiService: ChatApiService,\r\n private userApiService: UserApiService,\r\n private toastMessageService: ToastMessageService,\r\n public dialog: MatDialog,\r\n private error: ErrorService,\r\n private location: Location\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.showSpinner = true;\r\n await this.getSystemUsers();\r\n this.showSpinner = false;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.closedChats.paginator = this.paginator;\r\n this.closedChats.sort = this.sort;\r\n }\r\n\r\n public async getSystemUsers(): Promise {\r\n try {\r\n const resp = await this.userApiService.getSystemUsers();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get system users', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n resp.result.map((user: SystemUser) => {\r\n this.systemUsers.push({\r\n value: user.id,\r\n label: user.loginName\r\n });\r\n });\r\n await this.getWhatsappUsers();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get system users.', err, 'closed-chats.getSystemUsers()');\r\n this.toastMessageService.showToastMessage('Failed to get system users', 'toast-message-error');\r\n }\r\n }\r\n\r\n private async getWhatsappUsers(): Promise {\r\n try {\r\n const resp = await this.userApiService.getWhatsAppUsers();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get whatsapp users', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n resp.result.map((user: WhatsappUser) => {\r\n this.whatsappUsers.push({\r\n value: user.whatsappUserId,\r\n label: this.chatService.getFormattedName(user.firstName, user.lastName, user.whatsappUserNumber) ?? user.whatsappUserNumber\r\n });\r\n });\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get whatsapp users.', err, 'closed-chats.getWhatsappUsers()');\r\n this.toastMessageService.showToastMessage('Failed to get whatsapp users', 'toast-message-error');\r\n }\r\n }\r\n\r\n public async getClosedChats(): Promise {\r\n this.tableSpinner = true;\r\n try {\r\n const resp = await this.chatApiService.getClosedChatsFromDateAndOptionallyUser(this.selectedDate, this.selectedSystemUserId, this.selectedWhatsappUserId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get closed chats', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else if (!resp.result || resp.result.length === 0) this.toastMessageService.showToastMessage('No closed chats found', 'toast-message-info');\r\n else {\r\n this.closedChats.data = resp.result;\r\n this.closedChats.data.map(cc => {\r\n cc.whatsappUserName = this.chatService.getFormattedName(cc.firstName, cc.lastName, cc.whatsappUserNumber) ?? cc.whatsappUserNumber;\r\n });\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get closed chats.', err, 'closed-chats.getClosedChats()');\r\n this.toastMessageService.showToastMessage('Failed to get closed chats', 'toast-message-error');\r\n }\r\n this.tableSpinner = false;\r\n }\r\n\r\n public async onClosedChatClick(closedChat: ClosedChat, index: number) {\r\n this.selectedRowIndex = index;\r\n this.selectedClosedChat = closedChat;\r\n\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.PREVIEW_CHAT_MESSAGES, chat: this.selectedClosedChat },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this.selectedClosedChat = null;\r\n this.selectedRowIndex = -1;\r\n });\r\n }\r\n\r\n public formatDate(date: Date) { return moment(date).format('YYYY/MM/DD hh:mm a'); }\r\n\r\n public filterClosedChats(filter: string) { this.closedChats.filter = filter.trim().toLowerCase(); }\r\n\r\n public goBack() { this.location.back(); }\r\n}","\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n search\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n Choose a date to start*\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Reference No. {{ !closedChat.refNo ? 'None' : closedChat.refNo }} WhatsApp User\r\n {{ closedChat.whatsappUserName }}\r\n Body {{ closedChat.body }} Sent Date {{ formatDate( closedChat.sendDate) }} Group {{ closedChat.group }} Last Claimed By {{ closedChat.lastClaimedBy || '-' }}
\r\n\r\n
No\r\n Closed chats found
\r\n\r\n \r\n \r\n
\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Message } from '../../../interfaces/message.interfaces';\r\nimport * as _ from 'lodash';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ClaimedChatsService } from '../../services/chats/claimed.chats.service';\r\n\r\n@Component({\r\n selector: 'message-window',\r\n templateUrl: './message-window.component.html',\r\n styleUrls: ['./message-window.component.scss']\r\n})\r\nexport class MessageWindowComponent implements OnInit, OnChanges {\r\n\r\n @Input() public messages: Message[] = [];\r\n @Input() public searchTerm: string | null = '';\r\n @Input() public findNextResult: EventEmitter = new EventEmitter();\r\n @Input() public findPreviousResult: EventEmitter = new EventEmitter();\r\n @Input() public navigateToNextResultEmitter: EventEmitter = new EventEmitter();\r\n @Input() public navigateToPreviousResultEmitter: EventEmitter = new EventEmitter();\r\n @Input() public scrollToBottomEmitter: EventEmitter = new EventEmitter();\r\n @Output() public messageSearch: EventEmitter = new EventEmitter();\r\n @ViewChild('messageWindow', { static: false }) public messageWindow: ElementRef | null = null;\r\n @ViewChild('image', { static: false }) public image: ElementRef | null = null;\r\n\r\n public searchResults: Message[] = [];\r\n public currentResultIndex: number = 0;\r\n private selectedChatId: number | null = null;\r\n public showScrollIcon: boolean = false;\r\n public imagePreview: string | null = null;\r\n public currentImageRotation: number = 0;\r\n private shouldAutoScroll: boolean = true;\r\n\r\n constructor(public messageService: MessageService, private claimedChatService: ClaimedChatsService) { }\r\n\r\n ngOnInit() {\r\n this.subscribeToParentEmitters();\r\n if (this.messages?.length == 0) return;\r\n this.setup();\r\n }\r\n\r\n private setup() {\r\n this.selectedChatId = this.messages[0]?.chatId;\r\n this.messageService.messages = [...this.messages];\r\n this.shouldAutoScroll = true;\r\n this.messageService.handleDisplayMessages();\r\n this.scrollToBottom();\r\n }\r\n\r\n public subscribeToParentEmitters(): void {\r\n this.navigateToNextResultEmitter?.subscribe(() => {\r\n this.navigateToNextResult();\r\n });\r\n\r\n this.navigateToPreviousResultEmitter?.subscribe(() => {\r\n this.navigateToPreviousResult();\r\n });\r\n\r\n this.scrollToBottomEmitter?.subscribe(() => {\r\n this.scrollToBottom();\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n //will update the messages if the chat has changed\r\n if (this.selectedChatId !== this.claimedChatService.getSelectedClaimChat?.chatId || this.messageService.messages?.length !== this.messages.length) {\r\n this.imagePreview = null;\r\n this.setup();\r\n } else {\r\n this.searchChatMessages();\r\n this.messageSearchChange();\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.autoScrollToBottom();\r\n }\r\n\r\n public searchChatMessages() {\r\n const search = this.searchTerm?.trim()?.toLowerCase();\r\n\r\n //search only kicks in if the search length is more than or equal to 2\r\n if (!search || search.length <= 2) {\r\n this.searchResults = [];\r\n this.currentResultIndex = 0;\r\n this.messageSearchChange();\r\n return;\r\n }\r\n\r\n this.searchResults = _.filter(this.messages, (message) => message.body.trim().toLowerCase().includes(search));\r\n this.messageSearchChange();\r\n }\r\n\r\n public navigateToNextResult(): void {\r\n if (this.searchResults.length === 0) {\r\n return; // No search results\r\n }\r\n\r\n this.currentResultIndex = (this.currentResultIndex + 1) % this.searchResults.length;\r\n this.scrollToResult();\r\n this.messageSearchChange();\r\n }\r\n\r\n public navigateToPreviousResult(): void {\r\n if (this.searchResults.length === 0) {\r\n return; // No search results\r\n }\r\n\r\n this.currentResultIndex = (this.currentResultIndex - 1 + this.searchResults.length) % this.searchResults.length;\r\n this.scrollToResult();\r\n this.messageSearchChange();\r\n }\r\n\r\n public isMessageSearchMatch(messageId: number): boolean {\r\n if (!this.searchResults) return false;\r\n return this.searchResults.some(message => message.messageId === messageId);\r\n }\r\n\r\n public onScroll() {\r\n const scrollThreshold = 150;\r\n if (!this.messageWindow) return;\r\n const distanceFromBottom = this.messageWindow.nativeElement.scrollHeight - (this.messageWindow.nativeElement.scrollTop + this.messageWindow.nativeElement.clientHeight);\r\n this.showScrollIcon = distanceFromBottom > scrollThreshold;\r\n }\r\n\r\n public autoScrollToBottom() {\r\n if (!this.shouldAutoScroll) return;\r\n this.scrollToBottom();\r\n this.shouldAutoScroll = false;\r\n }\r\n\r\n public scrollToBottom() {\r\n if (this.messageWindow) this.messageWindow.nativeElement.scrollTop = this.messageWindow.nativeElement.scrollHeight;\r\n }\r\n\r\n private scrollToResult(): void {\r\n const resultIndex = this.searchResults[this.currentResultIndex].messageId;\r\n if (!this.messageWindow) return;\r\n const element = this.messageWindow.nativeElement.querySelector(`#message-${resultIndex}`);\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n }\r\n\r\n public smoothScrollToBottom() {\r\n if (!this.messageWindow) return;\r\n\r\n this.messageWindow.nativeElement.scrollTo({\r\n top: this.messageWindow.nativeElement.scrollHeight,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n public messageSearchChange() {\r\n const payload: MessageSearch = {\r\n searchResults: this.searchResults.length,\r\n currentResultIndex: this.currentResultIndex\r\n };\r\n this.messageSearch.emit(payload);\r\n }\r\n\r\n public rotateImage(degrees: number) {\r\n if (!this.image) return;\r\n\r\n this.currentImageRotation += degrees;\r\n\r\n const newRotation = `rotate(${this.currentImageRotation}deg)`;\r\n\r\n this.image.nativeElement.style.transform = newRotation;\r\n }\r\n\r\n public initializeRotation() {\r\n if (!this.image) return null;\r\n\r\n this.image.nativeElement.style.transform = `rotate(${this.currentImageRotation}deg)`;\r\n }\r\n\r\n public clearSearch() {\r\n this.searchTerm = '';\r\n this.searchResults = [];\r\n this.currentResultIndex = 0;\r\n this.messageSearchChange();\r\n }\r\n}\r\n\r\nexport interface MessageSearch {\r\n searchResults: number;\r\n currentResultIndex: number;\r\n}","
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n arrow_downward\r\n \r\n
\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\n\r\n@Component({\r\n templateUrl: './toast-message.component.html',\r\n styleUrls: ['./toast-message.component.scss']\r\n})\r\nexport class ToastMessageComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) {}\r\n}","{{ data.message }}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { RoomChat } from 'src/interfaces/chat.interfaces';\r\nimport { RoomChatFilterBy, RoomChatOrderBy } from '../enums';\r\nimport * as _ from 'lodash';\r\nimport { ChatRoomService } from '../services/chats/chat.room.service';\r\n\r\n@Pipe({\r\n name: 'chatRoomFilter'\r\n})\r\nexport class ChatRoomFilterPipe implements PipeTransform {\r\n\r\n constructor(private chatRoomService: ChatRoomService) { }\r\n\r\n transform(chats: RoomChat[], selectedChatFilter: RoomChatFilterBy, selectedOrderFilter: RoomChatOrderBy): RoomChat[] {\r\n return this.chatRoomService.filterChats(chats, selectedChatFilter, selectedOrderFilter);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { Socket, io } from 'socket.io-client/build/index';\r\nimport { AuthService } from './auth/auth.service';\r\nimport { Message } from '../../interfaces/message.interfaces';\r\nimport { ClaimChatInternalMessage, CloseChatInternalMessage, DisconnectInternalMessage, InternalMessage, ReassignChatInternalMessage } from '../../interfaces/internal.message.interfaces';\r\nimport { InternalMessageType } from '../enums';\r\nimport { ClaimedChatsService } from './chats/claimed.chats.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { BrowserService } from './browser.service';\r\nimport { MessageService } from './message.service';\r\nimport { ChatRoomService } from './chats/chat.room.service';\r\nimport { Router } from '@angular/router';\r\nimport { ToastMessageService } from '../components/toast-message/toast.message.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SocketService {\r\n\r\n private _connected: boolean = false;\r\n private _timeout: boolean = false;\r\n private _notConnectedReason: string = '';\r\n private socket: Socket = {} as Socket;\r\n\r\n public get timeout(): boolean { return this._timeout; }\r\n\r\n public get connected(): boolean { return this._connected; }\r\n\r\n public get notConnectedReason(): string { return this._notConnectedReason; }\r\n\r\n public set connected(value: boolean) { this._connected = value; }\r\n\r\n public set timeout(value: boolean) { this._timeout = value; }\r\n\r\n public set notConnectedReason(value: string) { this._notConnectedReason = value; }\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private notificationService: NotificationService,\r\n private claimedChatsService: ClaimedChatsService,\r\n private chatRoomService: ChatRoomService,\r\n private messageService: MessageService,\r\n private browserService: BrowserService,\r\n private toastMessageService: ToastMessageService,\r\n private router: Router\r\n ) { }\r\n\r\n public setup() {\r\n this.socket = io(environment.socketURL, {\r\n reconnection: true,\r\n reconnectionAttempts: 5,\r\n reconnectionDelay: 1000,\r\n reconnectionDelayMax: 5000\r\n });\r\n\r\n //socket events\r\n this.socket.on('internalMsg', (msg: InternalMessage) => this.internalMessage(msg));\r\n this.socket.on('disconnect', () => this.disconnect());\r\n this.socket.on('connect', () => this.connect());\r\n }\r\n\r\n private connect() {\r\n this.connected = true;\r\n this.timeout = false;\r\n this.socket.emit('join', {\r\n userId: this.auth.userId,\r\n loginName: this.auth.loginName\r\n });\r\n this.auth.lostConnection = false;\r\n }\r\n\r\n //used in side menu component html\r\n public logout() {\r\n this.socket.disconnect();\r\n this.auth.logout();\r\n this.connected = false;\r\n }\r\n\r\n public disconnect(): void {\r\n this.timeout = true;\r\n this.connected = false;\r\n this.notConnectedReason = 'Connection lost to server. Please wait while we try to reconnect';\r\n }\r\n\r\n private async internalMessage(msg: InternalMessage) {\r\n switch (msg.internalMessageType) {\r\n case InternalMessageType.USER_LOGGED_CLAIM_CHATS:\r\n this.claimedChatsService.handleUserLoggedClaimedChats(msg.internalMessage.claimedChats, msg.internalMessage.loginName);\r\n break;\r\n\r\n case InternalMessageType.DISCONNECT:\r\n await this.handleUserDisconnect(msg.internalMessage);\r\n break;\r\n\r\n case InternalMessageType.INBOUND_MESSAGE:\r\n this.inboundWhatsappMessage(msg.internalMessage.message);\r\n break;\r\n\r\n case InternalMessageType.NOTIFY_USERS_CHAT_CLAIMED:\r\n this.handleUserClaimChats(msg.internalMessage);\r\n break;\r\n\r\n case InternalMessageType.CHAT_CLOSE:\r\n this.handleChatClose(msg.internalMessage);\r\n break;\r\n\r\n case InternalMessageType.PRODUCT_CHANGE:\r\n this.claimedChatsService.handleProductChange(msg.internalMessage.userId, msg.internalMessage.loginName, msg.internalMessage.productName);\r\n break;\r\n\r\n case InternalMessageType.MESSAGE_STATUS_UPDATE:\r\n this.messageService.handleMessageStatusupdate(msg.internalMessage);\r\n break;\r\n\r\n case InternalMessageType.REASSIGN_CHAT:\r\n this.handleReassignChat(msg.internalMessage);\r\n break;\r\n }\r\n }\r\n\r\n private inboundWhatsappMessage(message: Message): void {\r\n this.claimedChatsService.handleInboundWhatsappMessage(message);\r\n\r\n if ((this.claimedChatsService.getSelectedClaimChat?.chatId !== message.chatId || this.claimedChatsService.getSelectedClaimChat?.chatId === message.chatId) && !this.browserService.browserFocused) {\r\n this.notificationService.messageReceivedNotification(message);\r\n } else if (!this.claimedChatsService.getSelectedClaimChat && !this.browserService.browserFocused) {\r\n this.notificationService.messageReceivedNotification(message);\r\n } else if (!this.claimedChatsService.getSelectedClaimChat && this.browserService.browserFocused) {\r\n this.notificationService.messageReceivedNotification(message);\r\n }\r\n }\r\n\r\n private async handleUserDisconnect(msg: DisconnectInternalMessage) {\r\n this.claimedChatsService.handleUserDisconnect(msg.serverUserId, msg.loginName);\r\n //only get chat rooms if the user is on the chat rooms screen\r\n if (this.router.url === '/chat-rooms') await this.chatRoomService.getChatRooms();\r\n }\r\n\r\n private handleUserClaimChats(msg: ClaimChatInternalMessage) {\r\n const chatIds: number[] = msg.chats.map(c => c.chatId);\r\n this.chatRoomService.handleRemovingChatsFromRoom(chatIds);\r\n }\r\n\r\n private handleChatClose(msg: CloseChatInternalMessage) {\r\n this.claimedChatsService.handleRemovingClaimedChats(msg.chatIds);\r\n this.chatRoomService.handleRemovingChatsFromRoom(msg.chatIds);\r\n }\r\n\r\n private handleReassignChat(msg: ReassignChatInternalMessage) {\r\n if (!this.auth.user || !this.auth.user.id || !this.auth.user.loginName) return;\r\n this.claimedChatsService.handleChatsReassignToUser(msg.chats, this.auth.user.id, this.auth.user.loginName);\r\n this.toastMessageService.showToastMessage(`You have been assigned ${msg.chats.length} chat(s) from ${msg.loginName}`, 'toast-message-info');\r\n }\r\n\r\n public async sendInternalMessage(internalMessage: InternalMessage) {\r\n if (!this.socket.connected) return;\r\n\r\n this.socket.emit('internalMsg', internalMessage);\r\n this.auth.resetUserSessionTimer();\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ChatRooms, RoomChat } from \"../../../interfaces/chat.interfaces\";\r\nimport { ChatRoomTab, Dropdown } from \"../../../interfaces/global.interfaces\";\r\nimport { AuthService } from \"../auth/auth.service\";\r\nimport { ChatApiService } from \"../api/chat.api.service\";\r\nimport { ToastMessageService } from \"src/app/components/toast-message/toast.message.service\";\r\nimport { ErrorService } from \"../error.service\";\r\nimport { ChatStatus, RoomChatFilterBy, RoomChatOrderBy } from \"../../enums\";\r\nimport { ChatService } from \"./chat.service\";\r\nimport * as _ from \"lodash\";\r\nimport * as moment from \"moment\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChatRoomService {\r\n\r\n private _heading: string = '';\r\n private _chatRooms: ChatRooms[] = [];\r\n private _totalChats: number = 0;\r\n private _chatFilter: RoomChatFilterBy = RoomChatFilterBy.TALK_TO_AN_AGENT;\r\n private _selectedTab: ChatRoomTab | null = null;\r\n private _selectedChats: RoomChat[] = [];\r\n private _chatFilterOptions: Dropdown[] = [\r\n {\r\n label: 'Talk To An Agent',\r\n value: RoomChatFilterBy.TALK_TO_AN_AGENT\r\n },\r\n {\r\n label: 'Chat Date',\r\n value: RoomChatFilterBy.CHAT_DATE\r\n },\r\n {\r\n label: 'Expired Chats',\r\n value: RoomChatFilterBy.EXPIRED_CHATS\r\n },\r\n {\r\n label: 'Active Chats',\r\n value: RoomChatFilterBy.ACTIVE_CHATS\r\n }\r\n ];\r\n\r\n private _orderFilter: RoomChatOrderBy = RoomChatOrderBy.DESCENDING;\r\n private _orderFilterOptions: Dropdown[] = [\r\n {\r\n label: 'Ascending',\r\n value: RoomChatOrderBy.ASCENDING\r\n },\r\n {\r\n label: 'Descending',\r\n value: RoomChatOrderBy.DESCENDING\r\n }\r\n ];\r\n\r\n\r\n public get heading(): string { return this._heading; }\r\n\r\n public get chatRooms(): ChatRooms[] { return this._chatRooms; }\r\n\r\n public get totalChats(): number { return this._totalChats; }\r\n\r\n public get selectedTab(): ChatRoomTab | null { return this._selectedTab; }\r\n\r\n public get selectedChats(): RoomChat[] { return this._selectedChats; }\r\n\r\n public get chatFilter(): RoomChatFilterBy { return this._chatFilter; }\r\n\r\n public get orderFilter(): RoomChatOrderBy { return this._orderFilter; }\r\n\r\n public get orderFilterOptions(): Dropdown[] { return this._orderFilterOptions; }\r\n\r\n public get chatFilterOptions(): Dropdown[] { return this._chatFilterOptions; }\r\n\r\n public set heading(heading: string) { this._heading = heading; }\r\n\r\n public set chatRooms(chatRooms: ChatRooms[]) { this._chatRooms = chatRooms; }\r\n\r\n public set totalChats(totalChats: number) { this._totalChats = totalChats; }\r\n\r\n public set selectedTab(tab: ChatRoomTab | null) { this._selectedTab = tab; }\r\n\r\n public set selectedChats(chatRooms: RoomChat[]) { this._selectedChats = chatRooms; }\r\n\r\n public set chatFilterOptions(chatFilterOptions: Dropdown[]) { this._chatFilterOptions = chatFilterOptions; }\r\n\r\n public set chatFilter(chatFilter: RoomChatFilterBy) { this._chatFilter = chatFilter; }\r\n\r\n public set orderFilter(orderByFiler: RoomChatOrderBy) { this._orderFilter = orderByFiler; }\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private chatApiService: ChatApiService,\r\n private chatService: ChatService,\r\n private error: ErrorService,\r\n private toastMessageService: ToastMessageService) { }\r\n\r\n public async getChatRooms(): Promise {\r\n try {\r\n const resp = await this.chatApiService.getChatRooms();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get chat rooms', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.chatRooms = resp.result;\r\n if (this.chatRooms?.length > 0) {\r\n this.selectedChats = [];\r\n this.calculateChatsInRoom();\r\n this.handleRoomHeading();\r\n }\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get chat rooms', 'toast-message-error');\r\n this.error.handleError('Failed to get chat rooms.', err, 'chat.room.service.getChatRooms()');\r\n }\r\n }\r\n\r\n public handleRemovingChatsFromRoom(chatIds: number[]) {\r\n if (!this.chatRooms) return;\r\n const chatRooms = this.chatRooms;\r\n\r\n for (const chatRoom of chatRooms) {\r\n chatRoom.chats = chatRoom.chats.filter(chat => !chatIds.map(chatId => chatId).includes(chat.chatId));\r\n }\r\n\r\n this.chatRooms = [...chatRooms];\r\n this.handleRoomHeading();\r\n this.calculateChatsInRoom();\r\n }\r\n\r\n public handleRoomHeading() {\r\n let totalChatCount: number = 0;\r\n\r\n this.chatRooms.map((chatRoom) => {\r\n const chats = this.filterChats(chatRoom.chats, this.chatFilter, this.orderFilter);\r\n totalChatCount += chats.length;\r\n });\r\n\r\n this.heading = `${this.authService.user?.selectedProduct?.txt} Chat Rooms (${totalChatCount})`;\r\n }\r\n\r\n public handleChatFilterLabels(roomIndex: number) {\r\n this.selectedTab = {\r\n index: roomIndex,\r\n txt: this.chatRooms[roomIndex].roomName\r\n };\r\n\r\n const activeChatFilterIndex = this.chatFilterOptions.findIndex(chatFilter => chatFilter.value == RoomChatFilterBy.ACTIVE_CHATS);\r\n const expiredChatFilterIndex = this.chatFilterOptions.findIndex(chatFilter => chatFilter.value == RoomChatFilterBy.EXPIRED_CHATS);\r\n const talkToAgentChatFilterIndex = this.chatFilterOptions.findIndex(chatFilter => chatFilter.value == RoomChatFilterBy.TALK_TO_AN_AGENT);\r\n\r\n const activeChats = this.chatRooms[roomIndex].chats.filter(chat => !this.chatService.hasChatExpired(chat.chatExpiryDate));\r\n const expiredChats = this.chatRooms[roomIndex].chats.filter(chat => this.chatService.hasChatExpired(chat.chatExpiryDate));\r\n const talkToAgentChats = this.chatRooms[roomIndex].chats.filter(chat => chat.chatStatusId === ChatStatus.OPEN_BUT_REQUESTED_AGENT);\r\n\r\n this.chatFilterOptions[activeChatFilterIndex].label = `Active Chats (${activeChats.length})`;\r\n this.chatFilterOptions[expiredChatFilterIndex].label = `Expired Chats (${expiredChats.length})`;\r\n this.chatFilterOptions[talkToAgentChatFilterIndex].label = `Talk To An Agent (${talkToAgentChats.length})`;\r\n\r\n //need to do this in order for the dropdown options to trigger a change\r\n this.chatFilterOptions = [...this.chatFilterOptions];\r\n }\r\n\r\n public filterChats(chats: RoomChat[], selectedChatFilter: RoomChatFilterBy, selectedOrderFilter: RoomChatOrderBy): RoomChat[] {\r\n switch (selectedChatFilter) {\r\n case RoomChatFilterBy.CHAT_DATE:\r\n return this.filterByChatDate(chats, selectedOrderFilter);\r\n\r\n case RoomChatFilterBy.EXPIRED_CHATS:\r\n return this.filterByExpiredChats(chats);\r\n\r\n case RoomChatFilterBy.ACTIVE_CHATS:\r\n return this.filterByActiveChats(chats);\r\n\r\n case RoomChatFilterBy.TALK_TO_AN_AGENT:\r\n return this.filterByTalkToAnAgent(chats);\r\n\r\n // other types of filters if they come up with any other ones\r\n default:\r\n return [] as RoomChat[];\r\n }\r\n }\r\n\r\n private filterByChatDate(chats: RoomChat[], selectedOrderFilter: RoomChatOrderBy): RoomChat[] {\r\n chats = _.sortBy(chats, (chat) => {\r\n const insertDate = moment(chat.insertDate).format('YYYY/HH/DD hh:mm a');\r\n const currentDate = moment(new Date()).format('YYYY/HH/DD hh:mm a');\r\n if (insertDate > currentDate) {\r\n return chat;\r\n }\r\n });\r\n //if no selected order by, default to desc\r\n if (!selectedOrderFilter) selectedOrderFilter = RoomChatOrderBy.DESCENDING;\r\n\r\n const orderBy = selectedOrderFilter == RoomChatOrderBy.ASCENDING ? 'asc' : 'desc';\r\n\r\n return _.orderBy(chats, ['insertDate'], [orderBy]);\r\n }\r\n\r\n private filterByExpiredChats(chats: RoomChat[]): RoomChat[] {\r\n return _.filter(chats, (chat) => {\r\n const expired = this.chatService.hasChatExpired(chat.chatExpiryDate);\r\n return expired;\r\n });\r\n }\r\n\r\n private filterByActiveChats(chats: RoomChat[]): RoomChat[] {\r\n return _.filter(chats, (chat) => {\r\n const expired = this.chatService.hasChatExpired(chat.chatExpiryDate);\r\n return !expired;\r\n });\r\n }\r\n\r\n private filterByTalkToAnAgent(chats: RoomChat[]): RoomChat[] {\r\n return _.filter(chats, (chat) => {\r\n return chat.chatStatusId === ChatStatus.OPEN_BUT_REQUESTED_AGENT;\r\n });\r\n }\r\n\r\n public clear() {\r\n this.chatRooms = [];\r\n this.selectedTab = null;\r\n this.heading = '';\r\n this.totalChats = 0;\r\n }\r\n\r\n public calculateChatsInRoom() {\r\n this.chatRooms.map((chatRoom) => {\r\n const chats = this.filterChats(chatRoom.chats, this.chatFilter, this.orderFilter);\r\n chatRoom.roomTabName = `${chatRoom.roomName} (${chats.length})`;\r\n });\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\nimport { ClaimedChatsService } from '../../../services/chats/claimed.chats.service';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { Chat } from '../../../../interfaces/chat.interfaces';\r\nimport { ErrorService } from '../../../services/error.service';\r\n\r\n@Component({\r\n selector: 'add-edit-reference-number-dialog',\r\n templateUrl: './add-edit-reference-number-dialog.component.html',\r\n styleUrls: ['./add-edit-reference-number-dialog.component.scss']\r\n})\r\nexport class AddEditReferenceNumberDialogComponent implements OnInit {\r\n public referenceNumber: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private dialogService: DialogService,\r\n public claimedChatsService: ClaimedChatsService,\r\n private chatApiService: ChatApiService,\r\n private toastMessageService: ToastMessageService,\r\n private error: ErrorService\r\n ) { }\r\n\r\n ngOnInit(): void { this.referenceNumber = this.claimedChatsService.getSelectedClaimChat?.refNo ?? ''; }\r\n \r\n public async updateReferenceNumber(): Promise {\r\n if (!this.claimedChatsService.getSelectedClaimChat) return;\r\n \r\n this.dialogService.showSpinner = true;\r\n try {\r\n const chat: Chat = this.claimedChatsService.getSelectedClaimChat;\r\n const resp = await this.chatApiService.updateChatRefNo(chat.chatId, this.referenceNumber);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to update chat reference number.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n chat.refNo = this.referenceNumber;\r\n this.claimedChatsService.setSelectedClaimChat = { ...chat };\r\n this.dialogRef.close(true);\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to update chat reference number', err, 'add-edit-reference-number-dialog.updateReferenceNumber()');\r\n this.toastMessageService.showToastMessage('Failed to update chat reference number.', 'toast-message-error');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n public cancel() {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

Add/Update Ref Number

\r\n
\r\n \r\n Reference Number\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","\r\n\r\nexport enum Product {\r\n NOVADT_OLD = 1,\r\n KENYA = 4,\r\n UAT = 5,\r\n UAT2 = 6,\r\n SAEX = 7,\r\n NOVADT = 8\r\n}\r\n\r\n//IF YOU ARE GOING TO RENAME THE ENUMS\r\n//BE AWARE THAT SOME OF THESE ENUMS ARE USED IN THE DIALOG COMPONENT HTML\r\nexport enum DialogType {\r\n EDIT_WHATSAPP_USER = 1,\r\n REASSIGN_CHAT = 2,\r\n CHAT_REASSIGNMENT = 3,\r\n LOGGED_TIMED_OUT = 4,\r\n ADD_UPDATE_REFERENCE_NUMBER = 5,\r\n CLOSE_CHAT = 6,\r\n USER_GROUPS = 7,\r\n LOGGED_IN_USERS = 8,\r\n PREVIEW_CHAT_MESSAGES = 9,\r\n LOGOUT_CONFIRMATION = 10,\r\n EDIT_WHATSAPP_CHAT_NOTES = 11,\r\n PREVIEW_CLAIM_CHAT = 12,\r\n BULK_CLAIM_CHAT = 13,\r\n ADD_WHATSAPP_USER = 14\r\n}\r\n\r\nexport enum RoomChatFilterBy {\r\n CHAT_DATE = 1,\r\n EXPIRED_CHATS = 2,\r\n ACTIVE_CHATS = 3,\r\n TALK_TO_AN_AGENT = 4\r\n}\r\n\r\nexport enum RoomChatOrderBy {\r\n ASCENDING = 1,\r\n DESCENDING = 2\r\n}\r\n\r\nexport enum MessageType {\r\n TEMPLATE = 1,\r\n AUTO_RESPONDER = 2,\r\n SYSTEM_USER = 3,\r\n WHATSAPP_USER = 4,\r\n TEMPLATE_RESPONSE = 5,\r\n SAEX_CLOSE_CHAT = 6\r\n}\r\n\r\nexport enum InternalMessageType {\r\n REASSIGN_CHAT = 1,\r\n DISCONNECT = 2,\r\n NOTIFY_USERS_CHAT_CLAIMED = 3,\r\n MESSAGE_STATUS_UPDATE = 4,\r\n CHAT_CLOSE = 6,\r\n USER_LOGGED_CLAIM_CHATS = 8,\r\n ACCEPT_REASSIGNMENT_OF_CHAT = 9,\r\n PRODUCT_CHANGE = 10,\r\n INBOUND_MESSAGE = 11\r\n}\r\n\r\nexport enum ChatStatus {\r\n OPEN = 1,\r\n TIMED_OUT = 2,\r\n CLOSED_FROM_A_SYSTEM_USER = 3,\r\n CLOSED_FROM_AUTO_RESPONDER_BY_WHATSAPP_USER = 4,\r\n CLOSED_BY_THE_SYSTEM = 5,\r\n OPEN_BUT_REQUESTED_AGENT = 6,\r\n CLOSED_FROM_AVECS_LEGAL_ENTITY = 7,\r\n CLOSED_FROM_CLOSE_JOB = 8\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ErrorService } from '../error.service';\r\nimport { environment } from '../../../environments/environment';\r\nimport * as moment from 'moment';\r\nimport { HttpResponse } from '../../../interfaces/result.interfaces';\r\nimport { Products, User } from '../../../interfaces/user.interfaces';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { LoginRequest } from 'src/interfaces/global.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n \r\n private _tokenExpiryTime: any = undefined;\r\n private _sessionValidMins: number = 0;\r\n private _user: User | null = null;\r\n private _isTimedOut: boolean = false;\r\n private _userProducts: Products[] = [];\r\n\r\n public lostConnection: boolean = true;\r\n public reasonLostConnection: string = '';\r\n private loggedInSubject = new BehaviorSubject(false);\r\n public loggedIn = this.loggedInSubject.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private error: ErrorService,\r\n private router: Router\r\n ) {\r\n this.loggedInSubject.next(this.isTokenValid());\r\n this.setupTokenExpirationCheck();\r\n }\r\n \r\n public get user(): User | null { return this._user; }\r\n\r\n public get loginName(): string | null { return this.user?.loginName || null; }\r\n \r\n public get formattedLoginName(): string {\r\n if (this.user && this.user.loginName) {\r\n return this.user.loginName[0].toUpperCase() + this.user.loginName.slice(1);\r\n } else return '';\r\n }\r\n\r\n public get userProducts(): Products[] { return this._userProducts; }\r\n\r\n public get isTimedOut(): boolean { return this._isTimedOut; }\r\n\r\n public get userId(): number | null { return this._user?.id || null; }\r\n\r\n public get token(): string | null { return this._user?.token || null; }\r\n\r\n public get tokenExpiryTime(): any { return this._tokenExpiryTime; }\r\n\r\n public set user(user: User | null) { this._user = user; }\r\n\r\n public set tokenExpiryTime(value: any) { this._tokenExpiryTime = value; }\r\n\r\n public set timedOut(value: boolean) { this._isTimedOut = value; }\r\n\r\n private set setUser(user: User) { this._user = user; }\r\n\r\n public set userProducts(userProducts: Products[]) { this._userProducts = userProducts; }\r\n\r\n public set setProduct(product: Products) {\r\n if (this.user && this.userProducts) {\r\n const existingProduct = this.userProducts.find(p => p.isDefaultProduct == 1);\r\n\r\n //if the existing product id is the same as the product id we are changing to\r\n //don't need to change isDefaultProduct\r\n if (existingProduct?.productId == product.productId) {\r\n this.user.selectedProduct = product;\r\n this.setSessionStorage();\r\n return;\r\n }\r\n \r\n const index = this.userProducts.findIndex(x => x.isDefaultProduct == 1);\r\n if (index >= 0) this.userProducts[index].isDefaultProduct = 0;\r\n \r\n this.user.selectedProduct = product;\r\n this.setSessionStorage();\r\n\r\n const newIndex = this.userProducts.findIndex(x => x.productId == product.productId);\r\n if (newIndex >= 0) this.userProducts[newIndex].isDefaultProduct = 1;\r\n }\r\n }\r\n\r\n public async loginUser(username: string, password: string): Promise {\r\n try {\r\n const requestBody: LoginRequest = {\r\n loginName: username,\r\n password: password\r\n };\r\n\r\n const resp = await this.http.post(`${environment.serverURL}/user/loginUser`, requestBody).toPromise();\r\n if (resp.errorCode === 0) {\r\n this.loggedInSubject.next(true);\r\n this.handleSuccessfulLogin(username, resp);\r\n }\r\n return resp;\r\n }\r\n catch (err) {\r\n this.error.handleError('Failed to login user', err, 'auth.service.loginUser');\r\n throw err;\r\n }\r\n }\r\n\r\n public async regUser(username: string, password: string): Promise {\r\n try {\r\n const requestBody: LoginRequest = {\r\n loginName: username,\r\n password: password\r\n };\r\n\r\n const resp = await this.http.post(`${environment.serverURL}/user/registerUser`, requestBody).toPromise();\r\n if (resp.errorCode === 0) {\r\n this.handleSuccessfulLogin(username, resp);\r\n } else {\r\n this.error.handleError(resp.errorMessage, null, 'AuthService.loginUser');\r\n }\r\n return resp;\r\n }\r\n catch (err) {\r\n this.error.handleError('Failed to register user', err, 'AuthService.regUser');\r\n throw err;\r\n }\r\n }\r\n\r\n private handleSuccessfulLogin(username: string, resp: HttpResponse) {\r\n this.user = {\r\n id: resp.result.userId,\r\n loginName: username,\r\n token: resp.result.sessionId,\r\n selectedProduct: null\r\n };\r\n this._sessionValidMins = resp.result.sessionValidMins;\r\n this.resetUserSessionTimer();\r\n this._isTimedOut = false;\r\n this.setSessionStorage();\r\n }\r\n\r\n public isTokenValid(): boolean {\r\n if (this.user && this.user.token) {\r\n return true;\r\n } else {\r\n const user = this.getSessionStorage();\r\n if (user && user.token) {\r\n this.lostConnection = false;\r\n return true;\r\n }\r\n else return false;\r\n }\r\n }\r\n\r\n public clearUser() {\r\n this.user = null;\r\n this.clearSessionStorage();\r\n this.tokenExpiryTime = undefined;\r\n }\r\n\r\n private clearSessionStorage() {\r\n sessionStorage.removeItem('userId');\r\n sessionStorage.removeItem('loginName');\r\n sessionStorage.removeItem('token');\r\n sessionStorage.removeItem('selectedProduct');\r\n sessionStorage.removeItem('sessionValidMins');\r\n sessionStorage.clear();\r\n }\r\n\r\n private setSessionStorage(): void {\r\n sessionStorage.userId = this.user?.id;\r\n sessionStorage.loginName = this.user?.loginName;\r\n sessionStorage.token = this.user?.token;\r\n sessionStorage.selectedProduct = JSON.stringify(this.user?.selectedProduct);\r\n sessionStorage.sessionValidMins = this._sessionValidMins;\r\n }\r\n\r\n private getSessionStorage(): User | null {\r\n this.setUser = {\r\n id: +sessionStorage.userId,\r\n loginName: sessionStorage.loginName,\r\n token: sessionStorage.token,\r\n selectedProduct: sessionStorage.selectedProduct ? JSON.parse(sessionStorage.selectedProduct) as Products : null\r\n };\r\n this._sessionValidMins = +sessionStorage.sessionValidMins;\r\n\r\n return this.user;\r\n }\r\n\r\n public logout() {\r\n this.loggedInSubject.next(false);\r\n this.clearUser();\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n public resetUserSessionTimer() {\r\n if (!this.user) return;\r\n this.tokenExpiryTime = moment(new Date).add(this._sessionValidMins, 'm').toDate();\r\n }\r\n\r\n private setupTokenExpirationCheck() {\r\n setInterval(() => {\r\n if (this.user && this.user.token && this.tokenExpiryTime) {\r\n const duration = moment.duration(moment(this.tokenExpiryTime).diff(moment(new Date()).toDate()));\r\n this.timedOut = duration.asSeconds() < 0;\r\n if (this.isTimedOut) {\r\n this.logout();\r\n }\r\n }\r\n }, 15000);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService {\r\n\r\n private messages: string[] = [];\r\n private error: Error[] = [];\r\n private stack: string[] = [];\r\n\r\n private displaySource = new BehaviorSubject(false);\r\n private alertSource = new BehaviorSubject(\"\");\r\n private alertSourceHeader = new BehaviorSubject(\"\");\r\n\r\n constructor() { }\r\n\r\n public handleError(message: string, err: Error | unknown, caller: string) {\r\n this.messages.push(message);\r\n this.error.push(err as Error);\r\n this.stack.push(caller);\r\n console.error(message);\r\n console.error(err);\r\n this.showMessage(message, err as Error);\r\n }\r\n\r\n public showNotification(heading: string, message: string) {\r\n console.log(heading, '-> ', message);\r\n this.showMessage(heading, message);\r\n }\r\n\r\n public getHistoricalErrors() {\r\n return {\r\n messages: this.messages,\r\n error: this.error,\r\n stack: this.stack\r\n };\r\n }\r\n\r\n public clearErrors() {\r\n this.messages = [];\r\n this.error = [];\r\n this.stack = [];\r\n }\r\n\r\n private showMessage(heading: string, message: string | Error) {\r\n this.alertSourceHeader.next(heading);\r\n this.alertSource.next(message);\r\n this.displaySource.next(true);\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { UserApiService } from '../../services/api/user.api.service';\r\nimport { ToastMessageService } from '../../components/toast-message/toast.message.service';\r\nimport { Contacts } from '../../../interfaces/user.interfaces';\r\nimport { Location } from '@angular/common';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { DialogType } from '../../../app/enums';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogComponent } from '../../components/dialog/dialog.component';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'app-contacts',\r\n templateUrl: './contacts.component.html',\r\n styleUrls: ['./contacts.component.scss']\r\n})\r\nexport class ContactsComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild(MatPaginator) public paginator: MatPaginator | null = null;\r\n @ViewChild(MatSort) public sort: MatSort | null = null;\r\n public whatsappUsers: MatTableDataSource = new MatTableDataSource([]);\r\n public displayedColumns: string[] = ['firstName', 'lastName', 'whatsappUserNumber', 'lastChatDate', 'notes', 'editUser'];\r\n\r\n public showSpinner: boolean = false;\r\n\r\n constructor(\r\n private userApiService: UserApiService,\r\n private toastMessageService: ToastMessageService,\r\n private location: Location,\r\n private error: ErrorService,\r\n public dialog: MatDialog\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n await this.refresh();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.whatsappUsers.paginator = this.paginator;\r\n this.whatsappUsers.sort = this.sort;\r\n }\r\n\r\n public async refresh(): Promise {\r\n this.showSpinner = true;\r\n await this.getAllWhatsappUsers();\r\n this.showSpinner = false;\r\n }\r\n\r\n private async getAllWhatsappUsers(): Promise {\r\n try {\r\n const resp = await this.userApiService.getContacts();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get whatsapp users', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else this.whatsappUsers.data = resp.result;\r\n } catch (err) {\r\n this.error.handleError('Failed to get whatsapp users.', err, 'contacts.getAllWhatsappUsers()');\r\n this.toastMessageService.showToastMessage('Failed to get whatsapp users', 'toast-message-error');\r\n }\r\n }\r\n\r\n public addWhatsappUserDialog(): void {\r\n this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.ADD_WHATSAPP_USER },\r\n autoFocus: false\r\n });\r\n }\r\n\r\n public editWhatsappUserDialog(whatsappUser: Contacts): void {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: {\r\n dialogTypeId: DialogType.EDIT_WHATSAPP_USER,\r\n whatsappUserId: whatsappUser.whatsappUserId,\r\n firstName: whatsappUser.firstName,\r\n lastName: whatsappUser.lastName\r\n },\r\n autoFocus: false \r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: Contacts | undefined) => {\r\n if (!result) return;\r\n\r\n whatsappUser.firstName = result.firstName;\r\n whatsappUser.lastName = result.lastName;\r\n });\r\n }\r\n\r\n public searchWhatsappUsers(search: string) {\r\n this.whatsappUsers.filter = search.trim().toLowerCase();\r\n }\r\n\r\n public goBack() {\r\n this.location.back();\r\n }\r\n}","
\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n search\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
First Name{{ whatsappUser.firstName }}Last Name{{ whatsappUser.lastName }}Number{{ whatsappUser.whatsappUserNumber }}Last Chat Date{{ whatsappUser.lastChatDate }}Notes{{ whatsappUser.notes }}Actions\r\n \r\n
\r\n\r\n
No\r\n WhatsApp Users found
\r\n\r\n \r\n \r\n \r\n
\r\n","export const environment = {\r\n production: false,\r\n\r\n // live\r\n socketURL: \"https://avecscomms.com:3022\",\r\n serverURL: \"https://avecscomms.com:3021\",\r\n\r\n //newuat\r\n // socketURL: \"http://whatsapp.marsserver.net:3022\",\r\n // serverURL: \"http://whatsapp.marsserver.net:3021\",\r\n\r\n // local\r\n // socketURL: \"http://localhost:3022\",\r\n // serverURL: \"http://localhost:3021\",\r\n\r\n //template broadcasting dev tool to show up\r\n //set to false when deploying\r\n devMode: false\r\n};","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogType } from '../../enums';\r\nimport { DialogService } from './dialog.service';\r\nimport { Dialog } from '../../../interfaces/dialog.interfaces';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss']\r\n})\r\nexport class DialogComponent {\r\n public get dialogType(): typeof DialogType { return DialogType; }\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: Dialog\r\n ) { }\r\n \r\n public close(): void { this.dialogRef.close(); }\r\n}","\r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { Injectable } from \"@angular/core\";\r\nimport * as moment from \"moment\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChatService {\r\n\r\n private _chatWindowLeft: string = '';\r\n\r\n public set chatWindowLeft(chatWindowLeft: string) { this._chatWindowLeft = chatWindowLeft; }\r\n public get chatWindowLeft(): string { return this._chatWindowLeft; }\r\n\r\n constructor() { }\r\n\r\n public hasChatExpired(chatExpiryDate: Date): boolean {\r\n const currentDate = moment();\r\n const formattedExpiryDate = moment(new Date(chatExpiryDate));\r\n const hasExpired: boolean = currentDate.isAfter(formattedExpiryDate);\r\n\r\n return hasExpired;\r\n }\r\n\r\n //you can pass in the whatsapp user details (first name, last name, number) and will return the correct formatting\r\n //or you can pass in the system user which will just be first name\r\n public getFormattedName(firstName: string, lastName?: string, whatsappUserNumber?: string): string | undefined {\r\n if (firstName && lastName) return `${this.capitalizeEachWord(firstName)} ${this.capitalizeEachWord(lastName)}`;\r\n else if (firstName) return this.capitalizeEachWord(firstName);\r\n else return whatsappUserNumber;\r\n }\r\n\r\n public capitalizeEachWord(word: string): string {\r\n const regex = /(\\b[a-z](?!\\s))/g;\r\n return word.replace(regex, function (x) { return x.toUpperCase(); });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { AuthService } from './auth/auth.service';\r\nimport { ErrorService } from './error.service';\r\nimport { environment } from '../../environments/environment';\r\nimport { HttpResponse } from '../../interfaces/result.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BaseApiService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private auth: AuthService,\r\n private error: ErrorService\r\n ) { }\r\n\r\n public async get(caller: string, route: string): Promise {\r\n try {\r\n if (!this.auth.token) return null;\r\n const headers = new HttpHeaders()\r\n .set('token', this.auth.token)\r\n .set('user-id', `${this.auth.userId}`)\r\n .set('user-name', `${this.auth.loginName}`)\r\n .set('content-type', 'application/json')\r\n .set('accept-language', ['en-US', 'en', 'q=0.9'])\r\n .set('accept', ['application/json', 'text/plain', '*/*']);\r\n \r\n const resp = await this.http.get(`${environment.serverURL}/${route}`, { headers: headers }).toPromise();\r\n if (resp.errorCode == 999) this.auth.logout();\r\n else this.auth.resetUserSessionTimer();\r\n return resp;\r\n }\r\n catch (err) {\r\n this.error.handleError(`${caller} failed`, err, caller);\r\n }\r\n return null;\r\n }\r\n\r\n public async post(caller: string, route: string, json: any): Promise {\r\n try {\r\n if (!this.auth.token) return null;\r\n const headers = new HttpHeaders()\r\n .set('token', this.auth.token)\r\n .set('user-id', `${this.auth.userId}`)\r\n .set('user-name', `${this.auth.loginName}`)\r\n .set('content-type', 'application/json')\r\n .set('accept-language', ['en-US', 'en', 'q=0.9'])\r\n .set('accept', ['application/json', 'text/plain', '*/*']);\r\n \r\n const resp = await this.http.post(`${environment.serverURL}/${route}`, json, { headers: headers }).toPromise();\r\n if (resp.errorCode == 999) this.auth.logout();\r\n else this.auth.resetUserSessionTimer();\r\n return resp;\r\n }\r\n catch (err) {\r\n this.error.handleError(`${caller} failed`, err, caller);\r\n }\r\n return null;\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { ClaimedChatsService } from '../../services/chats/claimed.chats.service';\r\n\r\n@Component({\r\n selector: 'app-chats-landing-page',\r\n templateUrl: './chats-landing-page.component.html',\r\n styleUrls: ['./chats-landing-page.component.scss']\r\n})\r\nexport class ChatsLandingPageComponent {\r\n\r\n constructor(\r\n public claimedChatsService: ClaimedChatsService // used in html\r\n ) { }\r\n}","
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { ClaimedChatsService } from '../../../services/chats/claimed.chats.service';\r\nimport { DialogService } from '../dialog.service';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { UserApiService } from 'src/app/services/api/user.api.service';\r\nimport { EditWhatsappUserDialog } from '../../../../interfaces/dialog.interfaces';\r\nimport { ErrorService } from '../../../services/error.service';\r\n\r\n@Component({\r\n selector: 'edit-whatsapp-user-dialog',\r\n templateUrl: './edit-whatsapp-user-dialog.component.html',\r\n styleUrls: ['./edit-whatsapp-user-dialog.component.scss']\r\n})\r\nexport class EditWhatsappUserDialogComponent implements OnInit {\r\n\r\n public firstName: string = '';\r\n public lastName: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private dialogService: DialogService,\r\n public claimedChatsService: ClaimedChatsService,\r\n private userApiService: UserApiService,\r\n private toastMessageService: ToastMessageService,\r\n private error: ErrorService,\r\n @Inject(MAT_DIALOG_DATA) public data: EditWhatsappUserDialog\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.firstName = this.data.firstName;\r\n this.lastName = this.data.lastName;\r\n }\r\n\r\n public async updateWhatsAppUser(): Promise {\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const resp = await this.userApiService.updateWhatsappUserDetails(this.data.whatsappUserId, this.firstName, this.lastName);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to update WhatsApp User details.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n this.data.firstName = this.firstName;\r\n this.data.lastName = this.lastName;\r\n this.dialogRef.close(this.data);\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to update WhatsApp User details.', 'toast-message-error');\r\n this.error.handleError('Failed to update WhatsApp User details.', err, 'edit-whatsapp-user-dialog.updateWhatsAppUser()');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n public cancel() {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

Edit Whatsapp User

\r\n \r\n First Name\r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogService } from '../dialog.service';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { ClaimedChatsService } from '../../../services/chats/claimed.chats.service';\r\nimport { ErrorService } from '../../../services/error.service';\r\n\r\n@Component({\r\n selector: 'add-edit-chat-notes-dialog',\r\n templateUrl: './add-edit-chat-notes-dialog.component.html',\r\n styleUrls: ['./add-edit-chat-notes-dialog.component.scss']\r\n})\r\nexport class AddEditChatNotesDialogComponent implements OnInit {\r\n\r\n public notes: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private dialogService: DialogService,\r\n public claimedChatsService: ClaimedChatsService,\r\n private chatApiService: ChatApiService,\r\n private toastMessageService: ToastMessageService,\r\n private error: ErrorService\r\n ) { }\r\n\r\n ngOnInit(): void { this.notes = this.claimedChatsService.getSelectedClaimChat?.notes ?? ''; }\r\n\r\n public async saveNotes(): Promise {\r\n if (!this.claimedChatsService.getSelectedClaimChat) return;\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const resp = await this.chatApiService.updateChatNotes(this.claimedChatsService.getSelectedClaimChat.chatId, this.notes);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to save notes.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n this.claimedChatsService.getSelectedClaimChat.notes = this.notes;\r\n this.dialogRef.close();\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to save chat notes.', 'toast-message-error');\r\n this.error.handleError('Failed to save chat notes', err, 'add-edit-chat-notes-dialog.saveNotes()');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

Add / Edit Notes

\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { UserApiService } from '../../services/api/user.api.service';\r\nimport { ToastMessageService } from '../../components/toast-message/toast.message.service';\r\nimport { SystemUser } from '../../../interfaces/user.interfaces';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'app-online-users',\r\n templateUrl: './online-users.component.html',\r\n styleUrls: ['./online-users.component.scss']\r\n})\r\nexport class OnlineUsersComponent implements OnInit {\r\n\r\n public onlineUsers: SystemUser[] = [];\r\n public showSpinner: boolean = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private userApiService: UserApiService,\r\n private error: ErrorService,\r\n private toastMessageService: ToastMessageService\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n await this.refreshOnlineUsers();\r\n }\r\n\r\n public async refreshOnlineUsers(): Promise {\r\n this.showSpinner = true;\r\n await this.getOnlineUsers();\r\n this.showSpinner = false;\r\n }\r\n\r\n private async getOnlineUsers(): Promise {\r\n try {\r\n const resp = await this.userApiService.getOnlineUsers();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get online users', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else this.onlineUsers = resp.result;\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get online users', 'toast-message-error');\r\n this.error.handleError('Failed to get online users.', err, 'online-users.getOnlineUsers()');\r\n }\r\n }\r\n\r\n public goBack() {\r\n this.location.back();\r\n }\r\n}","
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
0\">\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '../../../interfaces/result.interfaces';\r\nimport { BaseApiService } from '../base-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserApiService {\r\n\r\n private route: string = 'user/';\r\n\r\n constructor(private base: BaseApiService) { }\r\n\r\n public async getUserProducts(): Promise {\r\n return await this.base.get('user.api.service.getUserProducts', `${this.route}getUserProducts`);\r\n }\r\n\r\n public async getOnlineUsersInGroup(groupId: number): Promise {\r\n return await this.base.get('user.api.service.getOnlineUsersInGroup', `${this.route}getOnlineUsersInGroup?groupId=${groupId}`);\r\n }\r\n\r\n public async getAllGroups(producId: number): Promise {\r\n return await this.base.get('user.api.service.getAllGroups', `${this.route}getAllGroups?productId=${producId}`);\r\n }\r\n\r\n public async getContacts(): Promise {\r\n return await this.base.get('user.api.service.getContacts', `${this.route}getContacts`);\r\n }\r\n \r\n public async getWhatsAppUsers(): Promise {\r\n return await this.base.get('user.api.service.getAllWhatsappUsers', `${this.route}getAllWhatsappUsers`);\r\n }\r\n\r\n public async getOnlineUsers(): Promise {\r\n return await this.base.get(\"user.api.service.getOnlineUsers\", `${this.route}getOnlineUsers`);\r\n }\r\n\r\n public async getSystemUsers(): Promise {\r\n return await this.base.get('user.api.service.getSystemUsers', `${this.route}getSystemUsers`);\r\n }\r\n \r\n public async getUsersGroups(): Promise {\r\n return await this.base.get('user.api.service.getUsersGroups', `${this.route}getUsersGroups`);\r\n }\r\n\r\n public async updateWhatsappUserDetails(whatsappUserId: number, firstName: string, lastName: string): Promise {\r\n const payload = {\r\n whatsappUserId: whatsappUserId,\r\n firstName: firstName,\r\n lastName: lastName\r\n };\r\n\r\n return await this.base.post('user.api.service.updateWhatsappUserDetails', `${this.route}updateWhatsappUserDetails`, payload);\r\n }\r\n\r\n public async addWhatsappUser(firstname: string, lastName: string, cellPhoneNumber: string): Promise {\r\n const payload = {\r\n firstName: firstname,\r\n lastName: lastName,\r\n cellPhoneNumber: cellPhoneNumber\r\n };\r\n\r\n return await this.base.post('user.api.service.addWhatsappUser', `${this.route}addWhatsappUser`, payload);\r\n }\r\n \r\n public async changeProduct(productId: number): Promise {\r\n const payload = {\r\n productId: productId\r\n };\r\n\r\n return await this.base.post('user.api.service.changeProduct', `${this.route}changeProduct`, payload);\r\n }\r\n}","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport * as moment from 'moment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Message } from '../../../interfaces/message.interfaces';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ToastMessageService } from '../toast-message/toast.message.service';\r\n\r\n@Component({\r\n selector: 'message-item',\r\n templateUrl: './message-item.component.html',\r\n styleUrls: ['./message-item.component.scss']\r\n})\r\nexport class MessageItemComponent implements OnInit, OnChanges {\r\n\r\n @Input() public message: Message | null = null;\r\n @Input() public messageMatch: boolean = false; //used for if the user is searching for a message and the message matches\r\n @Input() public searchTerm: string | null = null;\r\n @Output() public previewImage: EventEmitter = new EventEmitter();\r\n\r\n public messageBody: SafeHtml | null = null;\r\n public messageTimeStamp: string = '';\r\n public messageStatusIcon: string = '';\r\n public messageStatusIconClass: string = '';\r\n public isMessageMedia: boolean = false;\r\n public isMessageAFile: boolean = false;\r\n public isMessageAnImage: boolean = false;\r\n public isMessageAudio: boolean = false;\r\n public isMessageVideo: boolean = false;\r\n public imagePreview: boolean = false;\r\n private currentModifiedMessageBody: string = '';\r\n private unmodifiedMessageBody: string = '';\r\n\r\n constructor(\r\n private chatService: ChatService,\r\n public messageService: MessageService,\r\n private sanitizer: DomSanitizer,\r\n private toastMessageService: ToastMessageService,\r\n private http: HttpClient\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.handleMessageSentBy();\r\n this.makeTextBold();\r\n this.handleMessageTimeStamp();\r\n this.handleMessageFileType();\r\n }\r\n\r\n ngOnChanges(): void { this.highlightText(); }\r\n\r\n private handleMessageFileType() {\r\n if (!this.message?.mediaUrl) return;\r\n\r\n const result = this.messageService.isMessageAFile(this.message.extension);\r\n if (!result) return;\r\n this.isMessageMedia = result.isMessageMedia;\r\n this.isMessageAnImage = result.isMessageAnImage;\r\n this.isMessageAFile = result.isMessageAFile;\r\n this.isMessageVideo = result.isMessageVideo;\r\n this.isMessageAudio = result.isMessageAudio;\r\n }\r\n\r\n private handleMessageSentBy() {\r\n if (!this.message) return;\r\n\r\n if (this.message.direction == 1 && this.message.systemUser) {\r\n return this.chatService.getFormattedName(this.message.systemUser) ?? '';\r\n } else {\r\n return this.chatService.getFormattedName(this.message.whatsappUserFirstName, this.message.whatsappUserLastName, this.message.whatsappUserNumber) ?? '';\r\n }\r\n }\r\n\r\n private makeTextBold() {\r\n if (!this.message) return;\r\n\r\n const boldRegex = /\\*(.*?)\\*/g;\r\n const italicRegex = /_(.*?)_/g;\r\n\r\n let formattedMessage = this.message.body.replace(boldRegex, '$1');\r\n formattedMessage = this.convertLinksToHtml(formattedMessage);\r\n // formattedMessage = formattedMessage.replace(italicRegex, '$1');\r\n\r\n this.currentModifiedMessageBody = formattedMessage;\r\n this.messageBody = this.sanitizer.bypassSecurityTrustHtml(formattedMessage);\r\n this.unmodifiedMessageBody = formattedMessage;\r\n }\r\n\r\n private convertLinksToHtml(text: string): string {\r\n if (!this.message) return '';\r\n\r\n const linkRegex = /(https?:\\/\\/\\S+)/gi;\r\n const textColour: string = this.message.direction ? 'white' : 'black';\r\n return text.replace(linkRegex, (match) => `${match}`);\r\n }\r\n\r\n private highlightText(): void {\r\n\r\n if (!this.message) return;\r\n\r\n if (this.messageMatch && this.searchTerm) {\r\n const highlightText = this.highlight(this.searchTerm, this.unmodifiedMessageBody);\r\n if (highlightText !== this.currentModifiedMessageBody) {\r\n this.messageBody = this.sanitizer.bypassSecurityTrustHtml(highlightText);\r\n this.currentModifiedMessageBody = highlightText;\r\n }\r\n } else if (!this.messageMatch && this.currentModifiedMessageBody !== this.message.body) {\r\n this.currentModifiedMessageBody = this.message.body;\r\n this.makeTextBold();\r\n }\r\n }\r\n\r\n private highlight(search: string, text: string): string {\r\n const regex = new RegExp(search.toLowerCase().trim(), 'gi');\r\n return text.replace(regex, (match) => `${match}`);\r\n }\r\n\r\n public convertHttpResponseToBase64() {\r\n if (!this.message || !this.message.mediaUrl || !this.message.mimeType) return;\r\n\r\n try {\r\n this.http.get(this.message.mediaUrl, { responseType: \"blob\" }).subscribe(blob => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = async (event: any) => {\r\n const base64 = event.target.result.replace(`data:${this.message?.mimeType};base64,`, '');\r\n if (!this.message?.fileName || !this.message.mimeType) return;\r\n this.save(this.message.fileName, base64, this.message.mimeType);\r\n };\r\n reader.onerror = (event: any) => {\r\n this.toastMessageService.showToastMessage('Failed to download file.', 'toast-message-error');\r\n };\r\n }, (err: any) => {\r\n this.toastMessageService.showToastMessage('Failed to download file.', 'toast-message-error');\r\n });\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to download file.', 'toast-message-error');\r\n }\r\n }\r\n\r\n private save(name: string, base64: string, mimeType: string) {\r\n const blob = this.base64ToBlob(base64, 512, mimeType);\r\n\r\n const objectURL = window.URL.createObjectURL(blob);\r\n\r\n const downloadLink = document.createElement('a');\r\n //set the link's href to the blob's url\r\n downloadLink.href = objectURL;\r\n //set the download attribute using the document name\r\n downloadLink.download = name;\r\n\r\n //append the download link to the documents body\r\n document.body.appendChild(downloadLink);\r\n //automatically click on the download link so it opens up in a new tab for the user\r\n downloadLink.click();\r\n //remove the download link from the document's body to clean up\r\n document.body.removeChild(downloadLink);\r\n }\r\n\r\n private base64ToBlob(b64Data: string, sliceSize: number = 512, type: string) {\r\n let byteCharacters = atob(b64Data);\r\n let byteArrays: Uint8Array[] = [];\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n let slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n let byteNumbers = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n let byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n return new Blob(byteArrays, { type: type });\r\n }\r\n\r\n public openFile() { window.open(this.message?.mediaUrl); }\r\n\r\n private handleMessageTimeStamp(): void { if (this.message?.sendDate) this.messageTimeStamp = moment(new Date(this.message.sendDate)).format('HH:mm a'); }\r\n}","
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n {{ message.friendlyName }}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ messageService.handleMessageStatusIcon(message.sendDate, message.readDate, message.deliveredDate, message.undeliveredDate).messageStatusIcon }}\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ToastMessageService } from '../../components/toast-message/toast.message.service';\r\nimport { UserApiService } from '../../services/api/user.api.service';\r\nimport { Dropdown } from '../../../interfaces/global.interfaces';\r\nimport { Contacts as Contact } from '../../../interfaces/user.interfaces';\r\nimport { Location } from '@angular/common';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport { TemplateApiService } from '../../services/api/template.api.service';\r\nimport { Template, TemplateParam } from '../../../interfaces/template.interfaces';\r\nimport * as moment from 'moment';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'app-template-manager',\r\n templateUrl: './template-manager.component.html',\r\n styleUrls: ['./template-manager.component.scss']\r\n})\r\nexport class TemplateManagerComponent implements OnInit {\r\n\r\n public selectedTemplate: Template | undefined | null = null;\r\n public templates: Template[] = [];\r\n public templateDropdownOptions: Dropdown[] = [];\r\n public templateParams: TemplateParam[] | null = null;\r\n public selectedContact: Contact | undefined | null = null;\r\n public contacts: Contact[] = [];\r\n public contactDropdownOptions: Dropdown[] = [];\r\n\r\n public showSpinner: boolean = false;\r\n public sendingTemplate: boolean = false;\r\n\r\n constructor(\r\n private userApiService: UserApiService,\r\n private templateApiService: TemplateApiService,\r\n private toastMessageService: ToastMessageService,\r\n private chatService: ChatService,\r\n private error: ErrorService,\r\n private location: Location,\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n this.showSpinner = true;\r\n await this.getAllContacts();\r\n this.showSpinner = false;\r\n }\r\n\r\n private async getAllContacts(): Promise {\r\n try {\r\n const resp = await this.userApiService.getContacts();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get contacts', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.contacts = resp.result;\r\n this.contactDropdownOptions = [];\r\n resp.result.map((user: Contact) => {\r\n this.contactDropdownOptions.push({\r\n value: user,\r\n label: this.chatService.getFormattedName(user.firstName, user.lastName, user.whatsappUserNumber) ?? user.whatsappUserNumber\r\n });\r\n });\r\n await this.getAllTemplates();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get chat rooms.', err, 'template-manager.getAllContacts()');\r\n this.toastMessageService.showToastMessage('Failed to get contacts', 'toast-message-error');\r\n }\r\n }\r\n \r\n private async getAllTemplates(): Promise {\r\n try {\r\n const resp = await this.templateApiService.getAllTemplates();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get templates', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.templates = resp.result;\r\n this.templateDropdownOptions = [];\r\n resp.result.map((template: Template) => {\r\n this.templateDropdownOptions.push({\r\n value: template,\r\n label: template.templateName\r\n });\r\n });\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get templates.', err, 'template-manager.getAllTemplates()');\r\n this.toastMessageService.showToastMessage('Failed to get templates', 'toast-message-error');\r\n }\r\n }\r\n\r\n public onContactSelected(contact: Contact) {\r\n this.selectedContact = this.contacts?.find(c => c.whatsappUserId === contact.whatsappUserId);\r\n }\r\n\r\n public async getTemplateParams(template: Template) {\r\n if (!template) {\r\n this.selectedTemplate = null;\r\n this.templateParams = null;\r\n return;\r\n }\r\n try {\r\n const resp = await this.templateApiService.getTemplateParams(template.templateId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get template params', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.templateParams = resp.result;\r\n this.selectedTemplate = this.templates.find(t => t.templateId === template.templateId);\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get templates params.', err, 'template-manager.getTemplateParams()');\r\n this.toastMessageService.showToastMessage('Failed to get template params', 'toast-message-error');\r\n }\r\n }\r\n\r\n public async sendTemplate() {\r\n this.sendingTemplate = true;\r\n try {\r\n if (!this.selectedTemplate || !this.templateParams || !this.selectedContact) return;\r\n\r\n const replacedTemplateBody = this.findAndReplaceTemplateBody(this.selectedTemplate.body, this.templateParams);\r\n if (!replacedTemplateBody) return;\r\n\r\n this.selectedTemplate.body = replacedTemplateBody;\r\n \r\n const resp = await this.templateApiService.sendTemplateToWhatsappUser(this.selectedTemplate, this.selectedContact);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to send template', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n const sentTo = this.chatService.getFormattedName(this.selectedContact.firstName, this.selectedContact.lastName, this.selectedContact.whatsappUserNumber);\r\n this.toastMessageService.showToastMessage(`Templated message has been sent to ${sentTo}`, 'toast-message-success');\r\n this.clear();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to send template.', err, 'template-manager.sendTemplate()');\r\n this.toastMessageService.showToastMessage('Failed to send template', 'toast-message-error');\r\n }\r\n this.sendingTemplate = false;\r\n }\r\n\r\n public getVariableValueOrVariableName(variableName: string): string {\r\n const param = this.templateParams?.find(p => p.variableName === variableName);\r\n if (param?.value) {\r\n if (param.variableType == 'date') return moment(param.value).format('yyyy/MM/DD');\r\n return param.value;\r\n } else {\r\n return `#${variableName.trim()}#`;\r\n }\r\n }\r\n\r\n private findAndReplaceTemplateBody(body: string, templateParams: TemplateParam[]): string | null {\r\n try {\r\n for (const param of templateParams) {\r\n const name = param.variableName;\r\n const type = param.variableType;\r\n let value = param.value;\r\n\r\n //if there is a new template and the type doesn't exist here add it \r\n //can format the value however needed\r\n //for future, could have a template param type with enums so we know the type of param it is\r\n if (type == 'date') {\r\n value = moment(value).format('YYYY/MM/DD');\r\n } else if (type == 'datetime') {\r\n value = moment(value).format('YYYY/MM/DD hh:mm a');\r\n } else {\r\n throw new Error(`Template parm not implemented on ui. templateId: ${param.templateId} parmId: ${param.id} type: ${type}`);\r\n }\r\n body = body.replace('#' + name + '#', value);\r\n }\r\n return body;\r\n } catch (err) {\r\n this.error.handleError('Failed to find and replace template body.', err, 'template-manager.findAndReplaceTemplateBody()');\r\n this.toastMessageService.showToastMessage('Failed to do find and replace for the template', 'toast-message-error');\r\n }\r\n return null;\r\n }\r\n\r\n private clear() {\r\n this.selectedTemplate = null;\r\n this.templateParams = null;\r\n this.selectedContact = null;\r\n }\r\n\r\n public goBack() {\r\n this.location.back();\r\n }\r\n}","
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n

\r\n Template message\r\n

\r\n\r\n \r\n\r\n \r\n\r\n

= 1\" class=\"title\">\r\n Replace the fields\r\n

\r\n\r\n
\r\n
\r\n \r\n \r\n {{ templateParam.display }}\r\n \r\n \r\n\r\n \r\n {{ templateParam.display }}\r\n \r\n \r\n\r\n \r\n {{ templateParam.display }}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{ templateParam.display }}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { Dropdown } from '../../../interfaces/global.interfaces';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'drop-down',\r\n templateUrl: './drop-down.component.html',\r\n styleUrls: ['./drop-down.component.scss']\r\n})\r\nexport class DropDownComponent implements OnInit, OnChanges {\r\n\r\n @Input() public filter: boolean = false;\r\n @Input() public showClear: boolean = false;\r\n @Input() public disabled: boolean = false;\r\n @Input() public placeHolder: string = '';\r\n @Input() public filterPlaceHolder?: string;\r\n @Input() public options: Dropdown[] = [];\r\n @Input() public selectedDropDown: any;\r\n @Output() public onDropdownOptionSelect: EventEmitter = new EventEmitter();\r\n\r\n private _originalOptions: Dropdown[] = [];\r\n private previousSearch: string = '';\r\n private filterChanged = new Subject();\r\n\r\n public get originalOptions(): Dropdown[] { return this._originalOptions; }\r\n public set originalOptions(options: Dropdown[]) { this._originalOptions = options; };\r\n public get filteredOptions(): Dropdown[] { return this.options; }\r\n public set filteredOptions(options: Dropdown[]) { this.options = options; }\r\n public filterSearch: string = '';\r\n\r\n @ViewChild('select', { static: true }) select: any;\r\n @ViewChild('filterInput') filterInput: ElementRef | null = null;\r\n \r\n constructor() { this.filterChanged.pipe(distinctUntilChanged()).subscribe(filter => this.filterDropdownOptions(filter)); }\r\n\r\n ngOnInit() {\r\n this.processOptions();\r\n this.preventSpaceBarSelectingDropdownOption();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes && changes.options && this.originalOptions != changes?.options?.currentValue) {\r\n this.originalOptions = changes.options.currentValue;\r\n }\r\n }\r\n\r\n public dropDownOptionSelect(event: MatSelectChange) {\r\n this.onDropdownOptionSelect.emit(event.value);\r\n }\r\n\r\n public onFilter() {\r\n //if nothing when filtering, set filteredOptions back to the original options array\r\n if (!this.filterSearch) {\r\n // this.originalOptions = [...this.originalOptions];\r\n this.filteredOptions = [...this.originalOptions];\r\n }\r\n\r\n if (this.filterSearch !== this.previousSearch) {\r\n this.filterChanged.next(this.filterSearch);\r\n this.previousSearch = this.filterSearch;\r\n }\r\n }\r\n\r\n //auto focus when opening the dropdown\r\n public focusInput() {\r\n if (!this.filterInput || !this.filterInput.nativeElement) return;\r\n this.filterInput.nativeElement.focus();\r\n }\r\n\r\n private processOptions() {\r\n //remove all extra spaces in the label property\r\n this.options = this.options.map(option => ({\r\n ...option,\r\n label: option.label.replace(/\\s+/g, ' ').trim()\r\n }));\r\n }\r\n\r\n private preventSpaceBarSelectingDropdownOption() {\r\n //preventing the space bar selecting a dropdown option\r\n this.select._handleKeydown = (event: KeyboardEvent) => {\r\n if (event.key === ' ') return;\r\n if (!this.select.disabled) {\r\n this.select.panelOpen ? this.select._handleOpenKeydown(event) : this.select._handleClosedKeydown(event);\r\n }\r\n };\r\n }\r\n\r\n private filterDropdownOptions(filter: string) { this.filteredOptions = this.options.filter(option => option.label.toLowerCase().includes(filter.toLowerCase())); }\r\n}","\r\n {{placeHolder}}\r\n \r\n \r\n
\r\n \r\n

No options found

\r\n
\r\n \r\n
{{ option.label }}
\r\n
\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\nimport { UserApiService } from '../../../services/api/user.api.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { ErrorService } from '../../../services/error.service';\r\nimport { HttpResponse } from '../../../../interfaces/result.interfaces';\r\n\r\n@Component({\r\n selector: 'add-whatsapp-user-dialog',\r\n templateUrl: './add-whatsapp-user-dialog.component.html',\r\n styleUrls: ['./add-whatsapp-user-dialog.component.scss']\r\n})\r\nexport class AddWhatsappUserDialogComponent {\r\n\r\n public firstName: string = '';\r\n public lastName: string = '';\r\n public cellPhoneNumber: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private dialogService: DialogService,\r\n private userApiService: UserApiService,\r\n private toastMessageService: ToastMessageService,\r\n private error: ErrorService\r\n ) { }\r\n\r\n public async addWhatsappUser(): Promise {\r\n const canAddNewWhatsAppUser = this.canAddNewWhatsAppUser();\r\n if (canAddNewWhatsAppUser.errorCode !== 0) {\r\n this.toastMessageService.showToastMessage(canAddNewWhatsAppUser.errorMessage, 'toast-message-error');\r\n return;\r\n }\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const resp = await this.userApiService.addWhatsappUser(this.firstName, this.lastName, this.cellPhoneNumber);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to add whatsapp user.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n this.dialogRef.close();\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to add whatsapp user.', 'toast-message-error');\r\n this.error.handleError('Failed to add whatsapp user', err, 'add-whatsapp-user-dialog.addWhatsappUser()');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n private canAddNewWhatsAppUser(): HttpResponse {\r\n const splitArr = this.cellPhoneNumber.split('+');\r\n\r\n //if the length is one there is no '+'\r\n if (splitArr.length == 1) {\r\n return {\r\n errorCode: -1,\r\n errorMessage: `Please put a '+' infront of the number`\r\n };\r\n }\r\n //not a number\r\n else if (!+splitArr[1].trim()) {\r\n return {\r\n errorCode: -1,\r\n errorMessage: 'The cell phone number is not a valid number'\r\n };\r\n }\r\n else return { errorCode: 0, errorMessage: '' };\r\n }\r\n\r\n public canAddWhatsAppUser() {\r\n if (this.lastName && this.cellPhoneNumber && this.firstName) return false;\r\n else if (this.lastName && !this.cellPhoneNumber) return true;\r\n else if (this.lastName && this.cellPhoneNumber) return true;\r\n else if (!this.cellPhoneNumber) return true;\r\n else return false;\r\n }\r\n\r\n public cancel() {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

Add Whatsapp User

\r\n \r\n First Name\r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n Number\r\n phone\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Message } from '../../interfaces/message.interfaces';\r\nimport { ChatService } from './chats/chat.service';\r\nimport { ProductService } from './products.service';\r\nimport { ClaimedChatsService } from './chats/claimed.chats.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\r\n private notification: Notification | null = null;\r\n\r\n constructor(\r\n private chatService: ChatService,\r\n private claimedChatService: ClaimedChatsService,\r\n private productService: ProductService\r\n ) { }\r\n\r\n public messageReceivedNotification(message: Message) {\r\n const whatsappUserName = this.chatService.getFormattedName(message.whatsappUserFirstName, message.whatsappUserLastName, message.whatsappUserNumber);\r\n const options: NotificationOptions = {\r\n body: `${whatsappUserName}\\n${message.body}`,\r\n icon: this.productService.smallLogo ?? '',\r\n dir: 'auto',\r\n data: {\r\n chatId: message.chatId\r\n },\r\n };\r\n\r\n if (message.mediaUrl) options.image = message.mediaUrl;\r\n\r\n this.notification = new Notification('Whatsapp', options);\r\n this.notification.onclick = () => {\r\n const chatIndex = this.claimedChatService.getClaimedChats.findIndex(chat => chat.chatId === message.chatId);\r\n if (chatIndex === -1) return;\r\n\r\n this.claimedChatService.setSelectedClaimChat = this.claimedChatService.getClaimedChats[chatIndex];\r\n if(this.claimedChatService.getSelectedClaimChat) this.claimedChatService.getSelectedClaimChat.chatSelected = true;\r\n };\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { AuthService } from '../auth/auth.service';\r\nimport * as moment from 'moment';\r\nimport { Chat, ClaimedChats } from '../../../interfaces/chat.interfaces';\r\nimport { ChatService } from './chat.service';\r\nimport { Message } from '../../../interfaces/message.interfaces';\r\nimport { ToastMessageService } from '../../components/toast-message/toast.message.service';\r\nimport { MenuOptions } from '../../../interfaces/global.interfaces';\r\nimport { BrowserService } from '../browser.service';\r\nimport { ChatRoomService } from './chat.room.service';\r\nimport { ErrorService } from '../error.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ClaimedChatsService {\r\n\r\n private _chatsHeading: string = 'My Claimed Chats';\r\n private _search: string = '';\r\n private _claimedChats: Chat[] = [];\r\n private _claimedChatsOriginal: Chat[] = [];\r\n private _selectedClaimChat: Chat | null = null;\r\n private _hasChatExpired: boolean = false;\r\n private _claimedChatsPanel: ClaimedChats[] | null = null;\r\n private _claimedChatIdFromRoom: number = 0;\r\n public filterChatsOptions: MenuOptions[] = [\r\n {\r\n icon: 'chat_bubble',\r\n label: 'All Claimed Chats',\r\n method: this.filterByAllClaimedChats.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'how_to_reg',\r\n label: 'My Unread messages',\r\n method: this.filterByMyUnreadMessages.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'done',\r\n label: 'All Unread messages',\r\n method: this.filterByAllUnreadMessages.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'portrait', //portrait\r\n label: 'My Active Chats',\r\n method: this.filterByMyActiveChats.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'question_answer',\r\n label: 'All Active Chats',\r\n method: this.filterByAllActiveChats.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'voice_over_off',\r\n label: 'My Expired Chats',\r\n method: this.filterByMyExpiredChats.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'volume_off',\r\n label: 'All Expired Chats',\r\n method: this.filterByAllExpiredChats.bind(this),\r\n disabled: false\r\n }\r\n ];\r\n\r\n private _selectedFilterChatOption: MenuOptions | null = null;\r\n\r\n public get selectedFilterChatOption(): MenuOptions | null { return this._selectedFilterChatOption; }\r\n\r\n public get search(): string { return this._search; }\r\n\r\n public get chatsHeading(): string { return this._chatsHeading; }\r\n \r\n public get getClaimedChats(): Chat[] { return this._claimedChats; }\r\n \r\n public get getClaimedChatsOriginal(): Chat[] { return this._claimedChatsOriginal; }\r\n\r\n public get getSelectedClaimChat(): Chat | null { return this._selectedClaimChat; }\r\n\r\n public get hasChatExpired(): boolean { return this._hasChatExpired; }\r\n\r\n public get claimedChatIdFromRoom() { return this._claimedChatIdFromRoom; };\r\n\r\n public get claimedChatsPanel() { return this._claimedChatsPanel; }\r\n\r\n public get selectedClaimChatWindowLeft(): string {\r\n if (!this.getSelectedClaimChat) return '';\r\n\r\n const currentDate = moment();\r\n const formattedExpiryDate = moment(new Date(this.getSelectedClaimChat.chatExpiryDate));\r\n const hasExpired: boolean = currentDate.isAfter(formattedExpiryDate);\r\n\r\n if (hasExpired) {\r\n this.hasChatExpired = true;\r\n return '';\r\n }\r\n\r\n this.hasChatExpired = false;\r\n\r\n const remainingTimeSeconds = formattedExpiryDate.diff(currentDate, 'seconds');\r\n const remainingTimeFormatted = moment.utc(moment.duration(remainingTimeSeconds, \"seconds\").asMilliseconds()).format(\"HH:mm\");\r\n\r\n return `Time Left: ${remainingTimeFormatted}`;\r\n }\r\n\r\n public get claimedChatsPanelChatCount(): number {\r\n let count = 0;\r\n this.claimedChatsPanel?.map(gc => gc.groupChatsLength).map(c => count += c);\r\n return count;\r\n }\r\n\r\n public set hasChatExpired(value: boolean) { this._hasChatExpired = value; }\r\n\r\n public set selectedFilterChatOption(menuOption: MenuOptions | null) { this._selectedFilterChatOption = menuOption; }\r\n\r\n public set chatsHeading(chatsHeading: string) { this._chatsHeading = chatsHeading; }\r\n\r\n public set search(search: string) { this._search = search; }\r\n\r\n public set setClaimedChats(chats: Chat[]) { this._claimedChats = chats; }\r\n\r\n public set setClaimedChatsOriginal(chats: Chat[]) { this._claimedChatsOriginal = chats; }\r\n\r\n public set setSelectedClaimChat(chat: Chat | null) { this._selectedClaimChat = chat; };\r\n\r\n public set claimedChatIdFromRoom(chatId: number) { this._claimedChatIdFromRoom = chatId; }\r\n \r\n public set claimedChatsPanel(claimedChatsPanel: ClaimedChats[] | null) { this._claimedChatsPanel = claimedChatsPanel; }\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private chatService: ChatService,\r\n private chatRoomService: ChatRoomService,\r\n private browserService: BrowserService,\r\n private error: ErrorService,\r\n private toastMessageService: ToastMessageService\r\n ) { }\r\n \r\n public updateClaimedChatMessages(chatId: number, messages: Message[]) {\r\n const orignalClaimeChatsIndex = this.getClaimedChatsOriginal.findIndex(c => c.chatId === chatId);\r\n const claimeChatsIndex = this.getClaimedChats.findIndex(c => c.chatId === chatId);\r\n\r\n this.getClaimedChatsOriginal[orignalClaimeChatsIndex].messages = messages;\r\n this.getClaimedChats[claimeChatsIndex].messages = messages;\r\n \r\n if (this.getSelectedClaimChat?.chatId === chatId) {\r\n this.getSelectedClaimChat.messages = messages;\r\n }\r\n }\r\n\r\n public handleRemovingClaimedChats(chatIds: number[]): void {\r\n if (!this.getClaimedChatsOriginal) return;\r\n this.setClaimedChatsOriginal = this.getClaimedChatsOriginal.filter(chat => !chatIds.includes(chat.chatId));\r\n\r\n //if the chat that was closed from another user\r\n //make the selected claim chat null\r\n if (this.getSelectedClaimChat) {\r\n const foundChat = chatIds.find(chat => chat === this.getSelectedClaimChat?.chatId);\r\n if (foundChat) this.setSelectedClaimChat = null;\r\n }\r\n\r\n this.applyChatFilterIfThereIsAFilter();\r\n this.handleClaimedChatsPanel();\r\n }\r\n\r\n public applyChatFilterIfThereIsAFilter() {\r\n if (this.selectedFilterChatOption) {\r\n this.selectedFilterChatOption.method.call(this);\r\n this.chatsHeading = this.selectedFilterChatOption.label;\r\n } else {\r\n this.filterByMyClaimedChats();\r\n this.chatsHeading = 'My Claimed Chats';\r\n }\r\n }\r\n\r\n public filterChatOption(option: MenuOptions): void {\r\n if (this.selectedFilterChatOption == option) {\r\n this.selectedFilterChatOption = null;\r\n this.filterByMyClaimedChats();\r\n this.handleClaimedChatsPanel();\r\n this.chatsHeading = 'My Claimed Chats';\r\n } else {\r\n this.selectedFilterChatOption = option;\r\n option.method.call(this);\r\n this.handleClaimedChatsPanel();\r\n this.chatsHeading = option.label;\r\n }\r\n this.resetReassignedChats();\r\n }\r\n\r\n public filterByMyClaimedChats() {\r\n const claimedChats = this.getLoggedInUserClaimedChats();\r\n this.setClaimedChats = claimedChats;\r\n }\r\n\r\n public filterByAllClaimedChats() { this.setClaimedChats = this._claimedChatsOriginal; }\r\n \r\n public filterByMyUnreadMessages() {\r\n const loggedInUserClaimedChats = this.getLoggedInUserClaimedChats();\r\n this.setClaimedChats = loggedInUserClaimedChats.filter(cc => cc.unreadMessages && cc.unreadMessages > 0);\r\n }\r\n\r\n public filterByAllUnreadMessages() {\r\n const allClaimedChats = this._claimedChatsOriginal;\r\n this.setClaimedChats = allClaimedChats.filter(cc => cc.unreadMessages && cc.unreadMessages > 0);\r\n }\r\n\r\n public filterByMyActiveChats() {\r\n const loggedInUserClaimedChats = this.getLoggedInUserClaimedChats();\r\n const chats = loggedInUserClaimedChats.filter(cc => !this.chatService.hasChatExpired(cc.chatExpiryDate));\r\n this.setClaimedChats = chats;\r\n }\r\n\r\n public filterByAllActiveChats() {\r\n const allClaimedChats = this._claimedChatsOriginal;\r\n const chats = allClaimedChats.filter(cc => !this.chatService.hasChatExpired(cc.chatExpiryDate));\r\n this.setClaimedChats = chats;\r\n }\r\n\r\n public filterByMyExpiredChats() {\r\n const loggedInUserClaimedChats = this.getLoggedInUserClaimedChats();\r\n const chats = loggedInUserClaimedChats.filter(cc => this.chatService.hasChatExpired(cc.chatExpiryDate));\r\n this.setClaimedChats = chats;\r\n }\r\n\r\n public filterByAllExpiredChats() {\r\n const allClaimedChats = this._claimedChatsOriginal;\r\n const chats = allClaimedChats.filter(cc => this.chatService.hasChatExpired(cc.chatExpiryDate));\r\n this.setClaimedChats = chats;\r\n }\r\n\r\n public handleClaimedChatsPanel(): void {\r\n if (!this.getClaimedChats) return;\r\n\r\n //order the chats\r\n this.orderClaimedChatsByLatestMessage();\r\n\r\n let claimedChatsPanel: ClaimedChats[] = [];\r\n\r\n for (const chat of this.getClaimedChats) {\r\n //get an array of group ids from our group chats\r\n const groupIds = claimedChatsPanel.map(gc => gc.groupId);\r\n\r\n //group does not exist\r\n //so we can go ahead and add all the chats to this group\r\n if (!groupIds.includes(chat.groupId)) {\r\n //get all chats with the current chat group id\r\n let gc = this.getClaimedChats.filter(cc => cc.groupId === chat.groupId);\r\n\r\n const groupExpanded = this.claimedChatsPanel?.find(gc => gc.groupId === chat.groupId)?.groupExpanded;\r\n\r\n claimedChatsPanel.push({\r\n groupId: chat.groupId,\r\n groupName: `${chat.groupName} (${gc.length})`,\r\n groupChatsLength: gc.length,\r\n groupExpanded: groupExpanded ?? true,\r\n chats: gc\r\n });\r\n }\r\n }\r\n\r\n this.claimedChatsPanel = claimedChatsPanel;\r\n }\r\n\r\n public handleChatsReassignToUser(reassignedChats: Chat[], userId: number, loginName: string) {\r\n const claimedChatOrig = this.getClaimedChatsOriginal;\r\n\r\n for (const chat of claimedChatOrig) {\r\n const index = reassignedChats.findIndex(c => c.chatId === chat.chatId);\r\n\r\n chat.reassigned = false;\r\n\r\n if (index === -1) continue;\r\n\r\n chat.claimedBy = loginName;\r\n chat.claimedByUserId = userId;\r\n chat.reassigned = true;\r\n chat.chatSelected = false;\r\n chat.messages = [...reassignedChats[index].messages]\r\n }\r\n\r\n this.setClaimedChatsOriginal = [...claimedChatOrig];\r\n this.applyChatFilterIfThereIsAFilter();\r\n this.handleClaimedChatsPanel();\r\n }\r\n\r\n public handleClosingAndReassigningChatToGroup() {\r\n const index = this.getClaimedChats.findIndex(cc => cc.chatId == this.getSelectedClaimChat?.chatId);\r\n if (index >= 0) {\r\n //remove chat from claimed chats\r\n this.getClaimedChats.splice(index, 1);\r\n this.getClaimedChatsOriginal.splice(index, 1);\r\n this.setSelectedClaimChat = null;\r\n //redo the sort and group by\r\n this.handleClaimedChatsPanel();\r\n }\r\n }\r\n\r\n public handleUserDisconnect(userId: number, loginName: string) {\r\n this.setClaimedChatsOriginal = this.getClaimedChatsOriginal?.filter(cc => cc.claimedByUserId !== userId);\r\n this.setClaimedChats = this.getClaimedChats?.filter(cc => cc.claimedByUserId !== userId);\r\n this.resetReassignedChats();\r\n this.handleClaimedChatsPanel();\r\n this.toastMessageService.showToastMessage(`${loginName} Logged/Time out`, 'toast-message-info');\r\n }\r\n\r\n public handleUserLoggedClaimedChats(chats: Chat[], loginName: string) {\r\n this.toastMessageService.showToastMessage(`${loginName} logged in`, 'toast-message-info');\r\n const chatIds: number[] = chats.map(c => c.chatId);\r\n this.chatRoomService.handleRemovingChatsFromRoom(chatIds);\r\n\r\n if (!this.getClaimedChatsOriginal || !this.getClaimedChats) return;\r\n\r\n for (const chat of chats) {\r\n const foundOrigChat = this.getClaimedChatsOriginal.find(c => c.chatId === chat.chatId);\r\n const foundClaimedChat = this.getClaimedChats.find(c => c.chatId === chat.chatId);\r\n\r\n //if this chat does not exist in either the original or claimed chats array add chat\r\n if (!foundOrigChat) this.getClaimedChatsOriginal.push(chat);\r\n if (!foundClaimedChat) this.getClaimedChats.push(chat);\r\n \r\n const foundGroup = this.claimedChatsPanel?.find(gc => gc.groupId === chat.groupId);\r\n\r\n //group doesn't exist so add it\r\n if (!foundGroup) {\r\n this.claimedChatsPanel?.push({\r\n groupId: chat.groupId,\r\n groupName: `${chat.groupName}`,\r\n groupChatsLength: 0,\r\n groupExpanded: true,\r\n chats: [],\r\n });\r\n }\r\n\r\n this.claimedChatsPanel?.map(gc => {\r\n if (gc.groupId === chat.groupId) {\r\n const found = gc.chats.find(ch => ch.chatId === chat.chatId);\r\n //if the chat does not exist in the group then add it\r\n if (!found) {\r\n gc.chats.push(chat);\r\n gc.groupName = `${chat.groupName} (${gc.chats.length})`;\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!this.selectedFilterChatOption) {\r\n this.filterByMyClaimedChats();\r\n } else {\r\n this.selectedFilterChatOption.method.call(this);\r\n }\r\n\r\n this.handleClaimedChatsPanel();\r\n }\r\n\r\n //user has changed product\r\n //need to remove all the chats from the claimed chats\r\n public handleProductChange(userId: number, loginName: string, productName: string) {\r\n this.toastMessageService.showToastMessage(`${loginName} changed to ${productName}`, 'toast-message-info');\r\n this.setClaimedChatsOriginal = this.getClaimedChatsOriginal.filter(cc => cc.claimedByUserId !== userId);\r\n this.setClaimedChats = this.getClaimedChats.filter(cc => cc.claimedByUserId !== userId);\r\n this.handleClaimedChatsPanel();\r\n }\r\n\r\n public handleInboundWhatsappMessage(msg: Message) {\r\n const message: Message = {\r\n messageId: msg.messageId,\r\n body: msg.body,\r\n chatId: msg.chatId,\r\n direction: msg.direction,\r\n whatsappUserFirstName: msg.whatsappUserFirstName,\r\n whatsappUserLastName: msg.whatsappUserLastName,\r\n sendDate: msg.sendDate,\r\n whatsappUserNumber: msg.whatsappUserNumber,\r\n mediaUrl: msg.mediaUrl,\r\n extension: msg.extension,\r\n fileName: msg.fileName,\r\n friendlyName: msg.friendlyName\r\n };\r\n\r\n const chatIndex = this.getClaimedChats.findIndex(cc => cc.chatId === msg.chatId);\r\n\r\n if (chatIndex == -1) return;\r\n\r\n const chat = this.getClaimedChats[chatIndex];\r\n\r\n if (this.browserService.browserFocused && this.getSelectedClaimChat?.chatId === msg.chatId) {\r\n //don't increase\r\n } else if (this.getSelectedClaimChat?.chatId !== msg.chatId || (!this.browserService.browserFocused && this.getSelectedClaimChat?.chatId === msg.chatId)) {\r\n //increased unread messages count\r\n if (!chat.unreadMessages) chat.unreadMessages = 1;\r\n else chat.unreadMessages++;\r\n }\r\n\r\n //update chat expiry date\r\n chat.chatExpiryDate = new Date(moment(new Date()).add(1, 'day').format(\"YYYY/MM/DD HH:mm:ss\"));\r\n //add new inbound message\r\n chat.messages.push(message);\r\n\r\n //refresh selected claimed chat messages\r\n if (this.getSelectedClaimChat?.chatId === msg.chatId) {\r\n this.getSelectedClaimChat.messages = [...chat.messages];\r\n }\r\n\r\n this.handleClaimedChatsPanel();\r\n }\r\n\r\n public searchClaimedChats(): void {\r\n try {\r\n this.resetReassignedChats();\r\n const filters = ['firstName', 'lastName', 'whatsappUserNumber', 'refNo'];\r\n\r\n //not searching\r\n if (!this.search) {\r\n //reset claimed chats to original\r\n this.setClaimedChats = [...this.getClaimedChatsOriginal];\r\n this.applyChatFilterIfThereIsAFilter();\r\n this.handleClaimedChatsPanel();\r\n return;\r\n }\r\n\r\n this.applyChatFilterIfThereIsAFilter();\r\n\r\n //filtering\r\n this.setClaimedChats = _.filter(this.getClaimedChats, (item) => {\r\n return _.some(filters, (filter) => {\r\n const value = item[filter];\r\n const searchValue = this.search.toLowerCase().trim();\r\n return (value && value.toLowerCase().includes(searchValue));\r\n });\r\n });\r\n\r\n this.handleClaimedChatsPanel();\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to search chats.', 'toast-message-error');\r\n this.error.handleError('Failed to search chats.', err, 'claimed.chats.service.searchClaimedChats()');\r\n }\r\n }\r\n\r\n public clearSearch(): void {\r\n if (!this.search) return;\r\n \r\n this.search = '';\r\n this.searchClaimedChats();\r\n }\r\n \r\n private orderClaimedChatsByLatestMessage(): void {\r\n this.setClaimedChats = _.orderBy(this.getClaimedChats, (chat) => {\r\n const latestMessage = _.maxBy(chat.messages, 'sendDate');\r\n return latestMessage?.sendDate ? new Date(latestMessage.sendDate).getTime() : 0;\r\n }, 'desc');\r\n }\r\n\r\n private getLoggedInUserClaimedChats(): Chat[] {\r\n if (!this.authService?.user || !this.authService?.user?.loginName) return [];\r\n const claimedChats = this.getClaimedChatsOriginal.filter(cc => cc.claimedBy.toLowerCase() === this.authService?.user?.loginName?.toLowerCase());\r\n return claimedChats;\r\n }\r\n\r\n private resetReassignedChats(): void {\r\n //resset all chats reassigned to false\r\n this.getClaimedChats.forEach(c => {\r\n if (c.reassigned !== false) c.reassigned = false;\r\n });\r\n }\r\n}","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { Injectable } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { AuthService } from './auth/auth.service';\r\nimport { Product } from '../enums';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductService {\r\n\r\n private _bigLogo: string | null = null;\r\n private _smallLogo: string | null = null;\r\n\r\n public get smallLogo(): string | null {\r\n switch (this.authService.user?.selectedProduct?.productId) {\r\n case Product.NOVADT:\r\n case Product.NOVADT_OLD:\r\n this.smallLogo = 'assets/product-logos/novadt-small.png';\r\n break;\r\n \r\n case Product.SAEX:\r\n this.smallLogo = 'assets/product-logos/saex-small.svg';\r\n break;\r\n \r\n default:\r\n this.smallLogo = 'assets/product-logos/default-small.png';\r\n break;\r\n }\r\n return this._smallLogo;\r\n }\r\n\r\n public get bigLogo(): string | null {\r\n switch (this.authService.user?.selectedProduct?.productId) {\r\n case Product.NOVADT:\r\n case Product.NOVADT_OLD:\r\n this.bigLogo = 'assets/product-logos/novadt-big.svg';\r\n break;\r\n \r\n case Product.SAEX:\r\n this.bigLogo = 'assets/product-logos/saex-big.svg';\r\n break;\r\n \r\n default:\r\n this.bigLogo = 'assets/product-logos/default-big.png';\r\n break;\r\n }\r\n return this._bigLogo;\r\n }\r\n\r\n public set bigLogo(logo: string | null) { this._bigLogo = logo; }\r\n\r\n public set smallLogo(logo: string | null) { this._smallLogo = logo; }\r\n\r\n constructor(private authService: AuthService) { }\r\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { AuthService } from './services/auth/auth.service';\r\nimport { SocketService } from './services/socket.service';\r\nimport { ProductService } from './services/products.service';\r\nimport { ChatApiService } from './services/api/chat.api.service';\r\nimport { PermissionsService } from './services/permissions.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n public authService: AuthService,\r\n private permissionService: PermissionsService,\r\n private chatApiService: ChatApiService,\r\n public productService: ProductService, //used in app component html\r\n public socketService: SocketService) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.loggedIn.subscribe(async (loggedIn) => {\r\n //socket not connected and the user is logged in (refresh browser)\r\n if (!this.socketService.connected && loggedIn) {\r\n this.socketService.notConnectedReason = 'Establishing connection to server. Please wait';\r\n await this.chatApiService.claimChats();\r\n this.socketService.setup();\r\n }\r\n //user logged in\r\n else if (loggedIn) {\r\n this.socketService.setup();\r\n }\r\n });\r\n this.permissionService.requestNotificationsPermissions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.socketService.logout();\r\n }\r\n}","
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Inject } from '@angular/core';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogService } from '../dialog.service';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { CloseChatDialog } from '../../../../interfaces/dialog.interfaces';\r\nimport { ErrorService } from '../../../services/error.service';\r\n\r\n@Component({\r\n selector: 'close-chat-dialog',\r\n templateUrl: './close-chat-dialog.component.html',\r\n styleUrls: ['./close-chat-dialog.component.scss']\r\n})\r\nexport class CloseChatDialogComponent {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private dialogService: DialogService,\r\n private chatApiService: ChatApiService,\r\n private toastMessageService: ToastMessageService,\r\n private error: ErrorService,\r\n @Inject(MAT_DIALOG_DATA) public data: CloseChatDialog\r\n ) { }\r\n\r\n public async closeChat() {\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const resp = await this.chatApiService.closeChats(this.data.chats);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to close chat.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n this.dialogRef.close(true);\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to close chat.', 'toast-message-error');\r\n this.error.handleError('Failed to close chat', err, 'close-chat-dialog.closeChat()');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n cancel(): void {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

Are you sure you want to close the chat?

\r\n \r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport * as _ from 'lodash';\r\nimport { ErrorService } from '../error.service';\r\n\r\n@Injectable()\r\nexport class AuthManager implements CanActivate {\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private router: Router,\r\n private errorService: ErrorService\r\n ) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree {\r\n try {\r\n if (this.auth.isTokenValid()) return true;\r\n\r\n this.auth.clearUser;\r\n this.router.navigate(['/login']);\r\n return false;\r\n } catch (err) {\r\n this.router.navigate(['/login']);\r\n this.errorService.handleError('Failed to check if can activate', err, 'AuthManager.canActive()');\r\n return false;\r\n }\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { ChatApiService } from '../../services/api/chat.api.service';\r\nimport { ClaimedChatsService } from '../../services/chats/claimed.chats.service';\r\nimport { Dropdown, MenuOptions } from '../../../interfaces/global.interfaces';\r\nimport { AuthService } from '../../services/auth/auth.service';\r\nimport { Chat } from '../../../interfaces/chat.interfaces';\r\nimport * as _ from 'lodash';\r\nimport { UserApiService } from '../../services/api/user.api.service';\r\nimport { ProductService } from '../../services/products.service';\r\nimport { ToastMessageService } from '../toast-message/toast.message.service';\r\nimport { Products } from '../../../interfaces/user.interfaces';\r\nimport { DialogType } from '../../enums';\r\nimport { DialogComponent } from '../dialog/dialog.component';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'chats-panel',\r\n templateUrl: './chats-panel.component.html',\r\n styleUrls: ['./chats-panel.component.scss']\r\n})\r\nexport class ChatsPanelComponent implements OnInit {\r\n\r\n public search: string = '';\r\n public selectedProduct: Products | undefined | null = null;\r\n public multiModeOptions: MenuOptions[] = [\r\n {\r\n icon: 'cancel',\r\n label: 'Close Chat',\r\n method: this.openDialog.bind(this, DialogType.CLOSE_CHAT),\r\n disabled: false\r\n },\r\n {\r\n icon: 'reply',\r\n label: 'Reassign Chat',\r\n method: this.openDialog.bind(this, DialogType.REASSIGN_CHAT),\r\n disabled: false\r\n }\r\n ];\r\n public selectedClaimedChats: Chat[] = [];\r\n public productOptions: Dropdown[] = [];\r\n \r\n public multiSelectMode: boolean = false;\r\n public overlay: boolean = false;\r\n public showSpinner: boolean = false;\r\n\r\n constructor(\r\n private chatApiService: ChatApiService,\r\n public claimedChatsService: ClaimedChatsService,\r\n public authService: AuthService,\r\n public productService: ProductService,\r\n private error: ErrorService,\r\n public dialog: MatDialog,\r\n private userApiService: UserApiService,\r\n private toastMessageService: ToastMessageService\r\n ) { }\r\n\r\n async ngOnInit() { await this.pageLoad(); }\r\n\r\n private async pageLoad(): Promise {\r\n this.showSpinner = true;\r\n await this.getUserProducts();\r\n this.showSpinner = false;\r\n }\r\n \r\n private async getUserProducts(): Promise {\r\n try {\r\n const resp = await this.userApiService.getUserProducts();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get products', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.authService.userProducts = resp.result;\r\n const selectedProduct = this.authService.userProducts.find(x => x.isDefaultProduct == 1);\r\n if (!selectedProduct) return;\r\n this.selectedProduct = selectedProduct;\r\n this.authService.setProduct = selectedProduct;\r\n this.productOptions = this.authService.userProducts.map((up: Products) => {\r\n return {\r\n label: up.txt,\r\n value: up\r\n };\r\n });\r\n await this.getClaimedChats();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get products', err, 'chats-panel.getUserProducts()');\r\n this.toastMessageService.showToastMessage('Failed to get products', 'toast-message-error');\r\n }\r\n }\r\n\r\n private async getClaimedChats(): Promise {\r\n try {\r\n const resp = await this.chatApiService.getClaimedChats();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get claimed chats', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.handleChatsWithUnreadMessages(resp.result);\r\n this.claimedChatsService.applyChatFilterIfThereIsAFilter();\r\n this.claimedChatsService.handleClaimedChatsPanel();\r\n this.autoSelectClaimedChat();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get claimed chats', err, 'chats-panel.getClaimedChats()');\r\n this.toastMessageService.showToastMessage('Failed to get claimed chats', 'toast-message-error');\r\n }\r\n }\r\n\r\n //before we reassign the new incoming chats to the claimed chats we check a few things first\r\n //if there are no claimed chats we set claimed chats\r\n //but if there are claimed chats we check if there are any chats with unread messages\r\n //if there are unread messages we preserve them\r\n //if not we override claimed chats\r\n private handleChatsWithUnreadMessages(chats: Chat[]) {\r\n if (!this.claimedChatsService.getClaimedChats) {\r\n this.claimedChatsService.setClaimedChats = [...chats];\r\n this.claimedChatsService.setClaimedChatsOriginal = [...chats];\r\n return;\r\n }\r\n\r\n const unreadMessages = this.claimedChatsService.getClaimedChatsOriginal.filter(c => c.unreadMessages && c.unreadMessages > 0);\r\n //no unread messages\r\n if (!unreadMessages || unreadMessages.length === 0) {\r\n this.claimedChatsService.setClaimedChats = [...chats];\r\n this.claimedChatsService.setClaimedChatsOriginal = [...chats];\r\n return;\r\n }\r\n\r\n //there are unread messages so we need to preserve them\r\n chats.forEach(c => {\r\n unreadMessages.map(u => {\r\n if (c.chatId === u.chatId) {\r\n c.unreadMessages = u.unreadMessages;\r\n }\r\n });\r\n });\r\n\r\n this.claimedChatsService.setClaimedChats = [...chats];\r\n this.claimedChatsService.setClaimedChatsOriginal = [...chats];\r\n }\r\n\r\n public chatSelected(chat: Chat) {\r\n if (this.multiSelectMode) {\r\n if (chat.chatSelected) {\r\n this.selectedClaimedChats.push(chat);\r\n } else {\r\n const index = this.selectedClaimedChats.indexOf(chat);\r\n this.selectedClaimedChats.splice(index, 1);\r\n }\r\n } else {\r\n //if there is currently a selected claim chat\r\n //and the current claimed chat chat id is not the new selected chat id\r\n if (this.claimedChatsService.getSelectedClaimChat && this.claimedChatsService.getSelectedClaimChat.chatId !== chat.chatId) {\r\n //find the chat and set chat selected to false \r\n //because a new chat has been selected\r\n this.claimedChatsService.claimedChatsPanel?.map(cg => cg.chats.map(chat => {\r\n if (chat.chatId == this.claimedChatsService.getSelectedClaimChat?.chatId) {\r\n chat.chatSelected = false;\r\n chat.unreadMessages = null;\r\n };\r\n }));\r\n }\r\n this.claimedChatsService.setSelectedClaimChat = chat;\r\n }\r\n }\r\n\r\n private autoSelectClaimedChat() {\r\n const chatId = this.claimedChatsService.claimedChatIdFromRoom ? this.claimedChatsService?.claimedChatIdFromRoom : this.claimedChatsService.getSelectedClaimChat?.chatId;\r\n const chat = this.claimedChatsService.getClaimedChats.find(chat => chat.chatId === chatId);\r\n if (!chat) return;\r\n chat.chatSelected = true;\r\n this.claimedChatsService.setSelectedClaimChat = chat;\r\n this.claimedChatsService.claimedChatIdFromRoom = 0;\r\n }\r\n\r\n public multiSelectModeChange() {\r\n this.multiSelectMode = !this.multiSelectMode;\r\n if (!this.multiSelectMode) {\r\n // set chat selected to false when we go off multi-select mode\r\n this.claimedChatsService.claimedChatsPanel?.map(cg => cg.chats.map((chat) => chat.chatSelected = false));\r\n this.selectedClaimedChats = [];\r\n } else {\r\n if (this.selectedClaimedChats.length == 0 && this.claimedChatsService.getSelectedClaimChat) {\r\n this.selectedClaimedChats.push(this.claimedChatsService.getSelectedClaimChat);\r\n this.claimedChatsService.setSelectedClaimChat = null;\r\n }\r\n }\r\n }\r\n\r\n public async productChange(productChange: Products) {\r\n this.showSpinner = true;\r\n try {\r\n const resp = await this.userApiService.changeProduct(productChange.productId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to change product', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage('Product Changed', 'toast-message-success');\r\n this.claimedChatsService.setClaimedChatsOriginal = resp.result;\r\n this.claimedChatsService.setClaimedChats = resp.result;\r\n this.claimedChatsService.setSelectedClaimChat = null;\r\n this.claimedChatsService.claimedChatsPanel = null;\r\n this.authService.setProduct = productChange;\r\n this.selectedProduct = productChange;\r\n this.claimedChatsService.applyChatFilterIfThereIsAFilter();\r\n this.claimedChatsService.handleClaimedChatsPanel();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to change product', err, 'chats-panel.productChange()');\r\n this.toastMessageService.showToastMessage('Failed to change product', 'toast-message-error');\r\n }\r\n this.showSpinner = false;\r\n }\r\n\r\n private openDialog(dialogTypeId: DialogType): void {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId, chats: this.selectedClaimedChats },\r\n autoFocus: false\r\n });\r\n\r\n switch (dialogTypeId) {\r\n case DialogType.CLOSE_CHAT: this.handleClosingOfDialog(dialogRef); break;\r\n case DialogType.REASSIGN_CHAT: this.handleReassignChatDialog(dialogRef); break;\r\n default: return;\r\n }\r\n }\r\n \r\n private handleClosingOfDialog(dialogRef: MatDialogRef) {\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (!result) return;\r\n\r\n const chatIds: number[] = this.selectedClaimedChats.map(chat => chat.chatId);\r\n this.claimedChatsService.handleRemovingClaimedChats(chatIds);\r\n this.selectedClaimedChats = [];\r\n this.multiSelectMode = false;\r\n });\r\n }\r\n\r\n private handleReassignChatDialog(dialogRef: MatDialogRef): void {\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (!result) return;\r\n this.selectedClaimedChats = [];\r\n });\r\n }\r\n}","\r\n\r\n
\r\n
\r\n
\r\n
\r\n \"Avecs\"\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Search Chats\r\n search\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n No\r\n chats\r\n \r\n \r\n \r\n \r\n {{ gc.groupName }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n private _showSpinner: boolean = false;\r\n\r\n public get showSpinner(): boolean { return this._showSpinner; }\r\n\r\n public set showSpinner(value: boolean) { this._showSpinner = value; }\r\n\r\n constructor() { }\r\n}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Message } from '../../../../interfaces/message.interfaces';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { ChatService } from '../../../services/chats/chat.service';\r\nimport { DialogService } from '../dialog.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { PreviewChatMessagesDialog } from '../../../../interfaces/dialog.interfaces';\r\n\r\n@Component({\r\n selector: 'preview-messages-dialog',\r\n templateUrl: './preview-messages-dialog.component.html',\r\n styleUrls: ['./preview-messages-dialog.component.scss']\r\n})\r\nexport class PreviewMessagesDialogComponent implements OnInit {\r\n \r\n public messages: Message[] = [];\r\n public whatsAppUserName: string | undefined = '';\r\n\r\n constructor(\r\n private chatApiService: ChatApiService,\r\n private chatService: ChatService,\r\n private dialogService: DialogService,\r\n private toastMessageService: ToastMessageService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: PreviewChatMessagesDialog\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n await this.getMessagesForChatId();\r\n this.whatsAppUserName = this.chatService.getFormattedName(this.data.chat.firstName, this.data.chat.lastName, this.data.chat.whatsappUserNumber);\r\n }\r\n\r\n private async getMessagesForChatId(): Promise {\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const resp = await this.chatApiService.getMessagesForChatId(this.data.chat.chatId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get messages for chat.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else this.messages = resp.result;\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get messages for chat.', 'toast-message-error');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n}\r\n","
\r\n

{{ whatsAppUserName }}'s Chat Messages

\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport * as moment from 'moment';\r\nimport { RoomChat } from '../../../interfaces/chat.interfaces';\r\nimport { Message } from '../../../interfaces/message.interfaces';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n@Component({\r\n selector: 'room-chat-item',\r\n templateUrl: './room-chat-item.component.html',\r\n styleUrls: ['./room-chat-item.component.scss']\r\n})\r\nexport class RoomChatItemComponent {\r\n\r\n @Input() chat: RoomChat = {} as RoomChat;\r\n @Input() multiselectMode: boolean = false;\r\n\r\n @Output() claimChatMessages: EventEmitter = new EventEmitter();\r\n @Output() onClose: EventEmitter = new EventEmitter();\r\n @Output() onChatSelection: EventEmitter = new EventEmitter();\r\n\r\n public whatsAppDisplayName: string = '';\r\n public lastMessage: Message = {} as Message;\r\n public messageBody: string = '';\r\n public messageTimeStamp: string = '';\r\n public messageStatusIcon: string = '';\r\n public messageStatusIconClass: string = '';\r\n public messageMediaIcon: string = '';\r\n public unreadMessageCount: number = 5;\r\n public lastClaimedBy: string = '';\r\n public chatExpired: boolean = false;\r\n public chatSelected: boolean = false;\r\n\r\n constructor(\r\n private chatService: ChatService,\r\n private messageService: MessageService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.lastMessage = this.chat.messages[this.chat.messages.length - 1];\r\n this.messageBody = this.lastMessage.body;\r\n this.handleWhatsAppUserName();\r\n this.handleMessageTimeStamp();\r\n this.handleMessageStatusIcon();\r\n this.handleMessageMediaIcon();\r\n this.handleLastClaimedBy();\r\n this.chatExpired = this.chatService.hasChatExpired(this.chat.chatExpiryDate)\r\n }\r\n\r\n public chatSelect() {\r\n if (!this.multiselectMode) return;\r\n \r\n this.chat.chatSelected = !this.chat.chatSelected;\r\n this.onChatSelection.emit(this.chat);\r\n }\r\n\r\n public closeChat() {\r\n this.chat.chatSelected = !this.chat.chatSelected;\r\n this.onClose.emit(this.chat)\r\n }\r\n\r\n public claim() {\r\n this.chat.chatSelected = !this.chat.chatSelected;\r\n this.claimChatMessages.emit(this.chat);\r\n }\r\n \r\n private handleWhatsAppUserName(): void {\r\n if (this.chat.firstName && this.chat.lastName) this.whatsAppDisplayName = `${this.chat.firstName} ${this.chat.lastName}`;\r\n else if (this.chat.firstName) this.whatsAppDisplayName = this.chat.firstName;\r\n else this.whatsAppDisplayName = this.chat.whatsappUserNumber;\r\n }\r\n\r\n private handleMessageTimeStamp(): void {\r\n const message = moment(new Date(this.lastMessage.sendDate));\r\n if (message.isSame(moment(), 'day')) this.messageTimeStamp = moment(message).format('hh:mm a')\r\n else if (message.isSame(moment().clone().subtract(1, 'day'), 'day')) this.messageTimeStamp = 'Yesterday';\r\n else this.messageTimeStamp = moment(message).format('YYYY/MM/DD');\r\n }\r\n\r\n private handleMessageStatusIcon(): void {\r\n if (this.lastMessage.undeliveredDate) {\r\n this.messageStatusIcon = 'error';\r\n this.messageStatusIconClass = 'error';\r\n }\r\n else if (this.lastMessage.readDate) {\r\n this.messageStatusIcon = 'done_all';\r\n this.messageStatusIconClass = 'read';\r\n }\r\n else if (this.lastMessage.deliveredDate) this.messageStatusIcon = 'done_all';\r\n else if (this.lastMessage.sendDate) this.messageStatusIcon = 'done';\r\n }\r\n\r\n private handleMessageMediaIcon(): void {\r\n //last message is not a media message\r\n if (!this.lastMessage || !this.lastMessage.mediaUrl || !this.lastMessage.fileName) return;\r\n\r\n this.messageBody = this.lastMessage.fileName;\r\n\r\n const result = this.messageService.isMessageAFile(this.lastMessage.extension);\r\n if (!result) return;\r\n\r\n //if the media message has a friendly name we will set the message body to the friendly name\r\n if (this.lastMessage.body && this.lastMessage.friendlyName) this.messageBody = this.lastMessage.body;\r\n \r\n //setting the message media icon \r\n if (result.isMessageAnImage) this.messageMediaIcon = 'image';\r\n else if (result.isMessageAFile) this.messageMediaIcon = 'file_copy';\r\n else if (result.isMessageAudio) this.messageMediaIcon = 'mic';\r\n else if (result.isMessageVideo) this.messageMediaIcon = 'videocam';\r\n else this.messageMediaIcon = 'insert_drive_file';\r\n }\r\n\r\n private handleLastClaimedBy() {\r\n if (!this.chat.lastClaimedBy) this.lastClaimedBy = '';\r\n else this.lastClaimedBy = this.chatService.getFormattedName(this.chat.lastClaimedBy.split('@')[0]) ?? this.chat.lastClaimedBy;\r\n }\r\n}","\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{ messageStatusIcon }}\r\n \r\n {{ messageMediaIcon }}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { MaterialModule } from './material.module';\r\nimport { AppComponent } from './app.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { RoomChatItemComponent } from './components/room-chat-item/room-chat-item.component';\r\nimport { DialogComponent } from './components/dialog/dialog.component';\r\nimport { LoginComponent } from './page/login/login.component';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { ClosedChatsComponent } from './page/closed-chats/closed-chats.component';\r\nimport { LocationComponent } from './components/location/location.component';\r\nimport { LeafletModule } from \"@asymmetrik/ngx-leaflet\";\r\nimport { AuthManager } from './services/auth/auth.manager';\r\nimport { DropDownComponent } from './components/drop-down/drop-down.component';\r\nimport { SideMenuComponent } from './components/side-menu/side-menu.component';\r\nimport { ChatWindowComponent } from './components/chat-window/chat-window.component';\r\nimport { ChatsPanelComponent } from './components/chats-panel/chats-panel.component';\r\nimport { ChatsLandingPageComponent } from './page/chats-landing-page/chats-landing-page.component';\r\nimport { ToastMessageComponent } from './components/toast-message/toast-message.component';\r\nimport { ChatItemComponent } from './components/chat-item/chat-item.component';\r\nimport { MessageItemComponent } from './components/message-item/message-item.component';\r\nimport { CloseChatDialogComponent } from './components/dialog/close-chat-dialog/close-chat-dialog.component';\r\nimport { AddEditChatNotesDialogComponent } from './components/dialog/add-edit-chat-notes-dialog/add-edit-chat-notes-dialog.component';\r\nimport { ReassignChatDialogComponent } from './components/dialog/reassign-chat-dialog/reassign-chat-dialog.component';\r\nimport { AddEditReferenceNumberDialogComponent } from './components/dialog/add-edit-reference-number-dialog/add-edit-reference-number-dialog.component';\r\nimport { EditWhatsappUserDialogComponent } from './components/dialog/edit-whatsapp-user-dialog/edit-whatsapp-user-dialog.component';\r\nimport { ChatRoomsComponent } from './page/chat-rooms/chat-rooms.component';\r\nimport { ClaimRoomChatDialogComponent } from './components/dialog/claim-room-chat-dialog/claim-room-chat-dialog.component';\r\nimport { ChatRoomFilterPipe } from './pipes/chat-room-filter.pipe';\r\nimport { ContactsComponent } from './page/contacts/contacts.component';\r\nimport { AddWhatsappUserDialogComponent } from './components/dialog/add-whatsapp-user-dialog/add-whatsapp-user-dialog.component';\r\nimport { TemplateManagerComponent } from './page/template-manager/template-manager.component';\r\nimport { OnlineUsersComponent } from './page/online-users/online-users.component';\r\nimport { MessageWindowComponent } from './components/message-window/message-window.component';\r\nimport { PreviewMessagesDialogComponent } from './components/dialog/preview-messages-dialog/preview-messages-dialog.component';\r\nimport { MessagesPreviewClaimChatDialogComponent } from './components/dialog/messages-preview-claim-chat-dialog/messages-preview-claim-chat-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n RoomChatItemComponent,\r\n LoginComponent,\r\n DialogComponent,\r\n SpinnerComponent,\r\n LocationComponent,\r\n ClosedChatsComponent,\r\n DropDownComponent,\r\n SideMenuComponent,\r\n ChatWindowComponent,\r\n ChatsPanelComponent,\r\n ChatsLandingPageComponent,\r\n ChatItemComponent,\r\n MessageItemComponent,\r\n CloseChatDialogComponent,\r\n AddEditChatNotesDialogComponent,\r\n ReassignChatDialogComponent,\r\n AddEditReferenceNumberDialogComponent,\r\n EditWhatsappUserDialogComponent,\r\n ChatRoomsComponent,\r\n ClaimRoomChatDialogComponent,\r\n ChatRoomFilterPipe,\r\n ContactsComponent,\r\n AddWhatsappUserDialogComponent,\r\n TemplateManagerComponent,\r\n OnlineUsersComponent,\r\n MessageWindowComponent,\r\n PreviewMessagesDialogComponent,\r\n MessagesPreviewClaimChatDialogComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n MaterialModule,\r\n DragDropModule,\r\n LeafletModule\r\n ],\r\n providers: [\r\n AuthManager\r\n ],\r\n entryComponents: [ToastMessageComponent],\r\n bootstrap: [AppComponent]\r\n})\r\n \r\nexport class AppModule { }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { ClaimedChatsService } from '../../services/chats/claimed.chats.service';\r\nimport { Chat } from '../../../interfaces/chat.interfaces';\r\nimport { Message } from '../../../interfaces/message.interfaces';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n@Component({\r\n selector: 'chat-item',\r\n templateUrl: './chat-item.component.html',\r\n styleUrls: ['./chat-item.component.scss']\r\n})\r\nexport class ChatItemComponent implements OnInit {\r\n\r\n @Input() chat: Chat | null = null;\r\n @Input() multiSelectMode: boolean = false;\r\n @Output() onChatSelect: EventEmitter = new EventEmitter();\r\n\r\n public whatsAppDisplayName: string | undefined | null = undefined;\r\n public lastMessage: Message | undefined | null = undefined;\r\n public messageBody: string | undefined | null = undefined;\r\n public messageTimeStamp: string = '';\r\n public messageStatusIcon: string = '';\r\n public messageStatusIconClass: string = '';\r\n public messageMediaIcon: string = '';\r\n public chatExpired: boolean = false;\r\n public claimedBy: string | undefined = '';\r\n public chatStatus: string = '';\r\n\r\n constructor(\r\n public claimedChatsService: ClaimedChatsService,\r\n public messageService: MessageService,\r\n public chatService: ChatService\r\n ) { }\r\n\r\n ngOnInit(): void { this.setup(); }\r\n\r\n private setup() {\r\n this.lastMessage = this.chat?.messages[this.chat.messages.length - 1];\r\n this.messageBody = this.lastMessage?.body;\r\n if(this.chat) this.whatsAppDisplayName = this.chatService.getFormattedName(this.chat.firstName, this.chat.lastName, this.chat.whatsappUserNumber);\r\n this.handleMessageTimeStamp();\r\n this.handleMessageMediaIcon();\r\n this.handleClaimedBy();\r\n this.handleChatStatus();\r\n }\r\n\r\n public chatSelect() {\r\n if (!this.chat) return;\r\n\r\n this.chat.reassigned = false;\r\n if (this.multiSelectMode && this.chat) this.chat.chatSelected = !this.chat.chatSelected;\r\n else this.chat.chatSelected = true;\r\n if (!this.multiSelectMode) this.chat.unreadMessages = null;\r\n this.onChatSelect.emit(this.chat);\r\n }\r\n\r\n private handleMessageTimeStamp(): void {\r\n if (!this.lastMessage) return;\r\n\r\n const message = moment(new Date(this.lastMessage.sendDate));\r\n if (message.isSame(moment(), 'day')) this.messageTimeStamp = moment(message).format('hh:mm a')\r\n else if (message.isSame(moment().clone().subtract(1, 'day'), 'day')) this.messageTimeStamp = 'Yesterday';\r\n else this.messageTimeStamp = moment(message).format('YYYY/MM/DD');\r\n }\r\n\r\n private handleMessageMediaIcon(): void {\r\n if (!this.lastMessage) return;\r\n\r\n //last message is not a media message\r\n if (!this.lastMessage.mediaUrl) return;\r\n\r\n if (!this.messageBody) {\r\n this.messageBody = this.lastMessage.friendlyName;\r\n if (this.lastMessage.friendlyName) this.messageBody = this.lastMessage.friendlyName;\r\n else if (this.lastMessage.fileName) this.messageBody = this.lastMessage.fileName;\r\n }\r\n\r\n const result = this.messageService.isMessageAFile(this.lastMessage.extension);\r\n if (!result) return;\r\n\r\n //setting the message media icon \r\n if (result.isMessageAnImage) this.messageMediaIcon = 'image';\r\n else if (result.isMessageAFile) this.messageMediaIcon = 'file_copy';\r\n else if (result.isMessageAudio) this.messageMediaIcon = 'mic';\r\n else if (result.isMessageVideo) this.messageMediaIcon = 'videocam';\r\n else this.messageMediaIcon = 'insert_drive_file';\r\n }\r\n\r\n private handleChatStatus() {\r\n if (!this.chat) return;\r\n\r\n const expired = this.chatService.hasChatExpired(this.chat.chatExpiryDate);\r\n this.chatExpired = expired;\r\n if (expired) this.chatStatus = 'Expired'\r\n else this.chatStatus = 'Open';\r\n }\r\n\r\n private handleClaimedBy() {\r\n if (!this.chat) return;\r\n this.claimedBy = this.chatService.getFormattedName(this.chat.claimedBy.split('@')[0]);\r\n }\r\n}","
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{ messageService.handleMessageStatusIcon(lastMessage.sendDate, lastMessage.readDate, lastMessage.deliveredDate, lastMessage.undeliveredDate).messageStatusIcon }}\r\n \r\n \r\n {{ messageMediaIcon }}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { RoomChat } from '../../../interfaces/chat.interfaces';\r\nimport { Location } from '@angular/common';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport { DialogComponent } from '../../components/dialog/dialog.component';\r\nimport { DialogType, RoomChatFilterBy, RoomChatOrderBy } from '../../enums';\r\nimport * as _ from 'lodash';\r\nimport { ChatRoomService } from '../../services/chats/chat.room.service';\r\n\r\n@Component({\r\n selector: 'app-chat-rooms',\r\n templateUrl: './chat-rooms.component.html',\r\n styleUrls: ['./chat-rooms.component.scss']\r\n})\r\nexport class ChatRoomsComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('toolbar', { static: false }) public toolbar: ElementRef | null = null;\r\n @ViewChild('filters', { static: false }) public filters: ElementRef | null = null;\r\n @ViewChild('chatListing', { static: false }) public chatListing: ElementRef | null = null;\r\n\r\n public multiSelectMode: boolean = false;\r\n public showSpinner: boolean = false;\r\n public disabledOrderByFilter: boolean = true;\r\n\r\n constructor(\r\n public chatRoomService: ChatRoomService,\r\n private location: Location,\r\n public dialog: MatDialog,\r\n public chatService: ChatService\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n await this.refreshChats();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.chatRoomService.chatRooms.map(room => room.chats.map(chat => chat.chatSelected = false));\r\n this.chatRoomService.clear();\r\n }\r\n\r\n public async refreshChats() {\r\n this.showSpinner = true;\r\n await this.chatRoomService.getChatRooms();\r\n if (this.chatRoomService.chatRooms?.length > 0 && !this.chatRoomService.selectedTab) this.chatRoomService.handleChatFilterLabels(0);\r\n this.showSpinner = false;\r\n }\r\n\r\n public multiSelectModeChange() {\r\n this.multiSelectMode = !this.multiSelectMode;\r\n if (!this.multiSelectMode) {\r\n //set chat selected to false when we go off multi-select mode\r\n this.chatRoomService.chatRooms.map((chatRoom) => chatRoom.chats.map((chat) => chat.chatSelected = false));\r\n this.chatRoomService.selectedChats = [];\r\n }\r\n }\r\n\r\n public onChatSelection(chat: RoomChat) {\r\n if (chat.chatSelected) {\r\n this.chatRoomService.selectedChats.push(chat);\r\n } else {\r\n const index = this.chatRoomService.selectedChats.indexOf(chat);\r\n this.chatRoomService.selectedChats.splice(index, 1);\r\n }\r\n }\r\n\r\n //gets called in the html\r\n //used to single closing of a chat\r\n //and also when we are bulk closing chats\r\n public handleCloseChatDialog(chats: RoomChat[]) {\r\n const dialog = this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.CLOSE_CHAT, chats: chats },\r\n autoFocus: false\r\n });\r\n\r\n dialog.afterClosed().subscribe(result => {\r\n //user did not say yes for closing chat\r\n if (!result) {\r\n if (chats.length == 1) {\r\n chats.map(chat => chat.chatSelected = false);\r\n this.chatRoomService.selectedChats = [];\r\n }\r\n return;\r\n }\r\n\r\n //remove all the chats that were selected from the chats array in the room\r\n this.chatRoomService.chatRooms.map(chatRoom => chatRoom.chats = chatRoom.chats.filter(chat => !chats.includes(chat)));\r\n\r\n //refresh the room heading\r\n this.chatRoomService.handleRoomHeading();\r\n //recalculate the chats in room\r\n this.chatRoomService.calculateChatsInRoom();\r\n this.chatRoomService.selectedChats = [];\r\n });\r\n }\r\n\r\n public bulkClaimChat() {\r\n const dialog = this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.BULK_CLAIM_CHAT, chats: this.chatRoomService.selectedChats },\r\n autoFocus: false\r\n });\r\n\r\n dialog.afterClosed().subscribe((result) => {\r\n if (!result) {\r\n if (this.chatRoomService.selectedChats.length == 1) {\r\n this.chatRoomService.selectedChats.map(chat => chat.chatSelected = false);\r\n this.chatRoomService.selectedChats = [];\r\n }\r\n return;\r\n }\r\n });\r\n }\r\n\r\n public previewClaimChatMessages(chat: RoomChat) {\r\n chat.chatSelected = true;\r\n\r\n const dialog = this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.PREVIEW_CLAIM_CHAT, chats: [chat] },\r\n autoFocus: false\r\n });\r\n\r\n dialog.afterClosed().subscribe(() => { chat.chatSelected = false; });\r\n }\r\n\r\n public onChatFilter(chatFilter: RoomChatFilterBy) {\r\n this.chatRoomService.chatFilter = chatFilter;\r\n\r\n if (!this.chatRoomService.chatFilter) {\r\n this.chatRoomService.orderFilter = RoomChatOrderBy.DESCENDING;\r\n this.disabledOrderByFilter = true;\r\n }\r\n\r\n if (this.chatRoomService.chatFilter != RoomChatFilterBy.CHAT_DATE) this.disabledOrderByFilter = true;\r\n else this.disabledOrderByFilter = false;\r\n\r\n this.chatRoomService.calculateChatsInRoom();\r\n this.chatRoomService.handleRoomHeading();\r\n }\r\n\r\n public calculateHeight() {\r\n if (!this.toolbar || !this.chatListing || !this.filters) {\r\n return;\r\n }\r\n\r\n const toolbarHeight = this.toolbar.nativeElement.offsetHeight;\r\n const filtersHeight = this.filters.nativeElement.offsetHeight;\r\n const messageWindowHeight = window.innerHeight - toolbarHeight - filtersHeight - 45;\r\n\r\n //only if the calculated height is different to what it currently is then we will set message window height\r\n if (this.chatListing.nativeElement.style.height !== messageWindowHeight) {\r\n return `${messageWindowHeight}px`;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n public onOrderBy(orderBy: RoomChatOrderBy) {\r\n this.chatRoomService.orderFilter = orderBy;\r\n }\r\n\r\n public goBack() {\r\n this.location.back();\r\n }\r\n}","
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n 0\" mat-align-tabs=\"start\" animationDuration=\"0ms\"\r\n (selectedIndexChange)=\"chatRoomService.handleChatFilterLabels($event)\"\r\n [selectedIndex]=\"chatRoomService.selectedTab?.index\">\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Search {{ chatRoom.roomName }} Chats...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Multiselect Mode\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ClaimedChatsService } from '../../services/chats/claimed.chats.service';\r\nimport * as _ from 'lodash';\r\nimport { Subject, Subscription, interval } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AuthService } from '../../services/auth/auth.service';\r\nimport { MenuOptions } from '../../../interfaces/global.interfaces';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogComponent } from '../dialog/dialog.component';\r\nimport { DialogType } from '../../enums';\r\nimport { ChatService } from '../../services/chats/chat.service';\r\nimport { ChatApiService } from '../../services/api/chat.api.service';\r\nimport { ToastMessageService } from '../toast-message/toast.message.service';\r\nimport { Chat } from '../../../interfaces/chat.interfaces';\r\nimport { EditWhatsappUserDialog } from '../../../interfaces/dialog.interfaces';\r\nimport { MessageSearch } from '../message-window/message-window.component';\r\nimport { Message, MessageFile } from '../../../interfaces/message.interfaces';\r\nimport { ApiService } from '../../services/api/api.service';\r\nimport * as RecordRTC from 'recordrtc';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { ErrorService } from '../../services/error.service';\r\n\r\n@Component({\r\n selector: 'chat-window',\r\n templateUrl: './chat-window.component.html',\r\n styleUrls: ['./chat-window.component.scss']\r\n})\r\nexport class ChatWindowComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() public selectedClaimChatId: number | null = null;\r\n @ViewChild('chatWindow', { static: false }) public chatWindow: ElementRef | null = null;\r\n @ViewChild('messageWindow', { static: false }) public messageWindow: ElementRef | null = null;\r\n @ViewChild('footer', { static: false }) public footer: ElementRef | null = null;\r\n @ViewChild('toolbar', { static: false }) public toolbar: ElementRef | null = null;\r\n @ViewChild('searchChatMessagesInput') public searchChatMessagesInput: ElementRef | null = null;\r\n public navigateToNextResultEmitter: EventEmitter = new EventEmitter();\r\n public navigateToPreviousResultEmitter: EventEmitter = new EventEmitter();\r\n public scrollToBottomEmitter: EventEmitter = new EventEmitter();\r\n\r\n public chatWindowRemainingTime: string = '';\r\n public fileToSend: File | null = null;\r\n public messageFile: MessageFile | null = null;\r\n public messageFileUrl: SafeUrl | null = null;\r\n public fileDropError: string = '';\r\n private maxLinesForMaxHeight: number = 10;\r\n private currentMessageLines: number = 2;\r\n private previousMessageLines: number = 2;\r\n public messageWindowHeight: number = 0;\r\n private detectChangesSub: Subject = new Subject();\r\n public whatsAppUserName: string = '';\r\n public mimeTypes: string[] = [];\r\n public search: string = '';\r\n public message: string | undefined | null = null;\r\n public searchResults: number = 0;\r\n public currentResultIndex: number = 0;\r\n public chatsOptions: MenuOptions[] = [\r\n {\r\n icon: 'cancel',\r\n label: 'Close Chat',\r\n method: this.closeDialog.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'refresh',\r\n label: 'Refresh Messages',\r\n method: async () => await this.getChatMessages(),\r\n disabled: false,\r\n },\r\n {\r\n icon: 'reply',\r\n label: 'Reassign Chat',\r\n method: this.reassignChatDialog.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'note_add',\r\n label: 'Add / Edit Chat Notes',\r\n method: this.openDialog.bind(this, DialogType.EDIT_WHATSAPP_CHAT_NOTES),\r\n disabled: false\r\n },\r\n {\r\n icon: 'edit',\r\n label: 'Add / Edit Reference Number',\r\n method: this.editReferenceNumberDialog.bind(this),\r\n disabled: false\r\n },\r\n {\r\n icon: 'perm_contact_calendar',\r\n label: 'Edit WhatsApp User',\r\n method: this.editWhatsAppUserDialog.bind(this),\r\n disabled: false\r\n }\r\n ];\r\n\r\n //recording audio\r\n record: RecordRTC.StereoAudioRecorder | null = null;\r\n startTime: number | null = null;\r\n timer: ReturnType | null = null;\r\n recordTime: string = '00:00';\r\n stream: MediaStream = {} as MediaStream;\r\n\r\n public isDragging: boolean = false;\r\n public showSpinner: boolean = false;\r\n public searchMessagesOverlay: boolean = false;\r\n public chatExpired: boolean = false;\r\n public recording: boolean = false;\r\n public sendingMessage: boolean = false;\r\n\r\n constructor(\r\n public claimedChatsService: ClaimedChatsService,\r\n private chatApiService: ChatApiService,\r\n private toastMessageService: ToastMessageService,\r\n public chatService: ChatService,\r\n private apiService: ApiService,\r\n private authService: AuthService,\r\n private error: ErrorService,\r\n private cd: ChangeDetectorRef,\r\n private sanitizer: DomSanitizer,\r\n public dialog: MatDialog\r\n ) {\r\n interval(1000)\r\n .pipe(takeUntil(this.detectChangesSub))\r\n .subscribe(() => {\r\n const newRemainingTime = this.claimedChatsService.selectedClaimChatWindowLeft;\r\n if (newRemainingTime !== this.chatWindowRemainingTime) {\r\n this.chatWindowRemainingTime = newRemainingTime;\r\n this.cd.markForCheck();\r\n }\r\n });\r\n }\r\n async ngOnInit() { await this.getMediaTypes(); }\r\n\r\n ngOnDestroy() {\r\n this.detectChangesSub.next();\r\n this.detectChangesSub.complete();\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.selectedClaimChatId) return;\r\n\r\n this.updateWhatsappUserName();\r\n this.handleChatOptions();\r\n this.clearSearch();\r\n if (this.claimedChatsService.getSelectedClaimChat) this.chatExpired = this.chatService.hasChatExpired(this.claimedChatsService.getSelectedClaimChat.chatExpiryDate);\r\n }\r\n\r\n private async getChatMessages(): Promise {\r\n this.showSpinner = true;\r\n if (!this.claimedChatsService.getSelectedClaimChat) return;\r\n try {\r\n const resp = await this.chatApiService.getMessagesForChatId(this.claimedChatsService.getSelectedClaimChat.chatId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to refresh chat messages', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n const chat = this.claimedChatsService.getSelectedClaimChat;\r\n this.claimedChatsService.updateClaimedChatMessages(chat.chatId, resp.result);\r\n this.claimedChatsService.getSelectedClaimChat.messages = chat.messages;\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to get chat messages', err, 'chats-window.getChatMessages()');\r\n this.toastMessageService.showToastMessage('Failed to refresh chat messages', 'toast-message-error');\r\n }\r\n this.showSpinner = false;\r\n }\r\n\r\n private async getMediaTypes(): Promise {\r\n try {\r\n const resp = await this.apiService.getMimeTypes();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get mime types', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else this.mimeTypes = resp.result.map((x: { mimeType: string; }) => x.mimeType);\r\n } catch (err) {\r\n this.error.handleError('Failed to get media types', err, 'chats-window.getMediaTypes()');\r\n this.toastMessageService.showToastMessage('Failed to get mime types', 'toast-message-error');\r\n }\r\n }\r\n\r\n private handleChatOptions() {\r\n //use does not own the chat\r\n if (this.claimedChatsService.getSelectedClaimChat?.claimedBy.toLowerCase() !== this.authService.loginName?.toLowerCase()) {\r\n this.chatsOptions.filter(co => {\r\n if (co.label.toLowerCase() !== 'close chat' && co.label.toLowerCase() !== 'refresh messages') {\r\n co.disabled = true;\r\n }\r\n });\r\n } else {\r\n this.chatsOptions.filter(co => {\r\n co.disabled = false;\r\n });\r\n }\r\n }\r\n\r\n public openSearchMessagesOverlay() {\r\n this.searchMessagesOverlay = !this.searchMessagesOverlay;\r\n\r\n if (this.searchMessagesOverlay) {\r\n setTimeout(() => {\r\n if (!this.searchChatMessagesInput || !this.searchChatMessagesInput.nativeElement) return;\r\n this.searchChatMessagesInput.nativeElement.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n public handleMessageSearchTyping(event: KeyboardEvent) {\r\n if (!this.search || this.search.trim().length <= 2) return;\r\n\r\n const isEnter = event.key === 'Enter' || event.code === 'Enter';\r\n if (isEnter) this.navigateToNextResult();\r\n }\r\n\r\n public navigateToNextResult(): void {\r\n this.navigateToNextResultEmitter.emit();\r\n }\r\n\r\n public navigateToPreviousResult(): void {\r\n this.navigateToPreviousResultEmitter.emit();\r\n }\r\n\r\n public messageSearch(event: MessageSearch) {\r\n this.currentResultIndex = event.currentResultIndex;\r\n this.searchResults = event.searchResults;\r\n }\r\n\r\n public calculateHeight() {\r\n if (!this.footer || !this.toolbar || !this.messageWindow) {\r\n return;\r\n }\r\n\r\n const toolbarHeight = this.toolbar.nativeElement.offsetHeight;\r\n const footerHeight = this.footer.nativeElement.offsetHeight;\r\n const messageWindowHeight = window.innerHeight - toolbarHeight - footerHeight;\r\n\r\n //only if the calculated height is different to what it currently is then we will set message window height\r\n if (this.messageWindow.nativeElement.style.height !== messageWindowHeight) {\r\n this.messageWindowHeight = messageWindowHeight;\r\n this.messageWindow.nativeElement.style.height = `${this.messageWindowHeight}px`;\r\n this.messageWindow.nativeElement.style.maxHeight = `${this.messageWindowHeight}px`;\r\n }\r\n }\r\n\r\n //to sum up what this method is doing\r\n //whenever the user is making a new line we will expand the footer and make the message window height smaller\r\n //if the user is removing lines we will contract the footer and expand the message window height\r\n //there is a max height by checking the current lines and if the lines is greater than the max line height we won't expand\r\n public handleFooterAndMessageWindowHeight(): void {\r\n //get the footer element\r\n const footer = this.footer?.nativeElement as HTMLElement | null;\r\n //get the message window element\r\n const messageWindow = this.messageWindow?.nativeElement as HTMLElement | null;\r\n\r\n if (!footer || !messageWindow) return;\r\n\r\n //get the text area element\r\n const textarea = document.querySelector('.footer textarea') as HTMLTextAreaElement | null;\r\n\r\n if (!textarea) return;\r\n\r\n //get the line height for the textarea\r\n const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight || '0', 10);\r\n //the amount of lines textarea is at\r\n this.currentMessageLines = Math.ceil(textarea.scrollHeight / lineHeight);\r\n\r\n //get the min footer height\r\n const minFooterHeight = parseInt(window.getComputedStyle(footer).minHeight || '0', 10);\r\n //get the max footer height\r\n const maxFooterHeight = parseInt(window.getComputedStyle(footer).maxHeight || '0', 10);\r\n //get the max message window height\r\n const maxMessageWindowHeight = parseInt(window.getComputedStyle(messageWindow).maxHeight || '0', 10);\r\n\r\n //user cleared out everything in the text area\r\n if (_.isEmpty(this.message)) {\r\n //set footer and message window height back to normal\r\n messageWindow.style.height = `${maxMessageWindowHeight}px`;\r\n footer.style.height = `${minFooterHeight}px`;\r\n this.currentMessageLines = 2;\r\n this.previousMessageLines = 2;;\r\n return;\r\n }\r\n\r\n //don't do anything if the live lines is equal to the current message window lines\r\n // if it is it means the person hasn't made a new line and is typing on the same message\r\n if (this.currentMessageLines == this.previousMessageLines) return;\r\n\r\n //max lines is dependant on the max height of the footer\r\n //footer height goes up in 10px\r\n //the difference between the max and current height is 10 so that's where we get 6 from\r\n const increaseLineAmount: number = 10;\r\n\r\n //we are removing lines\r\n if (this.currentMessageLines < this.previousMessageLines) {\r\n // only decrease heights if the lines are not less than the minimum allowed\r\n if (this.currentMessageLines <= this.maxLinesForMaxHeight) {\r\n // decrease the footer height\r\n footer.style.height = `${footer.clientHeight - increaseLineAmount}px`;\r\n // increase the message window height\r\n messageWindow.style.height = `${messageWindow.clientHeight + increaseLineAmount}px`;\r\n }\r\n }\r\n //we are adding lines\r\n else if (this.currentMessageLines > this.previousMessageLines) {\r\n //this is to cater for a sudden change of current lines\r\n //eg being if the user copy pastes a message in the text area\r\n let multiplier: number = Math.ceil(this.currentMessageLines - this.previousMessageLines);\r\n if (multiplier > this.maxLinesForMaxHeight) multiplier = this.maxLinesForMaxHeight;\r\n //increase the height of the footer and decrease the height of the message window\r\n //only if the footer is not equal to the max height\r\n if (maxFooterHeight !== footer.offsetHeight) {\r\n //decrease the message window height\r\n messageWindow.style.height = `${messageWindow.clientHeight - (increaseLineAmount * multiplier)}px`;\r\n //increase the footer height\r\n footer.style.height = `${footer.clientHeight + (increaseLineAmount * multiplier)}px`;\r\n }\r\n }\r\n\r\n this.previousMessageLines = this.currentMessageLines;\r\n\r\n //emit scroll to bottom\r\n this.scrollToBottomEmitter.emit();\r\n }\r\n\r\n public async onFileSelected(fileList: FileList) {\r\n const files: File[] = Array.from(fileList || []);\r\n const mimeTypes = files.map(file => file.type);\r\n\r\n if (this.isValidFiles(mimeTypes)) {\r\n this.fileToSend = files[0];\r\n const resp = await this.handleFileUpload(this.fileToSend);\r\n if (!resp) return;\r\n this.handleFileDisplay();\r\n }\r\n else this.toastMessageService.showToastMessage(`Invalid file type. Accepted file types are: ${this.mimeTypes.join(', ')}`, 'toast-message-error', 6000);\r\n }\r\n\r\n public onDragEnter(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.fileToSend) return;\r\n else if (!this.isDragging) this.isDragging = true;\r\n else if (this.isStillInsideChatWindow(event)) return;\r\n\r\n const files: DataTransferItemList | undefined = event.dataTransfer?.items;\r\n\r\n if (!files || files.length > 1) {\r\n this.fileDropError = `Can only send one file at a time.`;\r\n return;\r\n }\r\n\r\n const header = files.length == 1 ? 'Invalid file type' : 'Invalid file types';\r\n const mimeTypes: string[] = Object.values(files).map(file => file.type);\r\n const validFile = this.isValidFiles(mimeTypes);\r\n if (!validFile) this.fileDropError = `${header}.\\nAccepted file types are:\\n${this.mimeTypes.join(', ')}`;\r\n else this.fileDropError = '';\r\n }\r\n\r\n public onDragOver(event: DragEvent) { event.preventDefault(); }\r\n\r\n public onDragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.isStillInsideChatWindow(event)) return;\r\n this.isDragging = false;\r\n }\r\n\r\n public async onFilesDropped(event: DragEvent) {\r\n event.preventDefault();\r\n if (this.fileToSend) return;\r\n\r\n //for sending media\r\n if (this.claimedChatsService.getSelectedClaimChat) {\r\n const chatExpired = this.chatService.hasChatExpired(this.claimedChatsService.getSelectedClaimChat.chatExpiryDate);\r\n if (chatExpired) {\r\n this.isDragging = false;\r\n this.toastMessageService.showToastMessage('Chat is expired. Cannot send file', 'toast-message-error');\r\n return;\r\n }\r\n }\r\n\r\n this.isDragging = false;\r\n if (this.fileDropError) return;\r\n\r\n const files: File[] = Array.from(event.dataTransfer?.files || []);\r\n this.fileToSend = files[0];\r\n await this.handleFileUpload(this.fileToSend);\r\n this.handleFileDisplay();\r\n }\r\n\r\n private handleFileDisplay() {\r\n if (!this.fileToSend) return;\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const dataURL = e.target?.result as string;\r\n this.messageFileUrl = this.sanitizer.bypassSecurityTrustUrl(dataURL);\r\n };\r\n reader.readAsDataURL(this.fileToSend);\r\n }\r\n\r\n private isValidFiles(mimeTypes: string[]): boolean {\r\n if (mimeTypes?.length == 0) return false;\r\n return mimeTypes.every(file => this.mimeTypes.includes(file));\r\n }\r\n\r\n public async handleFileUpload(file: File): Promise {\r\n return new Promise((resolve, reject) => {\r\n const fileSizeMB = file.size / 1024 / 1024;\r\n if (fileSizeMB > 15) {\r\n this.toastMessageService.showToastMessage(`${file.name} is too large to send`, 'toast-message-error');\r\n this.fileToSend = null;\r\n return resolve(false);\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file as Blob);\r\n reader.onload = async () => {\r\n const base64 = reader.result?.toString().replace(`data:${file.type};base64,`, '');\r\n\r\n if (!base64) {\r\n this.toastMessageService.showToastMessage(`Unable to send ${file.name}`, 'toast-message-error', 4000);\r\n // continue;\r\n reject(false);\r\n }\r\n if (base64) {\r\n const extension: string | undefined = file?.name ? file.name.split('.').pop() : file.type.split('/').pop();\r\n\r\n if (!extension) return reject('can not find file extension');\r\n\r\n const selectedClaimedChat: Chat | null = this.claimedChatsService.getSelectedClaimChat;\r\n\r\n if (!selectedClaimedChat) return reject('no selected claim chat');\r\n\r\n this.messageFile = {\r\n base64: base64,\r\n fileName: file.name,\r\n mimeType: file.type,\r\n extension: extension,\r\n filePrefixName: selectedClaimedChat.refNo ? selectedClaimedChat.refNo : `${selectedClaimedChat.chatId}`\r\n };\r\n resolve(true);\r\n }\r\n };\r\n });\r\n }\r\n\r\n public async validateMessage(event: KeyboardEvent): Promise {\r\n //prevent enter key from making a new line\r\n if (event) event.preventDefault();\r\n\r\n //empty message so do nothing and no message file\r\n if (_.isEmpty(this.message?.trim()) && !this.messageFile) return;\r\n\r\n await this.sendMessage();\r\n }\r\n\r\n public async sendMessage(): Promise {\r\n this.sendingMessage = true;\r\n try {\r\n if (!this.claimedChatsService.getSelectedClaimChat) return;\r\n\r\n //for sending media\r\n const chatExpired = this.chatService.hasChatExpired(this.claimedChatsService.getSelectedClaimChat.chatExpiryDate);\r\n if (chatExpired) {\r\n this.toastMessageService.showToastMessage('Chat is expired. Cannot send messages', 'toast-message-error');\r\n return;\r\n }\r\n\r\n const body = this.message?.trim() ?? '';\r\n const resp = await this.chatApiService.sendWhatsappMessage(this.claimedChatsService.getSelectedClaimChat.chatId, body, this.messageFile);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to send whatsapp message', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n const message: Message = {\r\n messageId: resp.result.messageId,\r\n body: body,\r\n chatId: this.claimedChatsService.getSelectedClaimChat.chatId,\r\n direction: 1,\r\n systemUser: this.authService?.user?.loginName,\r\n systemUserId: this.authService?.user?.id,\r\n whatsappUserFirstName: this.claimedChatsService.getSelectedClaimChat.firstName,\r\n whatsappUserLastName: this.claimedChatsService.getSelectedClaimChat.lastName,\r\n whatsappUserNumber: this.claimedChatsService.getSelectedClaimChat.whatsappUserNumber,\r\n sendDate: new Date(),\r\n fileName: this.messageFile?.fileName,\r\n friendlyName: this.messageFile?.fileName,\r\n mediaUrl: resp.result?.mediaUrl,\r\n extension: this.messageFile?.extension,\r\n mimeType: this.messageFile?.mimeType\r\n };\r\n this.claimedChatsService.getSelectedClaimChat.messages = [...this.claimedChatsService.getSelectedClaimChat.messages, message];\r\n this.claimedChatsService.handleClaimedChatsPanel();\r\n this.scrollToBottomEmitter.emit();\r\n this.messageFile = null;\r\n this.messageFileUrl = null;\r\n this.message = null;\r\n this.handleFooterAndMessageWindowHeight();\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to send message', err, 'chats-window.sendMessage()');\r\n this.toastMessageService.showToastMessage('Failed to send whatsapp message', 'toast-message-error');\r\n }\r\n this.sendingMessage = false;\r\n }\r\n\r\n public chatOption(option: MenuOptions) { option.method.call(this); }\r\n\r\n private openDialog(dialogTypeId: DialogType): void {\r\n this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId },\r\n autoFocus: false\r\n });\r\n }\r\n\r\n private closeDialog(): void {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.CLOSE_CHAT, chats: [this.claimedChatsService.getSelectedClaimChat] },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (!result || !this.claimedChatsService.getSelectedClaimChat) return;\r\n\r\n const chatIds: number[] = [this.claimedChatsService.getSelectedClaimChat.chatId];\r\n this.claimedChatsService.handleRemovingClaimedChats(chatIds);\r\n });\r\n }\r\n\r\n private reassignChatDialog(): void {\r\n this.dialog.open(DialogComponent, {\r\n data: { dialogTypeId: DialogType.REASSIGN_CHAT, chats: [this.claimedChatsService.getSelectedClaimChat] },\r\n autoFocus: false\r\n });\r\n }\r\n\r\n private editReferenceNumberDialog() {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: {\r\n dialogTypeId: DialogType.ADD_UPDATE_REFERENCE_NUMBER\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: boolean | undefined) => {\r\n if (!result) return;\r\n\r\n const chat: Chat | null = this.claimedChatsService.getSelectedClaimChat;\r\n\r\n if (chat) {\r\n const chatToUpdate = this.getChatToUpdate(chat.chatId);\r\n if (!chatToUpdate) return;\r\n else if (!this.claimedChatsService.claimedChatsPanel) return;\r\n\r\n const foundChat: Chat = this.claimedChatsService.claimedChatsPanel[chatToUpdate.groupIndex].chats[chatToUpdate.chatIndex];\r\n foundChat.refNo = chat.refNo;\r\n this.claimedChatsService.claimedChatsPanel[chatToUpdate.groupIndex].chats[chatToUpdate.chatIndex] = { ...foundChat };\r\n }\r\n\r\n });\r\n }\r\n\r\n private editWhatsAppUserDialog() {\r\n if (!this.claimedChatsService.getSelectedClaimChat) return;\r\n\r\n const chat: Chat | null = this.claimedChatsService.getSelectedClaimChat;\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: {\r\n dialogTypeId: DialogType.EDIT_WHATSAPP_USER,\r\n whatsappUserId: chat.whatsappUserId,\r\n firstName: chat.firstName,\r\n lastName: chat.lastName\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((whatsappUser: EditWhatsappUserDialog | undefined) => {\r\n if (!whatsappUser || !this.claimedChatsService.getSelectedClaimChat) return;\r\n\r\n this.claimedChatsService.getSelectedClaimChat.firstName = whatsappUser.firstName;\r\n this.claimedChatsService.getSelectedClaimChat.lastName = whatsappUser.lastName;\r\n\r\n if (!this.claimedChatsService.claimedChatsPanel) return;\r\n\r\n const chatToUpdate = this.getChatToUpdate(chat.chatId);\r\n if (!chatToUpdate) return;\r\n\r\n const foundChat: Chat = this.claimedChatsService.claimedChatsPanel[chatToUpdate.groupIndex].chats[chatToUpdate.chatIndex];\r\n foundChat.firstName = whatsappUser.firstName;\r\n foundChat.lastName = whatsappUser.lastName;\r\n\r\n foundChat.messages.map(m => {\r\n m.whatsappUserFirstName = whatsappUser.firstName;\r\n m.whatsappUserLastName = whatsappUser.lastName;\r\n });\r\n\r\n this.claimedChatsService.claimedChatsPanel[chatToUpdate.groupIndex].chats[chatToUpdate.chatIndex] = { ...foundChat };\r\n\r\n this.updateWhatsappUserName();\r\n });\r\n }\r\n\r\n private updateWhatsappUserName() {\r\n if (!this.claimedChatsService.getSelectedClaimChat) return;\r\n\r\n const chat: Chat | null = this.claimedChatsService.getSelectedClaimChat;\r\n const whatsappUserName = this.chatService.getFormattedName(chat.firstName, chat.lastName, chat.whatsappUserNumber);\r\n\r\n this.whatsAppUserName = whatsappUserName ?? '';\r\n }\r\n\r\n private getChatToUpdate(chatId: number): ChatToUpdate | null {\r\n if (!this.claimedChatsService.claimedChatsPanel) return null;\r\n\r\n const groupIndex: number = this.claimedChatsService.claimedChatsPanel.findIndex(group =>\r\n group.chats.some(c => c.chatId === chatId)\r\n );\r\n\r\n if (groupIndex === -1) return null;\r\n\r\n const chatIndex: number = this.claimedChatsService.claimedChatsPanel[groupIndex].chats.findIndex(c =>\r\n c.chatId === chatId\r\n );\r\n\r\n if (chatIndex === -1) return null;\r\n\r\n return {\r\n groupIndex: groupIndex,\r\n chatIndex: chatIndex\r\n };\r\n }\r\n\r\n public clearSearch() {\r\n this.searchMessagesOverlay = false;\r\n this.search = '';\r\n this.searchResults = 0;\r\n this.currentResultIndex = 0;\r\n }\r\n\r\n //handling when the user pressing escape\r\n //need to clear the search\r\n public handleOverlayKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.clearSearch();\r\n }\r\n }\r\n\r\n private startTimer() {\r\n this.startTime = Date.now();\r\n\r\n this.timer = setInterval(() => {\r\n if (!this.startTime) return;\r\n const currentTime = Date.now();\r\n const elapsedTimeInSeconds = Math.floor((currentTime - this.startTime) / 1000);\r\n this.formatTimer(elapsedTimeInSeconds);\r\n }, 1000);\r\n }\r\n\r\n private formatTimer(time: number) {\r\n const minutes = Math.floor(time / 60);\r\n const seconds = Math.floor(time % 60);\r\n this.recordTime = `${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\r\n }\r\n\r\n public startRecording() {\r\n try {\r\n this.startTimer();\r\n navigator.mediaDevices.getUserMedia({ audio: true })\r\n .then(this.successCallback.bind(this),\r\n this.toastMessageService.showToastMessage.bind('Can not record audio in your browser', 'toast-message-error')\r\n );\r\n } catch (err) {\r\n this.recording = false;\r\n this.toastMessageService.showToastMessage.bind('Failed to record audio in your browser', 'toast-message-error');\r\n }\r\n }\r\n\r\n public stopRecording() {\r\n this.recording = false;\r\n this.stopTimer();\r\n this.stream.getTracks().forEach(track => track.stop());\r\n this.record?.stop(this.stopTimer.bind(this));\r\n this.record = null;\r\n }\r\n\r\n private stopTimer() {\r\n this.recordTime = '00:00';\r\n this.timer = null;\r\n this.startTime = null;\r\n }\r\n\r\n private successCallback(mediaStream: MediaStream) {\r\n this.recording = true;\r\n const options: RecordRTC.Options = {\r\n mimeType: \"audio/ogg\",\r\n numberOfAudioChannels: 1\r\n };\r\n\r\n //starting audio recording\r\n this.record = new RecordRTC.StereoAudioRecorder(mediaStream, options);\r\n this.record.record();\r\n this.stream = mediaStream;\r\n\r\n\r\n }\r\n\r\n public submitRecording() {\r\n this.record?.stop(this.processRecording.bind(this));\r\n }\r\n\r\n //strange thing that happens\r\n //when recording audio we set it to audio/ogg but when we get the file it's not, it's set to audio/wav\r\n //but by setting the file name to have '.mp3' at the end works even though the file itself is audio/wav\r\n private async processRecording(file: Blob) {\r\n this.stopTimer();\r\n this.stopRecording();\r\n this.fileToSend = new File([file], `${this.newGuid()}.wav`, { type: file.type });\r\n const resp = await this.handleFileUpload(this.fileToSend);\r\n if (!resp) return;\r\n await this.sendMessage();\r\n }\r\n\r\n private newGuid() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n private isStillInsideChatWindow(event: DragEvent): boolean { return this.chatWindow?.nativeElement.contains(event.relatedTarget as Node); }\r\n}\r\n\r\nexport interface ChatToUpdate {\r\n groupIndex: number;\r\n chatIndex: number;\r\n}","\r\n\r\n
\r\n
\r\n person\r\n \r\n {{ chatWindowRemainingTime }}\r\n \r\n \r\n
\r\n
\r\n
\r\n search\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n

Drop files here.

\r\n \r\n

{{ fileDropError }}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n File\r\n preview not\r\n supported\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss']\r\n})\r\nexport class SpinnerComponent {\r\n @Input() reason: string = '';\r\n}\r\n","
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { DialogService } from '../dialog.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ClaimChatDialog } from '../../../../interfaces/dialog.interfaces';\r\nimport { Dropdown, Groups } from '../../../../interfaces/global.interfaces';\r\nimport { UserApiService } from '../../../services/api/user.api.service';\r\nimport { Router } from '@angular/router';\r\nimport { SocketService } from '../../../services/socket.service';\r\nimport { InternalMessage } from '../../../../interfaces/internal.message.interfaces';\r\nimport { InternalMessageType } from '../../../enums';\r\nimport { AuthService } from '../../../services/auth/auth.service';\r\nimport { ErrorService } from '../../../services/error.service';\r\n@Component({\r\n selector: 'claim-room-chat-dialog',\r\n templateUrl: './claim-room-chat-dialog.component.html',\r\n styleUrls: ['./claim-room-chat-dialog.component.scss']\r\n})\r\nexport class ClaimRoomChatDialogComponent implements OnInit {\r\n\r\n public groupOptions: Dropdown[] = [];\r\n public selectedGroupOptionId: number | null = null;\r\n\r\n constructor(\r\n private chatApiService: ChatApiService,\r\n private userApiService: UserApiService,\r\n private dialogService: DialogService,\r\n private toastMessageService: ToastMessageService,\r\n public dialogRef: MatDialogRef,\r\n private socketService: SocketService,\r\n private router: Router,\r\n private error: ErrorService,\r\n private authService: AuthService,\r\n @Inject(MAT_DIALOG_DATA) public data: ClaimChatDialog\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n this.dialogService.showSpinner = true;\r\n await this.getUsersGroups();\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n private async getUsersGroups(): Promise {\r\n try {\r\n const resp = await this.userApiService.getUsersGroups();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get groups.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n resp.result.map((group: Groups) => {\r\n this.groupOptions.push({\r\n label: group.txt,\r\n value: group.id\r\n });\r\n });\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get groups.', 'toast-message-error');\r\n this.error.handleError('Failed to get groups', err, 'claim-room-chat-dialog.getUserGroups()');\r\n }\r\n }\r\n\r\n public onGroupSelect(groupId: number): void { this.selectedGroupOptionId = groupId; }\r\n\r\n public async claimChat(): Promise {\r\n if (!this.selectedGroupOptionId || !this.authService.userId) return;\r\n\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const chatIds = this.data.chats.map(chat => chat.chatId);;\r\n const resp = await this.chatApiService.claimChat(chatIds, this.selectedGroupOptionId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to claim chat.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage('Chat claimed.', 'toast-message-success');\r\n const internalMessage: InternalMessage = {\r\n internalMessage: {\r\n chats: this.data.chats,\r\n serverUserId: this.authService.userId\r\n },\r\n internalMessageType: InternalMessageType.NOTIFY_USERS_CHAT_CLAIMED\r\n };\r\n this.socketService.sendInternalMessage(internalMessage);\r\n this.cancel();\r\n this.router.navigate(['/chats']);\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to claim chat', err, 'claim-room-chat-dialog.claimChat()');\r\n this.toastMessageService.showToastMessage('Failed to claim chat.', 'toast-message-error');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n public cancel() {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

Claim {{ data.chats.length }} Chats

\r\n
\r\n 0\" filter=\"true\" placeHolder=\"Select a group\"\r\n [options]=\"groupOptions\" filterPlaceHolder=\"Filter groups\" (onDropdownOptionSelect)=\"onGroupSelect($event)\">\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { Dropdown, Groups } from '../../../../interfaces/global.interfaces';\r\nimport { UserApiService } from '../../../services/api/user.api.service';\r\nimport { AuthService } from '../../../services/auth/auth.service';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { ReassignChatDialog } from '../../../../interfaces/dialog.interfaces';\r\nimport * as _ from 'lodash';\r\nimport { ClaimedChatsService } from '../../../services/chats/claimed.chats.service';\r\nimport { ErrorService } from '../../../services/error.service';\r\n\r\n@Component({\r\n selector: 'reassign-chat-dialog',\r\n templateUrl: './reassign-chat-dialog.component.html',\r\n styleUrls: ['./reassign-chat-dialog.component.scss']\r\n})\r\nexport class ReassignChatDialogComponent implements OnInit {\r\n\r\n public userOptions: Dropdown[] = [];\r\n public selectedUserOptionId: number | null = null;\r\n public groupOptions: Dropdown[] = [];\r\n public selectedGroupOptionId: number | null = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n private dialogService: DialogService,\r\n private userApiService: UserApiService,\r\n private authService: AuthService,\r\n private chatApiService: ChatApiService,\r\n private claimedChatsService: ClaimedChatsService,\r\n private toastMessageService: ToastMessageService,\r\n private error: ErrorService,\r\n @Inject(MAT_DIALOG_DATA) public data: ReassignChatDialog\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.dialogService.showSpinner = true;\r\n await this.getUsersInGroup();\r\n await this.getAllGroups();\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n private async getUsersInGroup() {\r\n try {\r\n const groupIds: number[] = _.uniq(this.data.chats.map(chat => chat.groupId));\r\n if (groupIds.length > 1) return;\r\n const resp = await this.userApiService.getOnlineUsersInGroup(groupIds[0]);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get users in group.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n if (!resp.result || resp.result.length == 0) return;\r\n resp.result.map((user: { id: number; loginName: string; }) => {\r\n this.userOptions.push({\r\n value: user.id,\r\n label: user.loginName\r\n })\r\n });\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get users in group.', 'toast-message-error');\r\n this.error.handleError('Failed to get users in group.', err, 'reassign-chat-dialog.getUsersInGroup()');\r\n }\r\n }\r\n\r\n private async getAllGroups() {\r\n if (!this.authService.user?.selectedProduct?.productId) return;\r\n try {\r\n const resp = await this.userApiService.getAllGroups(this.authService.user.selectedProduct.productId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get all groups.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n resp.result.map((group: Groups) => {\r\n this.groupOptions.push({\r\n label: group.txt,\r\n value: group.id\r\n });\r\n });\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get all groups.', 'toast-message-error');\r\n this.error.handleError('Failed to get all groups.', err, 'reassign-chat-dialog.getAllGroups()');\r\n }\r\n }\r\n\r\n public async reassignChat(): Promise {\r\n this.dialogService.showSpinner = true;\r\n try {\r\n //reassigning chat to a group\r\n if (this.selectedGroupOptionId) {\r\n const chatIds: number[] = this.data.chats.map(chat => chat.chatId);\r\n const resp = await this.chatApiService.reassignChatsToGroup(this.selectedGroupOptionId, chatIds);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to reassign chat to group.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n this.claimedChatsService.handleClosingAndReassigningChatToGroup();\r\n this.dialogRef.close(true);\r\n }\r\n }\r\n //reassigning chat to a user\r\n else if (this.selectedUserOptionId) {\r\n const resp = await this.chatApiService.reassignChatToUser(this.data.chats, this.selectedUserOptionId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to reassign chat to user.', 'toast-message-error');\r\n else if (resp.errorCode !== 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-success');\r\n const loginName: string | undefined = this.userOptions.find(u => u.value === this.selectedUserOptionId)?.label;\r\n this.dialogRef.close(true);\r\n if (loginName) {\r\n this.claimedChatsService.handleChatsReassignToUser(this.data.chats, this.selectedUserOptionId, loginName);\r\n this.claimedChatsService.setSelectedClaimChat = null;\r\n }\r\n }\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to reassign chat.', 'toast-message-error');\r\n this.error.handleError('Failed to reassign chat.', err, 'reassign-chat-dialog.reassignChat()');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n public onUserSelect(userId: number): void { this.selectedUserOptionId = userId; }\r\n\r\n public onGroupSelect(groupId: number): void { this.selectedGroupOptionId = groupId; }\r\n\r\n public cancel(): void { this.dialogRef.close(); }\r\n}","
\r\n

Reassign Chat

\r\n 0\" filter=true showClear=\"true\" placeHolder=\"Select a user\"\r\n [options]=\"userOptions\" [disabled]=\"selectedGroupOptionId ? true : false\" filterPlaceHolder=\"Filter users\"\r\n (onDropdownOptionSelect)=\"onUserSelect($event)\">\r\n \r\n\r\n 0\" [disabled]=\"selectedUserOptionId ? true : false\"\r\n filter=true showClear=\"true\" placeHolder=\"Select a group\" [options]=\"groupOptions\" filterPlaceHolder=\"Filter groups\"\r\n (onDropdownOptionSelect)=\"onGroupSelect($event)\">\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '../../../interfaces/result.interfaces';\r\nimport { BaseApiService } from '../base-api.service';\r\nimport { Template } from '../../../interfaces/template.interfaces';\r\nimport { Contacts } from '../../../interfaces/user.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TemplateApiService {\r\n\r\n private route: string = 'template/';\r\n\r\n constructor(private base: BaseApiService) { }\r\n\r\n public async getAllTemplates(): Promise {\r\n return await this.base.get('template.api.service.getAllTemplates', `${this.route}getAllTemplates`);\r\n }\r\n\r\n public async getTemplateParams(templateId: number): Promise {\r\n return await this.base.get('data.service.getTemplateParams', `${this.route}getTemplateParams?templateId=${templateId}`);\r\n }\r\n\r\n public async sendTemplateToWhatsappUser(template: Template, whatsappUser: Contacts): Promise {\r\n const payload = {\r\n template: template,\r\n whatsappUser: whatsappUser\r\n };\r\n\r\n return await this.base.post('template.api.service.sendTemplateToWhatsappUser', `${this.route}sendTemplateToWhatsappUser`, payload);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '../../../interfaces/result.interfaces';\r\nimport { BaseApiService } from '../base-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiService {\r\n\r\n constructor(private base: BaseApiService) { }\r\n\r\n public async getMimeTypes(): Promise {\r\n return await this.base.get('api.service.getMimeTypes', `getMimeTypes`);\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { AuthService } from '../../services/auth/auth.service';\r\nimport { ToastMessageService } from '../../components/toast-message/toast.message.service';\r\n\r\n@Component({\r\n\tselector: 'app-login',\r\n\ttemplateUrl: './login.component.html',\r\n\tstyleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent {\r\n\tpublic userName: string = '';\r\n\tpublic password: string = '';\r\n\tpublic waitingResponse: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate auth: AuthService,\r\n\t\tprivate error: ErrorService,\r\n\t\tprivate router: Router,\r\n\t\tprivate toastMessageService: ToastMessageService\r\n\t) { }\r\n\r\n\tpublic async login() {\r\n\t\tthis.waitingResponse = true;\r\n\t\ttry {\r\n\t\t\tconst res = await this.auth.loginUser(this.userName, this.password);\r\n\t\t\tif (!res) this.toastMessageService.showToastMessage('Failed to login', 'toast-message-error');\r\n\t\t\telse if (res.errorCode !== 0) this.toastMessageService.showToastMessage(res.errorMessage, 'toast-message-error');\r\n\t\t\telse this.router.navigate(['/chats']);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tthis.toastMessageService.showToastMessage('Failed to login', 'toast-message-error');\r\n\t\t\tthis.error.handleError('Failed to Login', error, 'login.login()');\r\n\t\t}\r\n\t\tthis.waitingResponse = false;\r\n\t}\r\n}","
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n Username\r\n \r\n \r\n \r\n Password\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissionsService {\r\n public requestNotificationsPermissions() {\r\n if (!('Notification' in window)) {\r\n alert('This browser does not support desktop notification');\r\n }\r\n else if (Notification.permission === 'granted') {\r\n return;\r\n }\r\n //default = neither deined nor granted\r\n else if (Notification.permission === 'default') {\r\n Notification.requestPermission();\r\n }\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { fromEvent } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BrowserService {\r\n\r\n private _browserFocused: boolean = false;\r\n private _visiblility: string = '';\r\n\r\n public get browserFocused(): boolean { return this._browserFocused; }\r\n\r\n public get visiblility(): string { return this._visiblility; }\r\n\r\n public set browserFocused(value: boolean) { this._browserFocused = value; }\r\n\r\n public set visiblility(value: string) { this._visiblility = value; }\r\n\r\n constructor() { this.setupFocusDetection(); this.initializePageVisibility(); }\r\n \r\n private setupFocusDetection(): void {\r\n const focus$ = fromEvent(window, 'focus');\r\n const blur$ = fromEvent(window, 'blur');\r\n\r\n focus$.subscribe(() => {\r\n this.browserFocused = true;\r\n });\r\n\r\n blur$.subscribe(() => {\r\n this.browserFocused = false;\r\n });\r\n }\r\n\r\n private initializePageVisibility(): void {\r\n document.addEventListener('visibilitychange', () => {\r\n this.visiblility = document.visibilityState;\r\n });\r\n\r\n this.visiblility = document.visibilityState;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport * as moment from \"moment\";\r\nimport { DisplayMessages, Message, MessageFileResult, MessageStatus } from \"../../interfaces/message.interfaces\";\r\nimport * as _ from \"lodash\";\r\nimport { ClaimedChatsService } from \"./chats/claimed.chats.service\";\r\nimport { MessageStatusInternalMessage } from \"../../interfaces/internal.message.interfaces\";\r\nimport { DomSanitizer, SafeUrl } from \"@angular/platform-browser\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n private _messages: Message[] = [];\r\n private _displayMessages: DisplayMessages[] = [];\r\n\r\n public get messages(): Message[] { return this._messages; }\r\n public get displayMessages(): DisplayMessages[] { return this._displayMessages; }\r\n\r\n public set messages(messages: Message[]) { this._messages = messages; }\r\n public set displayMessages(messages: DisplayMessages[]) { this._displayMessages = messages; }\r\n\r\n constructor(private claimedChatService: ClaimedChatsService, private sanitizer: DomSanitizer) { }\r\n\r\n public handleDisplayMessages(): void {\r\n this.displayMessages = [];\r\n const messageDates = this.getMessageDates();\r\n\r\n for (const date of messageDates) {\r\n const messages = this.getMessagesForDate(date);\r\n this.displayMessages.push({\r\n date: date,\r\n messages: messages\r\n });\r\n }\r\n }\r\n\r\n private getMessageDates(): string[] {\r\n const uniqueDates = _.uniq(this.messages.map(message => moment(new Date(message.sendDate)).format('YYYY-MM-DD')));\r\n const sortedDates = _.sortBy(uniqueDates, date => moment(new Date(date)));\r\n return sortedDates.map(date => this.formatMessageDate(date));\r\n }\r\n\r\n private formatMessageDate(dateString: string): string {\r\n const today = moment();\r\n const yesterday = moment().subtract(1, 'day');\r\n const messageDate = moment(new Date(dateString));\r\n\r\n if (messageDate.isSame(today, 'day')) {\r\n return 'Today';\r\n } else if (messageDate.isSame(yesterday, 'day')) {\r\n return 'Yesterday';\r\n } else if (messageDate.isSame(today, 'week')) {\r\n // if within the same week we going to display the day of the week\r\n return messageDate.format('dddd');\r\n } else {\r\n return messageDate.format('YYYY-MM-DD');\r\n }\r\n }\r\n\r\n public getMessagesForDate(date: string): Message[] {\r\n const today = moment();\r\n const yesterday = moment().subtract(1, 'day');\r\n\r\n return this.messages.filter(message => {\r\n const messageDate = moment(new Date(message.sendDate));\r\n\r\n if (messageDate.isSame(today, 'day') && date === 'Today') {\r\n return true;\r\n } else if (messageDate.isSame(yesterday, 'day') && date === 'Yesterday') {\r\n return true;\r\n } else if (messageDate.isSame(today, 'week') && date === messageDate.format('dddd')) {\r\n return true;\r\n } else if (date === messageDate.format('YYYY-MM-DD')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public handleMessageStatusupdate(message: MessageStatusInternalMessage) {\r\n if (!this.claimedChatService.claimedChatsPanel) return;\r\n\r\n for (const chatPanel of this.claimedChatService.claimedChatsPanel) {\r\n for (const chat of chatPanel.chats) {\r\n const messageIndex = chat.messages.findIndex(m => m.messageId === message.messageId);\r\n\r\n if (messageIndex !== -1) {\r\n if (!chat.messages[messageIndex].deliveredDate) chat.messages[messageIndex].deliveredDate = message.deliveredDate;\r\n if (!chat.messages[messageIndex].readDate) chat.messages[messageIndex].readDate = message.readDate;\r\n if (!chat.messages[messageIndex].undeliveredDate) chat.messages[messageIndex].undeliveredDate = message.undeliveredDate;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public handleMessageStatusIcon(sendDate: Date, readDate: Date, deliveredDate: Date, undeliveredDate: Date): MessageStatus {\r\n if (undeliveredDate) {\r\n return {\r\n messageStatusIcon: 'error',\r\n messageStatusIconClass: 'error'\r\n };\r\n } else if (readDate) {\r\n return {\r\n messageStatusIcon: 'done_all',\r\n messageStatusIconClass: 'read'\r\n };\r\n }\r\n else if (deliveredDate) return { messageStatusIcon: 'done_all', messageStatusIconClass: '' };\r\n else if (sendDate) return { messageStatusIcon: 'done', messageStatusIconClass: '' };\r\n else return { messageStatusIcon: '', messageStatusIconClass: '' };\r\n }\r\n\r\n public isMessageAFile(extension: string | null | undefined): MessageFileResult | null {\r\n\r\n if (!extension) return null;\r\n\r\n const result = {\r\n isMessageMedia: true,\r\n isMessageAnImage: false,\r\n isMessageAFile: false,\r\n isMessageVideo: false,\r\n isMessageAudio: false\r\n };\r\n\r\n const imageExtensions: string[] = ['jpg', 'png', 'jpeg'];\r\n const audioExtensions: string[] = ['mp3', 'ogg', 'amr', 'wav'];\r\n const mediaExtensions: string[] = ['mp4', 'mpeg'];\r\n\r\n if (imageExtensions.includes(extension)) result.isMessageAnImage = true;\r\n else if (extension == 'pdf') result.isMessageAFile = true;\r\n else if (mediaExtensions.includes(extension)) result.isMessageVideo = true;\r\n else if (audioExtensions.includes(extension)) result.isMessageAudio = true;\r\n\r\n return result;\r\n }\r\n\r\n public sanitizeImageUrl(imageUrl: string): SafeUrl { return this.sanitizer.bypassSecurityTrustUrl(imageUrl); }\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { LoginComponent } from './page/login/login.component';\r\nimport { AuthManager } from './services/auth/auth.manager';\r\nimport { ChatsLandingPageComponent } from './page/chats-landing-page/chats-landing-page.component';\r\nimport { ChatRoomsComponent } from './page/chat-rooms/chat-rooms.component';\r\nimport { ContactsComponent } from './page/contacts/contacts.component';\r\nimport { TemplateManagerComponent } from './page/template-manager/template-manager.component';\r\nimport { ClosedChatsComponent } from './page/closed-chats/closed-chats.component';\r\nimport { OnlineUsersComponent } from './page/online-users/online-users.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'chats',\r\n component: ChatsLandingPageComponent,\r\n canActivate: [AuthManager]\r\n },\r\n {\r\n path: 'chat-rooms',\r\n component: ChatRoomsComponent,\r\n canActivate: [AuthManager]\r\n },\r\n {\r\n path: 'contacts',\r\n component: ContactsComponent,\r\n canActivate: [AuthManager]\r\n },\r\n {\r\n path: 'online-users',\r\n component: OnlineUsersComponent,\r\n canActivate: [AuthManager]\r\n },\r\n {\r\n path: 'template-manager',\r\n component: TemplateManagerComponent,\r\n canActivate: [AuthManager]\r\n },\r\n {\r\n path: 'closed-chats',\r\n component: ClosedChatsComponent,\r\n canActivate: [AuthManager]\r\n },\r\n {\r\n path: 'error',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'accessdenied',\r\n component: LoginComponent\r\n },\r\n {\r\n path: '404',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: '',\r\n component: LoginComponent\r\n },\r\n {\r\n path: '**',\r\n redirectTo: '/login'\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '../../../interfaces/result.interfaces';\r\nimport { BaseApiService } from '../base-api.service';\r\nimport { Chat, RoomChat } from '../../../interfaces/chat.interfaces';\r\nimport { MessageFile } from '../../../interfaces/message.interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChatApiService {\r\n\r\n private route: string = 'chat/';\r\n constructor(private base: BaseApiService) { }\r\n\r\n public async claimChats(): Promise {\r\n return await this.base.post('chat.api.service.claimChats', `${this.route}claimChats`, null);\r\n }\r\n\r\n public async getClaimedChats(): Promise {\r\n return await this.base.get('chat.api.service.getClaimedChats', `${this.route}getClaimedChats`);\r\n }\r\n\r\n public async getMessagesForChatId(chatId: number): Promise {\r\n return await this.base.get('chat.api.service.getMessagesForChatId', `${this.route}getMessagesForChatId?chatId=${chatId}`);\r\n }\r\n\r\n public async closeChats(chats: Chat[] | RoomChat[]): Promise {\r\n return await this.base.post('chat.api.service.closeChats', `${this.route}closeChats`, chats);\r\n }\r\n\r\n public async reassignChatsToGroup(groupId: number, chatIds: number[]): Promise {\r\n const payload = {\r\n chatIds: chatIds,\r\n groupId: groupId\r\n };\r\n\r\n return await this.base.post('chat.api.service.reassignChatsToGroup', `${this.route}reassignChatsToGroup`, payload);\r\n }\r\n\r\n public async reassignChatToUser(chats: Chat[], reassignToUserId: number): Promise {\r\n const payload = {\r\n chats: chats,\r\n reassignToUserId: reassignToUserId\r\n };\r\n\r\n return await this.base.post('chat.api.service.reassignChatToUser', `${this.route}reassignChatToUser`, payload);\r\n }\r\n\r\n public async updateChatNotes(chatId: number, notes: string): Promise {\r\n const payload = {\r\n chatId: chatId,\r\n notes: notes\r\n };\r\n\r\n return await this.base.post('chat.api.service.updateChatNotes', `${this.route}updateChatNotes`, payload);\r\n }\r\n\r\n public async updateChatRefNo(chatId: number, refNo: string): Promise {\r\n const payload = {\r\n chatId: chatId,\r\n refNo: refNo,\r\n };\r\n\r\n return await this.base.post('chat.api.service.updateChatRefNo', `${this.route}updateChatRefNo`, payload);\r\n }\r\n\r\n public async claimChat(chatIds: number[], groupId: number): Promise {\r\n const json = {\r\n chatIds: chatIds,\r\n groupId: groupId\r\n };\r\n return await this.base.post('chat.api.service.claimChat', `${this.route}claimChat`, json);\r\n }\r\n\r\n public async getChatRooms(): Promise {\r\n return await this.base.get('chat.api.service.getChatRooms', `${this.route}getChatRooms`);\r\n }\r\n\r\n public async getClosedChatsFromDateAndOptionallyUser(fromDate: Date, systemUserId?: number, whatsappUserId?: number): Promise {\r\n const payload = {\r\n fromDate: fromDate,\r\n systemUserId: systemUserId,\r\n whatsappUserId: whatsappUserId\r\n };\r\n\r\n return await this.base.post('chat.api.service.getClosedChatsFromDateAndOptionallyUser', `${this.route}getClosedChatsFromDateAndOptionallyUser`, payload);\r\n }\r\n\r\n public async sendWhatsappMessage(chatId: number, body: string, messageFile?: MessageFile | null): Promise {\r\n const payload = {\r\n chatId: chatId,\r\n body: body,\r\n messageFile: messageFile\r\n };\r\n\r\n return await this.base.post('chat.api.service.sendWhatsappMessage', `${this.route}sendWhatsappMessage`, payload);\r\n }\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ProductService } from '../../services/products.service';\r\nimport { SocketService } from '../../services/socket.service';\r\n\r\n@Component({\r\n selector: 'app-side-menu',\r\n templateUrl: './side-menu.component.html',\r\n styleUrls: ['./side-menu.component.scss']\r\n})\r\nexport class SideMenuComponent {\r\n @Input() public socketService!: SocketService;\r\n @Input() public productService!: ProductService;\r\n @Output() public onMenuStateChange: EventEmitter = new EventEmitter();\r\n\r\n constructor() { }\r\n}","
\r\n
\r\n \"Avecs\"\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { CdkTreeModule } from '@angular/cdk/tree';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatNativeDateModule , MatRippleModule} from '@angular/material/core';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\r\nimport { Ng2SearchPipeModule } from 'ng2-search-filter';\r\nimport { NgxMatDatetimePickerModule, NgxMatTimepickerModule } from '@angular-material-components/datetime-picker';\r\nimport { NgxMatMomentModule } from '@angular-material-components/moment-adapter';\r\n\r\n@NgModule({\r\n exports: [\r\n A11yModule,\r\n ClipboardModule,\r\n CdkStepperModule,\r\n CdkTableModule,\r\n CdkTreeModule,\r\n DragDropModule,\r\n MatAutocompleteModule,\r\n MatBadgeModule,\r\n MatBottomSheetModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatStepperModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatTreeModule,\r\n OverlayModule,\r\n PortalModule,\r\n ScrollingModule,\r\n MatDialogModule,\r\n Ng2SearchPipeModule,\r\n NgxMatDatetimePickerModule,\r\n NgxMatTimepickerModule,\r\n NgxMatMomentModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatSortModule\r\n ],\r\n providers: [\r\n { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'fill' } },\r\n ],\r\n})\r\n\r\nexport class MaterialModule {}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Message } from '../../../../interfaces/message.interfaces';\r\nimport { ChatApiService } from '../../../services/api/chat.api.service';\r\nimport { ChatService } from '../../../services/chats/chat.service';\r\nimport { DialogService } from '../dialog.service';\r\nimport { ToastMessageService } from '../../toast-message/toast.message.service';\r\nimport { DialogComponent } from '../dialog.component';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ClaimChatDialog } from '../../../../interfaces/dialog.interfaces';\r\nimport { Dropdown, Groups } from '../../../../interfaces/global.interfaces';\r\nimport { UserApiService } from '../../../services/api/user.api.service';\r\nimport { Router } from '@angular/router';\r\nimport { ClaimedChatsService } from '../../../services/chats/claimed.chats.service';\r\nimport { RoomChat } from '../../../../interfaces/chat.interfaces';\r\nimport { InternalMessage } from '../../../../interfaces/internal.message.interfaces';\r\nimport { InternalMessageType } from '../../../enums';\r\nimport { AuthService } from '../../../services/auth/auth.service';\r\nimport { SocketService } from '../../../services/socket.service';\r\nimport { ErrorService } from '../../../services/error.service';\r\n\r\n@Component({\r\n selector: 'messages-preview-claim-chat-dialog',\r\n templateUrl: './messages-preview-claim-chat-dialog.component.html',\r\n styleUrls: ['./messages-preview-claim-chat-dialog.component.scss']\r\n})\r\nexport class MessagesPreviewClaimChatDialogComponent implements OnInit {\r\n\r\n public groupOptions: Dropdown[] = [];\r\n public selectedGroupOptionId: number | null = null;\r\n public messages: Message[] = [];\r\n public whatsAppUserName: string | undefined = '';\r\n public chat: RoomChat | null = null;\r\n\r\n constructor(\r\n private chatApiService: ChatApiService,\r\n private chatService: ChatService,\r\n private userApiService: UserApiService,\r\n private dialogService: DialogService,\r\n private toastMessageService: ToastMessageService,\r\n public dialogRef: MatDialogRef,\r\n private router: Router,\r\n private claimedChatsService: ClaimedChatsService,\r\n private authService: AuthService,\r\n private socketService: SocketService,\r\n private error: ErrorService,\r\n @Inject(MAT_DIALOG_DATA) public data: ClaimChatDialog\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n this.chat = this.data.chats[0];\r\n this.dialogService.showSpinner = true;\r\n this.whatsAppUserName = this.chatService.getFormattedName(this.chat.firstName, this.chat.lastName, this.chat.whatsappUserNumber);\r\n await this.getMessagesForChatId();\r\n await this.getUsersGroups();\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n private async getMessagesForChatId(): Promise {\r\n if (!this.chat) return;\r\n try {\r\n const resp = await this.chatApiService.getMessagesForChatId(this.chat.chatId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get messages for chat.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else this.messages = resp.result;\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get messages for chat.', 'toast-message-error');\r\n this.error.handleError('Failed to get messages for chat.', err, 'messages-preview-claim-chat-dialog.getMessagesForChatId()');\r\n }\r\n }\r\n\r\n private async getUsersGroups(): Promise {\r\n try {\r\n const resp = await this.userApiService.getUsersGroups();\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to get groups.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n resp.result.map((group: Groups) => {\r\n this.groupOptions.push({\r\n label: group.txt,\r\n value: group.id\r\n });\r\n });\r\n }\r\n } catch (err) {\r\n this.toastMessageService.showToastMessage('Failed to get groups.', 'toast-message-error');\r\n this.error.handleError('Failed to get groups.', err, 'messages-preview-claim-chat-dialog.getUsersGroups()');\r\n }\r\n }\r\n\r\n public onGroupSelect(groupId: number): void {\r\n this.selectedGroupOptionId = groupId;\r\n }\r\n\r\n public async claimChat(): Promise {\r\n if (!this.chat || !this.authService.userId || !this.selectedGroupOptionId) return;\r\n this.dialogService.showSpinner = true;\r\n try {\r\n const resp = await this.chatApiService.claimChat([this.chat.chatId], this.selectedGroupOptionId);\r\n if (!resp) this.toastMessageService.showToastMessage('Failed to claim chat.', 'toast-message-error');\r\n else if (resp.errorCode != 0) this.toastMessageService.showToastMessage(resp.errorMessage, 'toast-message-error');\r\n else {\r\n this.toastMessageService.showToastMessage('Chat claimed.', 'toast-message-success');\r\n this.claimedChatsService.claimedChatIdFromRoom = this.chat.chatId;\r\n const internalMessage: InternalMessage = {\r\n internalMessage: {\r\n chats: this.data.chats,\r\n serverUserId: this.authService.userId\r\n },\r\n internalMessageType: InternalMessageType.NOTIFY_USERS_CHAT_CLAIMED\r\n };\r\n this.socketService.sendInternalMessage(internalMessage);\r\n this.cancel();\r\n this.router.navigate(['/chats']);\r\n }\r\n } catch (err) {\r\n this.error.handleError('Failed to claim chat.', err, 'messages-preview-claim-chat-dialog.claimChat()');\r\n this.toastMessageService.showToastMessage('Failed to claim chat.', 'toast-message-error');\r\n }\r\n this.dialogService.showSpinner = false;\r\n }\r\n\r\n public cancel() {\r\n this.dialogRef.close();\r\n }\r\n}","
\r\n

{{ whatsAppUserName }}'s Chat Messages

\r\n
\r\n \r\n
\r\n
\r\n 0\" filter=\"true\" placeHolder=\"Select a group\"\r\n [options]=\"groupOptions\" filterPlaceHolder=\"Filter groups\" (onDropdownOptionSelect)=\"onGroupSelect($event)\">\r\n \r\n\r\n \r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar, MatSnackBarConfig, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\r\nimport { ToastMessageComponent } from './toast-message.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastMessageService {\r\n constructor(private snackBar: MatSnackBar) { }\r\n\r\n //available horizontal position = 'start' | 'center' | 'end' | 'left' | 'right'\r\n //available vertical position = 'top' | 'bottom'\r\n //panelClass is the css class for the toast message, e.g. toast-message-error\r\n public showToastMessage(message: string, panelClass: string = '', durationInMs: number = 3000, verticalPosition: string = 'top', horizontalPosition: string = 'right') {\r\n const config: MatSnackBarConfig = {\r\n data: { message },\r\n duration: durationInMs,\r\n horizontalPosition: horizontalPosition as MatSnackBarHorizontalPosition,\r\n verticalPosition: verticalPosition as MatSnackBarVerticalPosition,\r\n panelClass: panelClass\r\n };\r\n\r\n this.snackBar.openFromComponent(ToastMessageComponent, config);\r\n }\r\n}","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}