tango-app-ui-manage-users 3.4.0-alpha.7 → 3.4.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tango-app-ui-manage-users.mjs","sources":["../../../projects/tango-manage-users/src/lib/services-v2/manage-users.service.ts","../../../projects/tango-manage-users/src/lib/services/user.service.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.html","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.html","../../../projects/tango-manage-users/src/lib/services/excel.service.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.html","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users-routing.module.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users.module.ts","../../../projects/tango-manage-users/src/public-api.ts","../../../projects/tango-manage-users/src/tango-app-ui-manage-users.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ManageUsersService {\r\n dropDownTrigger = new BehaviorSubject(null)\r\n private userApiUrl:string = '';\r\n middlewareApiUrl: any;\r\n teamsApiUrl: any;\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.middlewareApiUrl = env.middlewareApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.userApiUrl = env.userApiUrl;\r\n }\r\n })\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n getAllCountries(): Observable<any> {\r\n return this.http.get(`${this.middlewareApiUrl}/get-countries`);\r\n }\r\n\r\n getallusersList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/get-allusers`, params);\r\n }\r\n getTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/list`, params);\r\n }\r\n getTeamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/list`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n \r\n deleteTeam(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/delete`, params);\r\n }\r\n getviewteamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/view`, params);\r\n }\r\n getviewteamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/view`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n createTeams(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/create`, params);\r\n }\r\n editTeamsdata(data: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.teamsApiUrl}/get`, { params: { teamId: data._id }})\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n updateTeam(data: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.teamsApiUrl}/update/${data.teamId}`, data)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getAllTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, params);\r\n }\r\n teamBulkUpload(storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.teamsApiUrl}/teamBulkUpload`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n updateUsers(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-users`, userBody)\r\n .pipe(\r\n map((response: any) => response) \r\n );\r\n }\r\n\r\n private viewTeamsSubject = new BehaviorSubject<boolean>(false);\r\n \r\n // Expose an observable for components to subscribe to\r\n viewTeams$ = this.viewTeamsSubject.asObservable();\r\n\r\n // Method to toggle the view\r\n setViewTeam(value: boolean) {\r\n this.viewTeamsSubject.next(value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class UserService {\r\n private userApiUrl: string = '';\r\n private roleApiUrl: string = '';\r\n private storeApiUrl: string = '';\r\n private groupApiUrl: string = '';\r\n private auditWalletApiUrl: string = '';\r\n dataSubject = new BehaviorSubject<any>(null);\r\n rolesComms = new BehaviorSubject<any>(null);\r\n private clusterApiUrl: string = '';\r\n private teamsApiUrl: string = ''\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.userApiUrl = env.userApiUrl;\r\n this.roleApiUrl = env.roleApiUrl;\r\n this.storeApiUrl = env.storeApiUrl;\r\n this.groupApiUrl = env.groupApiUrl;\r\n this.clusterApiUrl = env.clusterApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.auditWalletApiUrl = env.auditWalletApiUrl\r\n }\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n\r\n getUserList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/get-list-v2`, params);\r\n }\r\n getUserListExport(data: any) {\r\n return this.http.post(`${this.userApiUrl}/get-list-v2`, data, { responseType: 'arraybuffer' })\r\n }\r\n getUser(userEmail: string): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.userApiUrl}/get-user-details`, {\r\n params: { email: userEmail },\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getRoles(req: any): Observable<any> {\r\n return this.http.post<any>(`${this.roleApiUrl}/get-roles`, req).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createUser(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/create-user`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n\r\n updateUser(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-user`, userBody)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n userBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/create-users`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n\r\n getPersmissions(filter: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.roleApiUrl}/get-permission`, filter)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignStores(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.storeApiUrl}/store-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignGroups(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.groupApiUrl}/group-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n assignData(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assignData`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n assignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignclusters(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/AllclusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignteams(data: any) {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n reAssignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/reassign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getUserAssignDetails(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-stores`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getUserAssignData(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-Data`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createUsers(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/createUser`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n private messageSource = new BehaviorSubject<any>(\"default message\");\r\n currentMessage = this.messageSource.asObservable();\r\n\r\n changeMessage(message: any) {\r\n this.messageSource.next(message);\r\n }\r\n createSingleUsers(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/createUser`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n createBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/createUsers`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n getClusterList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getClusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getProductList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getproductList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data })\r\n }\r\n\r\n ExportgetAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getAuditUserDetails(data: string) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/get-audit-user-details?userEmail=${data}`)\r\n }\r\n\r\n getConsolidatedCard(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/consolidated-card`, { params: data })\r\n }\r\n\r\n getAuditWalletSummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data })\r\n }\r\n\r\n ExportWalletAummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getGenerateReport(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/generate-report`, { params: data })\r\n }\r\n\r\n\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'team-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n\r\n @Output() selected = new EventEmitter<any>()\r\n @Output() deselected = new EventEmitter<any>()\r\n @Output() deselectedAll = new EventEmitter<any>()\r\n\r\n\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n\r\n\r\n constructor(private cd: ChangeDetectorRef, private authService: ManageUsersService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e) => {\r\n if (e !== this.instanceId) {\r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes['items']) {\r\n if (this.items?.length) {\r\n this.initializeItems();\r\n } else {\r\n this.filteredValues = []\r\n }\r\n\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {\r\n this.updateSelectedValues();\r\n }\r\n }\r\n\r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n\r\n updateSelectedValues() {\r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n\r\n onSelect(event: any, item: any) {\r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item);\r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n this.deselected.emit(item);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element: any) => {\r\n if (element[this.idField] !== item[this.idField]) {\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n\r\n }\r\n\r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n\r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.deselectedAll.emit(this.selectedValues);\r\n this.selectedValues = [];\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n\r\n\r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n\r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> \r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 2\">+{{selectedValues?.length -2}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, Subscription, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { UserService } from '../../services/user.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n@Component({\r\n selector: 'lib-add-users',\r\n templateUrl: './add-users.component.html',\r\n styleUrl: './add-users.component.scss'\r\n})\r\nexport class AddUsersComponent implements OnDestroy, OnInit {\r\n private readonly destroy = new Subject();\r\n @Input() type: any;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Input() data: any;\r\n userForm: FormGroup;\r\n operationType: string = 'add';\r\n teamList: any = []\r\n countryList: any;\r\n selectedUser: any = [];\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n user_data: any;\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n\r\n ];\r\n\r\n handleViewChange(modules: FormGroup | any): void {\r\n if (!modules.get(\"isAdd\")?.value) {\r\n modules.get(\"isDelete\")?.setValue(false);\r\n modules.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(modules: FormGroup | any): void {\r\n // if (!modules.get(\"isAdd\")?.value) {\r\n // modules.get(\"isDelete\")?.setValue(false);\r\n // modules.get(\"isEdit\")?.setValue(false);\r\n // }\r\n if (!modules.get(\"isEdit\")?.value) {\r\n // modules.get('isDownload')?.setValue(false);\r\n modules.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n\r\n constructor(private service: ManageUsersService,\r\n private cd: ChangeDetectorRef,\r\n public activeModal: NgbActiveModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService,\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n\r\n this.destroy.next(false);\r\n this.destroy.complete();\r\n\r\n }\r\n ngOnInit(): void {\r\n console.log(this.type)\r\n let data: any;\r\n if (\"header-filters\" in localStorage) {\r\n data = JSON.parse(localStorage.getItem('header-filters') || '');\r\n }\r\n this.user_data = JSON?.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n this.getCountryCodes();\r\n this.getRoles();\r\n this.getAllTeamsList()\r\n if (this.type === \"view\" || (this.type === \"edit\")) {\r\n // this.addSingleUser();\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n // this.getAllTeamsList()\r\n // this.showsingleuser = false;\r\n }\r\n\r\n }\r\n\r\n getRoles() {\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode;\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.user_data.userType);\r\n }\r\n getCountryCodes() {\r\n this.service.getAllCountries().subscribe({\r\n next: (res) => {\r\n this.countryList = res.data\r\n this.cd.detectChanges()\r\n },\r\n error: (err) => {\r\n\r\n }\r\n })\r\n }\r\n onrolechange(event: any) {\r\n console.log(event.target.value)\r\n if (event.target.value === 'user') {\r\n this.populatePermission(this.permissionArray);\r\n }\r\n\r\n }\r\n onStoreSelect(event: any) {\r\n this.selectedUser = event\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamLeadArray.clear(); // Clears existing values\r\n\r\n this.selectedUser.forEach((user: any) => {\r\n teamLeadArray.push(new FormControl(user)); // Adds each user in selectedUser array\r\n });\r\n ;\r\n // this.setTeamLeads(event);\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n const triggerButton = document.querySelector('#triggerButtonId') as HTMLElement;\r\n triggerButton?.focus();\r\n }\r\n // onSubmit() {\r\n // this.activeModal.close('submit');\r\n // }\r\n loadUserForm() {\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n this.userForm = this.fb.group({\r\n userName: [res.data.result.userName, Validators.required],\r\n email: [res.data.result.email, Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [res.data.result.mobileNumber, [Validators.required, Validators.minLength(10), Validators.maxLength(13)]],\r\n role: [res.data.result.role, Validators.required],\r\n userType: [res.data.result.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [res.data.result.countryCode, Validators.required],\r\n });\r\n this.updateTangouserField(res.data.result.tangoUserType);\r\n if (this.type == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.selectedUser = res.data.teamsList\r\n if (this.selectedUser.length) {\r\n this.setTeamLeads(this.selectedUser);\r\n }\r\n // Promise.resolve().then(() => {\r\n // this.userForm.get('teamLead')?.setValue();\r\n this.populatePermission(res?.data?.result?.rolespermission);\r\n // });\r\n\r\n if (this.operationType == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.cd.detectChanges();\r\n // this.getUserPermissionData(res.data.result.role,res.data.result.userType);\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n updateTangouserField(tangoUserType:any) {\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control(tangoUserType || 'dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(10), Validators.maxLength(15)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [\"\", Validators.required],\r\n });\r\n\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control('dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n this.getUserPermissionData(\"user\", this.user_data.userType);\r\n }\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"rolespermission\") as FormArray;\r\n permissions.clear(); // Clear existing entries\r\n\r\n permissionsData.forEach((rolespermission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [rolespermission?.featureName],\r\n modules: this.fb.array([]), // Initialize modules as a FormArray\r\n });\r\n\r\n const modulesArray = featureGroup.get(\"modules\") as FormArray;\r\n rolespermission.modules.forEach((module: any) => {\r\n const moduleGroup = this.fb.group({\r\n name: [module.name],\r\n isAdd: [{ value: module.isAdd, disabled: this.type === 'view' }], // Set disabled based on type\r\n isEdit: [{ value: module.isEdit, disabled: this.type === 'view' }], // Set disabled based on type\r\n // isDelete: [module.isDelete],\r\n });\r\n modulesArray.push(moduleGroup); // Add each module to modules array\r\n });\r\n\r\n permissions.push(featureGroup); // Add each feature group to permissions\r\n });\r\n\r\n // Trigger validation after populating\r\n permissions.updateValueAndValidity();\r\n }\r\n\r\n getPermissions(): FormArray {\r\n // console.log(this.userForm.value)\r\n return this.userForm.get(\"rolespermission\") as FormArray;\r\n\r\n }\r\n getFeaturePermissions(rolespermission: FormGroup | any): FormArray {\r\n return rolespermission.get(\"modules\") as FormArray;\r\n }\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm?.get(\"rolespermission\") as FormArray).clear();\r\n this.populatePermission(this.permissionArray);\r\n }\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n\r\n addUserSubmit() {\r\n let value = this.updatePermissionsBasedOnUserType(this.userForm.value)\r\n const updatedData = this.removeNullValues(value);\r\n this.userService.createSingleUsers({ ...updatedData, ...{ clientId: this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId } }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true)\r\n\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close('submit');\r\n }\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n onSubmit() {\r\n if (this.type == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n this.userForm.get(\"email\")?.disable();\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n updatePermissionsBasedOnUserType(user: any) {\r\n user.rolespermission.forEach((feature: any) => {\r\n feature.modules.forEach((modules: any) => {\r\n // if (user.userType === \"superAdmin\") {\r\n // modules.isAdd = true;\r\n // modules.isEdit = true;\r\n // // modules.isDelete = true;\r\n // } else \r\n if (user.userType === \"users\") {\r\n modules.isAdd = false;\r\n modules.isEdit = false;\r\n // modules.isDelete = false;\r\n }\r\n });\r\n });\r\n return user;\r\n }\r\n removeNullValues = (data: any) => {\r\n if (!Array.isArray(data.rolespermission)) {\r\n throw new Error(\"Permission is not an array\");\r\n }\r\n\r\n // Map through the permissions and products to remove null values\r\n return {\r\n ...data,\r\n rolespermission: data.rolespermission.map((feature: any) => {\r\n return {\r\n ...feature,\r\n modules: feature.modules.map((modules: any) => {\r\n const newProduct: { [key: string]: any } = {};\r\n for (const [key, value] of Object.entries(modules)) {\r\n if (value !== null) {\r\n newProduct[key] = value;\r\n }\r\n }\r\n return newProduct;\r\n })\r\n };\r\n })\r\n };\r\n };\r\n getAllTeamsList() {\r\n this.service.getAllTeamsList({ clientId: this.$headerFilters.client }).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamList = res.data.result\r\n }\r\n })\r\n }\r\n editUser() {\r\n if (this.user?.isActive) {\r\n this.type = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n } else if (this.user?.status === 'active') {\r\n this.type = \"view\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n isButtonDisabled(): boolean {\r\n const { teamLead, ...controlsToCheck } = this.userForm.controls;\r\n return Object.values(controlsToCheck).some(control => control.invalid);\r\n }\r\n setTeamLeads(teamList: any[]) {\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamList.forEach(team => {\r\n // Push each team object as a new FormGroup into the teamLead FormArray\r\n if (team.clientId) {\r\n teamLeadArray.push(this.fb.group({\r\n _id: new FormControl(team._id),\r\n clientId: new FormControl(team.clientId),\r\n teamName: new FormControl(team.teamName),\r\n usersCount: new FormControl(team.usersCount)\r\n }));\r\n }\r\n\r\n });\r\n }\r\n}","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5 d-flex\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div>\r\n\r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"type!=='view' && type!=='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <!-- <div *ngIf=\"type==='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit User Details</a>\r\n <div class=\"sub-title\">Please Edit your user details</div>\r\n </div> -->\r\n <div *ngIf=\"type==='view' && type !=='edit'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <ng-container *ngIf=\"operationType!=='view'\">\r\n <div\r\n *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit && type ==='view' && type !=='edit' && user?.role !== 'superadmin'\"\r\n class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"type==='edit' && type !=='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">Edit your user details</div>\r\n </div>\r\n <div class=\"w-100 h-0px scroll\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <!-- User Name Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name <span\r\n class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\" autocomplete=\"off\">\r\n <div *ngIf=\"userForm.get('userName')?.invalid && (userForm.get('userName')?.dirty)\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('userName')?.errors?.['required']\">User Name is required.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Email Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\" autocomplete=\"off\">\r\n <div *ngIf=\"userForm.get('email')?.invalid && userForm.get('email')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('email')?.errors?.['required']\">Email is required.</small>\r\n <small *ngIf=\"userForm.get('email')?.errors?.['pattern']\">Invalid email format.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Contact Number Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number <span\r\n class=\"alert-required text-danger\">*</span></label>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-4 col-xl-4\">\r\n <select class=\"form-select ps-3 pe-8\" id=\"inputGroupSelect01\" formControlName=\"countryCode\">\r\n <option *ngFor=\"let country of countryList\" [value]=\"country.phonecode\">\r\n {{country.name}} ({{country.phonecode}})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-8 col-xl-8\">\r\n <input type=\"text\" class=\"form-control\" (keypress)=\"omit_special_char($event)\" id=\"mobileNumber\"\r\n autocomplete=\"off\" formControlName=\"mobileNumber\">\r\n <div *ngIf=\"userForm.get('mobileNumber')?.invalid && userForm.get('mobileNumber')?.touched\"\r\n class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['required']\">Contact Number is\r\n required.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['minlength']\">Contact Number must be at least\r\n 10 digits.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['maxlength']\">Contact Number cannot exceed 13\r\n digits.</small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Role Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role <span class=\"alert-required text-danger\">*</span></label>\r\n <select class=\"form-select\" formControlName=\"role\" (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n <div *ngIf=\"userForm.get('role')?.invalid && userForm.get('role')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('role')?.errors?.['required']\">Role is required.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- User Type Field -->\r\n <div *ngIf=\"this.userType ==='tango'\" class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"tangoUserType\" class=\"form-label\">User Type <span\r\n class=\"alert-required text-danger\">*</span></label>\r\n <select class=\"form-select\" formControlName=\"tangoUserType\"\r\n (change)=\"onRoleChange(userForm.get('tangoUserType')?.value)\">\r\n <option value=\"dashboard\">Dashboard</option>\r\n <option value=\"audit\">Audit</option>\r\n </select>\r\n <div *ngIf=\"userForm.get('tangoUserType')?.invalid && userForm.get('tangoUserType')?.touched\"\r\n class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('tangoUserType')?.errors?.['required']\">User Type is required.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Add to Team Field -->\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\" *ngIf=\"this.userType !=='tango'\">\r\n <label for=\"teamLead\" class=\"form-label teams-title\">Add to a team</label>\r\n <team-select [items]=\"teamList\" [multi]=\"true\" [searchField]=\"'teamName'\" [idField]=\"'_id'\"\r\n (selected)=\"onStoreSelect($event)\" [selectedValues]=\"selectedUser\"></team-select>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"userForm.get('role')?.value === 'admin'\">\r\n\r\n <h3 class=\"teams-title\" *ngIf=\"getPermissions().length\">Access for Admin</h3>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"rolespermission\">\r\n <ng-container *ngFor=\"let rolespermission of getPermissions().controls; let i = index\"\r\n [formGroupName]=\"i\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"title-header mt-4 ms-2\">\r\n {{ camelCaseToText(rolespermission.get('featureName')?.value) }}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"rolespermission.get('modules')\" formArrayName=\"modules\">\r\n <ng-container\r\n *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\"\r\n [formGroupName]=\"j\">\r\n <table class=\"w-100\">\r\n <tbody>\r\n <tr *ngIf=\"rolespermission.get('featureName')?.value !== 'TangoAdmin'\">\r\n <td class=\"w-50\">{{ camelCaseToText(modules.get('name')?.value) }}</td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input type=\"checkbox\" formControlName=\"isAdd\" class=\"cursor-pointer\"\r\n (change)=\"handleViewChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Add</label>\r\n </div>\r\n </td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input formControlName=\"isEdit\" type=\"checkbox\" class=\"cursor-pointer\"\r\n (change)=\"handleEditChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Edit</label>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <div *ngIf=\"rolespermission.get('featureName')?.value === 'TangoAdmin'\"\r\n class=\"row w-100 text-nowrap\">\r\n <div class=\"col-md-4\"\r\n *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\"\r\n [formGroupName]=\"j\">\r\n <div class=\"d-inline-flex mt-3\">\r\n <input type=\"checkbox\" class=\"cursor-pointer\" formControlName=\"isEdit\">\r\n <label class=\"global-label mb-5 mx-2 mt-1\" style=\"text-wrap:nowrap\">\r\n {{ camelCaseToText(modules.get('name')?.value) }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"type!=='view'\" class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" (click)=\"onSubmit()\"\r\n [disabled]=\"userForm.invalid || type === 'view'\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal, NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport Swal from \"sweetalert2\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-user-popup\",\r\n templateUrl: \"./add-user-popup.component.html\",\r\n styleUrl: \"./add-user-popup.component.scss\",\r\n})\r\nexport class AddUserPopupComponent implements OnInit, OnDestroy {\r\n @Input() type: string;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Output() dataTosingleuser: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n\r\n ];\r\n userForm: FormGroup;\r\n operationType: string;\r\n expandedItems: string[] = [];\r\n showsingleuser: boolean = false;\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n userData: string;\r\n isExpanded: boolean[] = [];\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n user_data: any;\r\n handleAddChange(product: FormGroup | any): void {\r\n if (!product.get(\"isAdd\")?.value) {\r\n product.get(\"isDelete\")?.setValue(false);\r\n product.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(product: FormGroup | any): void {\r\n if (!product.get(\"isEdit\")?.value) {\r\n // product.get('isDownload')?.setValue(false);\r\n product.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n constructor(\r\n public activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef, public modalService: NgbModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n let data: any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.user_data = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n this.operationType = this.type;\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.userData = data;\r\n // this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n }\r\n },\r\n });\r\n if (this.type === \"view\" || (this.type === \"edit\" && this.user.email)) {\r\n this.addSingleUser();\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n this.showsingleuser = false;\r\n }\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType],\r\n tangoUserType: [\"dashboard\", Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n this.getUserPermissionData(\"user\", this.userType);\r\n }\r\n\r\n loadUserForm() {\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n this.userForm = this.fb.group({\r\n userName: [res.data.result.userName, Validators.required],\r\n email: [res.data.result.email, Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [res.data.result.mobileNumber, [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [res.data.result.role, Validators.required],\r\n userType: [res.data.result.userType, Validators.required],\r\n tangoUserType: [res.data.result.tangoUserType, Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n this.populatePermission(res.data.result.permission);\r\n if (this.operationType == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.cd.detectChanges();\r\n // this.getUserPermissionData(res.data.result.role,res.data.result.userType);\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n // toggleCollapse(id: string): void {\r\n // if (this.isExpanded(id)) {\r\n // this.expandedItems = this.expandedItems.filter((item) => item !== id);\r\n // } else {\r\n // this.expandedItems.push(id);\r\n // }\r\n // }\r\n\r\n toggleCollapse(index: number): void {\r\n this.isExpanded[index] = !this.isExpanded[index];\r\n }\r\n\r\n // isExpanded(id: string): boolean {\r\n // return this.expandedItems.includes(id);\r\n // }\r\n\r\n // getArrowIcon(id: string): string {\r\n // return this.isExpanded(id) ? \"fa-chevron-up\" : \"fa-chevron-down\";\r\n // }\r\n\r\n addSingleUser() {\r\n // this.activeModal.close(\"\");\r\n let obj = {\r\n type: 'add'\r\n }\r\n\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg', backdrop: 'static' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.componentInstance.userType = this.userType\r\n modalRef.result.then((result) => {\r\n this.activeModal.close('submit');\r\n })\r\n const data = \"single user\";\r\n this.dataTosingleuser.emit(data);\r\n // this.showsingleuser = true;\r\n }\r\n\r\n addUserSubmit() {\r\n this.userService.createUser({ ...this.userForm.value, ...{ clientId: this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId } }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true)\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err: any) => {\r\n console.log(err)\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n }\r\n\r\n editUser() {\r\n if (this.user.isActive) {\r\n this.operationType = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"permission\") as FormArray;\r\n permissions.clear();\r\n permissionsData.forEach((permission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [permission?.featureName],\r\n product: this.fb.array([]),\r\n });\r\n\r\n const products = featureGroup.get(\"product\") as FormArray;\r\n permission.product.forEach((product: any) => {\r\n const productGroup = this.fb.group({\r\n name: [product.name],\r\n isView: [product.isView],\r\n isEdit: [product.isEdit],\r\n // isDownload: [product.isDownload],\r\n // isDelete: [product.isDelete],\r\n });\r\n products.push(productGroup);\r\n });\r\n\r\n permissions.push(featureGroup);\r\n });\r\n for (let i = 0; i < this.getPermissions().length; i++) {\r\n this.isExpanded.push(true);\r\n }\r\n }\r\n\r\n getProducts(featureName: string): FormArray {\r\n return this.userForm\r\n .get(\"permission\")\r\n ?.value.find((permission: any) => permission.featureName === featureName)\r\n .product;\r\n }\r\n\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n this.cd.detectChanges();\r\n this.userService\r\n .getPersmissions({\r\n roleName: roleName,\r\n userType: userType,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n if (res.code == 200) {\r\n this.populatePermission(res.data.result[0]?.permission);\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n },\r\n error: (error: any) => {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n },\r\n complete: () => { },\r\n });\r\n this.cd.detectChanges();\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode; // k = event.keyCode; (Both can be used)\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n getPermissions(): FormArray {\r\n return this.userForm.get(\"permission\") as FormArray;\r\n }\r\n\r\n getFeaturePermissions(permission: FormGroup | any): FormArray {\r\n return permission.get(\"product\") as FormArray;\r\n }\r\n\r\n onUpload(e: any) {\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n this.ts.getErrorToast('Please Upload the Valid File');\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n // errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n Swal.fire({\r\n icon: \"error\",\r\n html: errors,\r\n customClass: {\r\n htmlContainer: \"error-htmlcontainer-class\",\r\n },\r\n heightAuto: false,\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonColor: \"#009EF7\",\r\n confirmButtonText: \"OK\",\r\n }).then((result) => { });\r\n return;\r\n }\r\n\r\n console.log('data', data)\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n tangoUserType: data[i].UserType,\r\n role: 'user',\r\n rolespermission: this.permissionArray\r\n });\r\n }\r\n\r\n if (processedArray.length == 0) {\r\n return this.ts.getErrorToast(\"No user entered in CSV\")\r\n }\r\n\r\n\r\n this.userService\r\n .createBulkUpload(\r\n {\r\n users: processedArray,\r\n userType: this.userType,\r\n ...(this.userType == 'client') ? { clientId: this.$headerFilters.client } : {}\r\n }\r\n )\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.code == 200) {\r\n this.activeModal.close('submit');\r\n this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log(error)\r\n if (error) {\r\n this.ts.getErrorToast(error.error.error ? error.error.error : 'Unable to create multiple Users!');\r\n // } else {\r\n // this.ts.getErrorToast('Unable to create multiple Users!');\r\n }\r\n },\r\n });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n }\r\n\r\n validateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n ): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.userType);\r\n }\r\n\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n this.userForm.get(\"email\")?.disable();\r\n this.userService.updateUser(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.operationType == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n}\r\n","<div class=\"card py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div> -->\r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"operationType==='add'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <!-- <div *ngIf=\"operationType==='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit User Details</a>\r\n <div class=\"sub-title\">Please Edit your user details</div>\r\n </div> -->\r\n <div *ngIf=\"operationType==='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <!-- @if ((gs.userAccess | async)?.Global_User_isEdit) { -->\r\n <div *ngIf=\"operationType==='view' && (gs.userAccess | async)?.Global_User_isEdit\"\r\n class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n <!-- } -->\r\n </div>\r\n <div class=\"fw-bold text-gray-500 my-6\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <li>Use the template to upload multiple users at once.</li>\r\n <li>Download the template here -\r\n <a [attr.href]=\"userType ==='tango' ? '../../../assets/files/TangoUsersTemplate.xlsx' : '../../../assets/files/UsersTemplate.xlsx'\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li>Add your data to the Template File</li>\r\n <li>Upload it below for processing</li>\r\n\r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5 w-100\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span id=\"triggerButtonId\" class=\"mx-2 single-user fw-bold\">Add Single\r\n User</span></span></label>\r\n </div>\r\n\r\n <div class=\"w-100 h-500px scroll\" *ngIf=\"showsingleuser\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name</label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\"\r\n autocomplete=\"off\" required>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number</label>\r\n <input type=\"text\" class=\"form-control\" id=\"contact\" formControlName=\"mobileNumber\"\r\n autocomplete=\"off\" required minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role</label>\r\n <select class=\"form-select\" formControlName=\"role\"\r\n (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"superadmin\">Super Admin</option>\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"userType === 'tango'\" class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"tangoUserType\" class=\"form-label\">User Type</label>\r\n <select class=\"form-select\" formControlName=\"tangoUserType\"\r\n (change)=\"onRoleChange(userForm.get('tangoUserType')?.value)\">\r\n <option value=\"dashboard\">Dashboard</option>\r\n <option value=\"audit\">Audit</option>\r\n </select>\r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\">Access for\r\n {{userForm.get('role')?.value | titlecase}}</a>\r\n <div class=\"sub-title font-sub\">{{userForm.get('role')?.value | titlecase}} can access respective\r\n enabled features and products</div>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"permission\">\r\n <ng-container *ngFor=\"let permission of getPermissions().controls; let i = index\"\r\n [formGroupName]=\"i\">\r\n <div class=\"my-6\">\r\n <div class=\"row me-3\">\r\n <div class=\"col-6\">\r\n <div class=\"title fw-semibold\">\r\n {{ permission.get('featureName')?.value | titlecase }}\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-6 d-flex justify-content-end\" (click)=\"toggleCollapse(i)\">\r\n <div class=\"text-end\">\r\n @if (!isExpanded[i]) {\r\n <svg width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1.5 1.5L6.5 6.5L11.5 1.5\" stroke=\"#667085\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n } @else {\r\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M11 6.5L6 1.5L1 6.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'collapsed': !isExpanded[i] }\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <table class=\"w-100\">\r\n <thead>\r\n <tr>\r\n <th>Modules</th>\r\n <th>View</th>\r\n <th>Edit</th>\r\n <th>Download</th>\r\n <th>Delete</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"permission.get('product')\"\r\n formArrayName=\"product\">\r\n <ng-container\r\n *ngFor=\"let product of getFeaturePermissions(permission)?.controls;let j=index;\"\r\n [formGroupName]=\"j\">\r\n <tr>\r\n <td>{{ camelCaseToText(product.get('name')?.value) }}\r\n </td>\r\n <td><input formControlName=\"isView\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleAddChange(product)\"></td>\r\n <td><input formControlName=\"isEdit\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleEditChange(product)\"></td>\r\n <td><input formControlName=\"isDownload\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n <td><input formControlName=\"isDelete\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"operationType!=='view'\" class=\"d-flex my-14\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" [disabled]=\"userForm.invalid\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n selector: \"lib-assign-store-popup\",\r\n templateUrl: \"./assign-store-popup.component.html\",\r\n styleUrl: \"./assign-store-popup.component.scss\",\r\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\r\n host: {\r\n '(document:click)': 'onClick($event)',\r\n },\r\n})\r\nexport class AssignStorePopupComponent implements OnInit {\r\n @Input() user: any;\r\n select: string = \"stores\";\r\n stores: any[] = [];\r\n clusters: any[] = [];\r\n teams:any[]=[];\r\n $headerFilters: any;\r\n userData: any;\r\n userType: string;\r\n selectedTextstores:any\r\n selectedTextclusters:any\r\n selectedTextteams:any\r\n\r\n constructor(\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private ts: ToastService,\r\n public activeModal: NgbActiveModal,\r\n ) {\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n this.userData = data;\r\n this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n },\r\n });\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n if (data) {\r\n this.$headerFilters = data;\r\n } else if(!data){\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = user;\r\n this.$headerFilters.client = user.clientId;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getAssignStoreList();\r\n this.getclusterList();\r\n this.getteamsList() \r\n }\r\n\r\n loadUserAssignDetails() {\r\n this.userService\r\n .getUserAssignData({\r\n email: this.user.email, \r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.loadSelectedStores(res.data.stores);\r\n this.loadSelectedclusters(res.data.clusters);\r\n this.loadSelectedteams(res.data.teams);\r\n\r\n this.cd.detectChanges();\r\n } \r\n },\r\n error: () => { \r\n this.cd.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n getAssignStoreList() {\r\n this.userService\r\n .getAssignStores({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[0].Stores = res.data.result;\r\n this.loadUserAssignDetails();\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[0].Stores = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n getclusterList() {\r\n this.userService\r\n .getAssignclusters({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[1].clusters = res.data.result;\r\n \r\n }\r\n },\r\n error: () => {\r\n this.dataObject[1].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n getteamsList() {\r\n this.userService\r\n .getAssignteams({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[2].teams = res.data.result;\r\n \r\n // if (this.user.assignedValue) {\r\n // this.loadSelectedteams(this.user.assignedValue);\r\n // }\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[2].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n storesType(e: any) {\r\n this.Opendropdown = false;\r\n // this.resetclusters();\r\n // this.resetStore();\r\n if (this.select == \"stores\") {\r\n if(this.selectedValuesArray[0].length==0){\r\n this.selectedTextstores = \"Select Stores\";\r\n }else{\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n } else if(this.select =='clusters') {\r\n if(this.selectedValuesArray[1].length==0){\r\n this.selectedTextclusters = \"Select Clusters\";\r\n }else{\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n } \r\n }else if(this.select =='teams') {\r\n if(this.selectedValuesArray[2].length==0){\r\n this.selectedTextteams = \"Select Teams\";\r\n }else{\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n } \r\n }\r\n }\r\n\r\n resetStore() {\r\n this.dataObject[0].Stores = [];\r\n this.stores = [];\r\n this.selectedValuesArray[0] = [];\r\n }\r\n\r\n resetclusters() {\r\n this.dataObject[1].clusters = [];\r\n this.clusters = [];\r\n this.selectedValuesArray[1] = [];\r\n }\r\n resetTeams() {\r\n this.dataObject[2].clusters = [];\r\n this.clusters = [];\r\n this.selectedValuesArray[2] = [];\r\n }\r\n Opendropdown: boolean = false;\r\n dataObject: any[] = [\r\n { Description: \"Stores\", Stores: [] },\r\n { Description: \"Clusters\", clusters: [] },\r\n { Description: \"Teams\", teams: [] },\r\n\r\n ];\r\n selectedValuesArray: any[] = [[], [],[]];\r\n selectedText: string;\r\n\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest(\".dropdown1\")) {\r\n this.Opendropdown = false;\r\n }\r\n if (!target.closest(\".dropdown-content\")) {\r\n this.dataObject.forEach((item: any, i: any) => {\r\n item.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n Dropdown(value: any, index: number, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false;\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n\r\n toggleCheckboxStores(\r\n event: any,\r\n store: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n const stores = this.dataObject[0].Stores;\r\n this.selectedValuesArray[0] = this.selectedValuesArray[0] || [];\r\n\r\n if (store === \"Select All\") {\r\n const checked = event.target.checked;\r\n stores.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[0] = checked ? [...stores] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[0].findIndex(\r\n (item: any) => item.storeName === store.storeName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[0].push(store)\r\n : this.selectedValuesArray[0].splice(storeIndex, 1);\r\n this.dataObject[index].Stores[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = stores.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${store.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[0]);\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n toggleCheckboxTeams(\r\n event: any,\r\n team: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n \r\n const teams = this.dataObject[2].teams;\r\n this.selectedValuesArray[2] = this.selectedValuesArray[2] || [];\r\n\r\n if (team === \"Select All\") {\r\n const checked = event.target.checked;\r\n teams.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[2] = checked ? [...teams] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[2].findIndex(\r\n (item: any) => item.userName === team.userName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[2].push(team)\r\n : this.selectedValuesArray[2].splice(storeIndex, 1);\r\n this.dataObject[index].teams[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = teams.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${teams.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[2]);\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n }\r\n\r\n loadTable(values: any[]) {\r\n if (this.select == \"stores\") {\r\n this.stores = values;\r\n } else if(this.select == \"clusters\") {\r\n this.clusters = values;\r\n }else if(this.select == \"teams\") {\r\n this.teams = values;\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n toggleCheckboxclusters( event: any, cluster: any, index: number, subIndex: number ) {\r\n const clusters = this.dataObject[index].clusters;\r\n this.selectedValuesArray[1] = this.selectedValuesArray[1] || [];\r\n\r\n if (cluster === \"Select All\") {\r\n const checked = event.target.checked;\r\n clusters.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[1] = checked ? [...clusters] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const clusterIndex = this.selectedValuesArray[1].findIndex(\r\n (item: any) => item.clusterName === cluster.clusterName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[1].push(cluster)\r\n : this.selectedValuesArray[1].splice(clusterIndex, 1);\r\n this.dataObject[1].clusters[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = clusters.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${cluster.clusterName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[1]);\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n }\r\n\r\n onSubmit() {\r\n if (this.user.assignedValue && this.user.assignedValue.length) {\r\n this.reAssignSubmit();\r\n } else {\r\n this.assignSubmit();\r\n }\r\n }\r\n\r\n assignSubmit() {\r\n let payload = {\r\n userId:this.user._id,\r\n clientId: this.$headerFilters.client,\r\n userEmail: this.user.email,\r\n userType: this.userType,\r\n stores:this.selectedValuesArray[0],\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2]\r\n } \r\n this.userService\r\n .assignData(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`${this.select == 'stores' ? 'Stores' : 'Clusters'} Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to assign ${this.select == 'stores' ? 'stores' : 'Clusters'} to user!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n reAssignSubmit() {\r\n let payload= {\r\n userId:this.user._id,\r\n clientId: this.$headerFilters.client,\r\n userEmail: this.user.email,\r\n userType: this.userType,\r\n stores:this.selectedValuesArray[0],\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2]\r\n }\r\n this.userService\r\n .reAssignStores(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`${this.select == 'stores' ? 'Stores' : 'Clusters'} Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to assign ${this.select == 'stores' ? 'stores' : 'Clusters'} to user!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadSelectedStores(stores: any[]) {\r\n this.selectedValuesArray[0] = [];\r\n this.dataObject[0].Stores.forEach((store: any) => {\r\n const exists = stores.some( ( obj:any ) => obj.storeId === store.storeId );\r\n if (exists) { \r\n store.checked = true;\r\n this.selectedValuesArray[0].push(store);\r\n }\r\n });\r\n this.stores = this.selectedValuesArray[0];\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n loadSelectedteams(teams: any[]){\r\n this.selectedValuesArray[2] = [];\r\n this.dataObject[2].teams.forEach((team: any) => {\r\n const exists = teams.some( ( obj:any ) => obj._id === team._id );\r\n if (exists) {\r\n team.checked = true;\r\n this.selectedValuesArray[2].push(team);\r\n this.teams.push(team._id)\r\n }\r\n });\r\n this.selectedTextteams = `${this.selectedValuesArray[1].length} Teams Selected`;\r\n }\r\n loadSelectedclusters(clusters: any[]) {\r\n this.selectedValuesArray[1] = [];\r\n this.dataObject[1].clusters.forEach((cluster: any) => {\r\n const exists = clusters.some( ( obj:any ) => obj._id === cluster._id );\r\n if (exists) {\r\n cluster.checked = true;\r\n this.selectedValuesArray[1].push(cluster);\r\n this.clusters.push(cluster._id)\r\n }\r\n });\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n }\r\n\r\n closeModal() {\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card assign-store py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/assign-adduser.svg\">\r\n </div> -->\r\n </div>\r\n <a class=\"title\">Assign User</a>\r\n <span class=\"sub-title my-2\">Please assign the user</span>\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"select='stores'; storesType($event)\">\r\n <a [ngClass]=\"select === 'stores' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Stores</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='clusters'; storesType($event)\"><a\r\n [ngClass]=\"select === 'clusters' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Cluster</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='teams'; storesType($event)\"><a\r\n [ngClass]=\"select === 'teams' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams</a>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"select ==='stores'\" class=\"w-100 my-5\">\r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of [dataObject[0]]; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Stores</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control disable\" id=\"storeName\" [ngModel]=\"selectedTextstores\"\r\n placeholder=\"Select Stores\" (click)=\"Dropdown('Stores',0,$event)\" readonly>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Stores.length\"\r\n (click)=\"toggleCheckboxStores($event,'Select All', 0,0)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div *ngFor=\"let store of item.Stores;let j=index;\"\r\n class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"store.storeName\"\r\n id=\"option{{store.storeName}}\" [checked]=\"store.checked\"\r\n (click)=\"toggleCheckboxStores($event,store,0,j)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{store.storeName}}\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='clusters'\" class=\"w-100 my-5\"> \r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of [dataObject[1]]; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Cluster</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control disable\" id=\"clusterName\" [ngModel]=\"selectedTextclusters\"\r\n placeholder=\"Select Clusters\" (click)=\"Dropdown('clusters',1,$event)\" readonly>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[1]?.length === item.clusters.length\"\r\n (click)=\"toggleCheckboxclusters($event,'Select All', 1,0)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div *ngFor=\"let cluster of item.clusters;let j=index;\"\r\n class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"cluster.clusterName\"\r\n id=\"option{{cluster.clusterName}}\" [checked]=\"cluster.checked\"\r\n (click)=\"toggleCheckboxclusters($event,cluster,1,j)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{cluster.clusterName}}\">\r\n {{ cluster.clusterName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='teams'\" class=\"w-100 my-5\"> \r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of [dataObject[2]]; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Teams</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control disable\" id=\"teamName\" [ngModel]=\"selectedTextteams\"\r\n placeholder=\"Select Teams\" (click)=\"Dropdown('teams',2,$event)\" readonly>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[2]?.length === item.teams.length\"\r\n (click)=\"toggleCheckboxTeams($event,'Select All', 2,0)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div *ngFor=\"let team of item.teams;let j=index;\"\r\n class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"team.teamName\"\r\n id=\"option{{team.teamName}}\" [checked]=\"team.checked\"\r\n (click)=\"toggleCheckboxTeams($event,team,2,j)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{team.teamName}}\">\r\n {{ team.teamName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <h2 class=\"store-info fw-bold\">\r\n @if(select ==='stores') {\r\n Store \r\n } @else if(select ==='clusters') {\r\n Cluster\r\n }@else if(select ==='teams') {\r\n Teams\r\n }\r\n Information\r\n </h2>\r\n\r\n <section *ngIf=\"select ==='stores'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th>SPOC Name</th>\r\n <th>Store ID</th>\r\n <th>Application ID</th>\r\n <th>Location</th>\r\n </tr>\r\n </thead>\r\n <tbody> \r\n <tr *ngFor=\"let store of stores;let i=index\">\r\n <td>{{store?.spocName}}</td>\r\n <td>{{store?.storeId}}</td>\r\n <td>{{store?.appId}}</td>\r\n <td>{{store?.location}}</td>\r\n </tr> \r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[0].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned to the above stores.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='clusters'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Cluster Name</th>\r\n <th>Stores</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let cluster of this.selectedValuesArray[1];let i=index;\">\r\n <td class=\"ms-5\">{{cluster?.clusterName}}</td>\r\n <td>{{cluster?.storeNames}} <span *ngIf=\"cluster?.storeListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{cluster?.storeListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[1].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n clusters.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='teams'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Team Name</th>\r\n <th>Users</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let team of this.selectedValuesArray[2];let i=index;\">\r\n <td class=\"ms-5\">{{team?.teamName}}</td>\r\n <td>{{team?.userNames}} <span *ngIf=\"team?.userListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{team?.userListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[2].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n teams.</span>\r\n </div>\r\n }\r\n </section>\r\n\r\n <div class=\"d-flex mb-10 w-100\" role=\"cluster\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"closeModal()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n\r\n\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-alert-popup',\r\n templateUrl: './alert-popup.component.html',\r\n styleUrl: './alert-popup.component.scss'\r\n})\r\nexport class AlertPopupComponent {\r\n @Input() status: any;\r\n @Input() userName:any;\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n cancel(){\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit(){\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span *ngIf=\"status\" class=\"sub-title fw-normal mt-2\">Do you want to active the user<b> {{userName}}</b> ?</span>\r\n <span *ngIf=\"!status\" class=\"sub-title fw-normal mt-2\">Do you want to deactive the user<b> {{userName}}</b> ?</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button *ngIf=\"status\" id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit()\">Active</button>\r\n <button *ngIf=\"!status\" id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit()\">Deactive</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelService {\r\n\r\n \r\n constructor() { }\r\n\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n console.log(buffer, fileName);\r\n \r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + 'list'+ EXCEL_EXTENSION);\r\n }\r\n \r\n private saveAsTemplate(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AlertPopupComponent } from \"./alert-popup/alert-popup.component\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\n@Component({\r\n selector: \"lib-user-table\",\r\n templateUrl: \"./user-table.component.html\",\r\n styleUrl: \"./user-table.component.scss\",\r\n})\r\nexport class UserTableComponent implements OnInit, OnDestroy {\r\n\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any[] = [];\r\n rolesCount: number;\r\n receivedData: any = '';\r\n SelectedTab: any;\r\n userListStatus: any;\r\n userRole: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n constructor(\r\n public modalService: NgbModal, private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private userService: UserService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n // this.initSearch();\r\n }\r\n\r\n // initSearch() {\r\n // console.log(678);\r\n\r\n // this.searchInput.valueChanges\r\n // .pipe(debounceTime(1000), distinctUntilChanged())\r\n // .subscribe((e) => {\r\n // if(e) {\r\n\r\n // this.userList_req.searchValue = e;\r\n // }\r\n // this.loadTable();\r\n // });\r\n // }\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Tango Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs: any[] = [];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n ngOnInit() {\r\n\r\n let userInfo: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.userRole = userInfo?.role;\r\n console.log('userRole', this.userRole, userInfo)\r\n // this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n // next:(data:any)=>{\r\n // if(data) {\r\n // this.$headerFilters = data;\r\n // this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe((type: any) => {\r\n // this.userData = type;\r\n this.userType = \"tango\";\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n this.setPageData();\r\n // });\r\n // }\r\n // }\r\n // });\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n Viewusers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n\r\n users(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n }\r\n });\r\n }\r\n\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: '',\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n this.pagination.totalCount = 0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n } else {\r\n this.userList_req = {\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n\r\n }\r\n userStatusChange(user: any, i: number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.status = user.isActive\r\n modalRef.componentInstance.userName = user?.userName\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n if (result === 'submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n if (user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n },\r\n error: () => {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n },\r\n complete: () => { }\r\n })\r\n } else if (result === 'close') {\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n let data = {\r\n userType: 'tango'\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n userDetials(role: any) {\r\n let obj = {\r\n role: role,\r\n userType: 'Tango User',\r\n receivedData: \"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData = 'Role Value';\r\n }\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n onSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n applyFilters(event: any) {\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit = 10;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userList_req.export = false;\r\n this.loadTable()\r\n }\r\n}","<div *ngIf=\"receivedData ===''\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item activated cursor-pointer bg-light-primary px-5 text-center me-5\"><a\r\n class=\"nav-link me-0 text-active-primary\">Users</a>\r\n </li>\r\n <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && userRole === 'superadmin'\"\r\n class=\"nav-item cursor-pointer me-5\"><a routerLink=\"/manage/users/tango/audit\"\r\n class=\"nav-link text-active-primary\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default px-4 py-3 rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16774 13.7347 6.0862 13.7036 6.01005C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37332 9.06609 1.32749 8.98994 1.29639C8.91379 1.26529 8.83225 1.24952 8.75 1.25H2.5C2.16848 1.25 1.85054 1.38169 1.61612 1.61611C1.3817 1.85053 1.25 2.16847 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89946 7.86612 7.13388C8.10054 7.3683 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"users('add')\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assigned')\">Clients Assigned\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'assigned' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'assigned' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"form-check form-switch mx-6\">\r\n <input class=\"form-check-input mt-3 cursor-pointer\" type=\"checkbox\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\"\r\n role=\"switch\" checked=\"\">\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div *ngIf=\"receivedData ===''\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles\">\r\n <a *ngIf=\"obj.roleName ==='superadmin'\" class=\"role-title my-2 cursor-pointer\" >Super Admin</a>\r\n <a *ngIf=\"obj.roleName !=='superadmin'\" class=\"role-title my-2 cursor-pointer\" >{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<!--begin::Row-->\r\n<!-- <div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\"> -->\r\n<!--begin::Col-->\r\n<!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\"> -->\r\n<!-- <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table> -->\r\n<!-- </div> -->\r\n<!--end::Col-->\r\n<!-- </div> -->\r\n<!--end::Row-->","import { Component, ChangeDetectorRef, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, Subscription, takeUntil, debounceTime, distinctUntilChanged, } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { FormControl } from '@angular/forms';\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-teams-creation',\r\n templateUrl: './teams-creation.component.html',\r\n styleUrl: './teams-creation.component.scss'\r\n})\r\nexport class TeamsCreationComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n private readonly destroy = new Subject();\r\n searchInput = new FormControl(\"\");\r\n @Input() teamData: any;\r\n @Input() type: any;\r\n @Input() teamsUsers: any;\r\n teamleadList: any[] = [];\r\n userList: any[] = [];\r\n selectedTeam: any = [];\r\n selectedUsers: any = [];\r\n $headerFilters: any;\r\n teamName: any;\r\n isEdit: boolean = false\r\n description: any;\r\n fileerror:boolean = false\r\n constructor(private ts: ToastService, private router: Router, public activeModal: NgbActiveModal,\r\n private userService: ManageUsersService, public gs: GlobalStateService, private cd: ChangeDetectorRef,\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n\r\n }\r\n ngOnInit(): void {\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n } else {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.getuserList();\r\n\r\n }\r\n getTeamData(data: any) {\r\n this.userService.editTeamsdata(data).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.isEdit = true\r\n if (res.data.length > 0) {\r\n this.teamName = res.data[0].teamName\r\n this.description = res.data[0].description\r\n this.selectedTeam = res.data[0].Teamlead\r\n this.selectedUsers = res.data[0].users\r\n\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.userList)\r\n\r\n }\r\n }\r\n })\r\n }\r\n getuserList() {\r\n\r\n let payload = {\r\n clientId: this.$headerFilters.client\r\n }\r\n this.userService.getallusersList(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamleadList = res.data.filter((e: any) => e.role != 'superadmin');\r\n this.userList = res.data.filter((e: any) => e.role != 'superadmin'); \r\n\r\n if (this.teamData) {\r\n this.getTeamData(this.teamData)\r\n }\r\n \r\n\r\n if (this.teamsUsers && this.teamsUsers.length > 0 && !this.isEdit) {\r\n console.log(this.teamsUsers)\r\n const updatedusers = this.teamsUsers.map((user: any) => {\r\n return {\r\n email: user.email,\r\n userId: user.userId\r\n };\r\n });\r\n this.selectedUsers = updatedusers\r\n this.markCheckedStores();\r\n }\r\n }\r\n })\r\n }\r\n\r\n filteredUsers: any;\r\n markCheckedStores(): void {\r\n const clusterStoreIds = this.teamsUsers?.map((user: any) => user._id);\r\n this.userList = this.userList?.map(user => {\r\n user.checked = clusterStoreIds.includes(user.userId);\r\n return user;\r\n });\r\n this.selectedUsers = this.userList.filter(user => user.checked);\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n \r\n }\r\n TeamUnselectAll(event:any){\r\n this.userList = [...this.userList,...event]\r\n console.log(\"teamlead unselectall\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n\r\n TeamUnselect(event:any){\r\n this.userList.push(event)\r\n console.log(\"teamlead unselect\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselect(event:any){\r\n console.log(\"user unselect\", event)\r\n this.teamleadList.push(event)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselectAll(event:any){\r\n this.teamleadList = [...this.teamleadList,...event]\r\n console.log(\"user unselectall\", this.teamleadList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n onTeamSelect(event: any) {\r\n console.log(\"teamlead select\", event)\r\n this.selectedTeam = event \r\n if(this.selectedTeam.length>0){\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n }\r\n this.cd.detectChanges();\r\n }\r\n onUserSelect(event: any) {\r\n console.log(\"user select\", event)\r\n \r\n this.selectedUsers = event\r\n if(this.selectedUsers.length>0){\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n }\r\n \r\n \r\n }\r\n cancel() {\r\n this.teamsUsers = []\r\n this.activeModal.close()\r\n }\r\n\r\n onCreateTeam() {\r\n let admincount = this.selectedUsers.filter((user: any) => user.role == 'admin').length\r\n let leadUsercount = this.selectedTeam.filter((user: any) => user.role == 'user').length\r\n if (admincount > 0 && leadUsercount > 0) {\r\n return this.ts.getErrorToast('User cannot be team lead when admins as a users')\r\n } else {\r\n let payload: any = {\r\n clientId: this.$headerFilters.client,\r\n teamName: this.teamName,\r\n description: this.description,\r\n users: this.selectedUsers,\r\n Teamlead: this.selectedTeam,\r\n }\r\n if (this.isEdit) {\r\n payload.teamId = this.teamData?._id\r\n this.userService.updateTeam(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Updated Successfully\")\r\n this.activeModal.close()\r\n }\r\n })\r\n } else {\r\n this.userService.createTeams(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Created Successfully\")\r\n this.activeModal.close()\r\n }\r\n }, (error: any) => {\r\n console.log(\"error\", error);\r\n\r\n this.ts.getErrorToast(error?.error?.error?.error)\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n onUpload(e: any) {\r\n let data: any = [];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n this.fileerror = true\r\n this.ts.getErrorToast(\"Please Upload the Valid File\");\r\n return;\r\n \r\n\r\n } else {\r\n data = utils.sheet_to_json(ws);\r\n }\r\n };\r\n \r\n \r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n value: data[i]['User Name/Email Id'],\r\n })\r\n }\r\n if(this.fileerror){\r\n return\r\n }\r\n this.userService\r\n .teamBulkUpload({\r\n users: processedArray,\r\n clientId: this.$headerFilters?.client ? this.$headerFilters?.client : this.$headerFilters?.clientId,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n const uniqueUsers = res.data.result.filter((item: { userId: string }, index: number, self: { userId: string }[]) =>\r\n index === self.findIndex((t) => t.userId === item.userId)\r\n );\r\n this.selectedUsers = uniqueUsers\r\n } else {\r\n this.ts.getErrorToast(\"The given User not associated with this brand\");\r\n }\r\n },\r\n error: (error: any) => {\r\n if (error.code == 400) {\r\n this.ts.getErrorToast(error);\r\n } else {\r\n this.ts.getErrorToast(error.error.error);\r\n }\r\n },\r\n });\r\n // .catch((error) => {\r\n // this.ts.getErrorToast(\"Unable to create stores!\");\r\n // });\r\n };\r\n\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M20.5 23.6816C18.8425 23.6816 17.5 22.2133 17.5 20.4004C17.5 18.5875 18.8425 17.1191 20.5 17.1191C22.1575 17.1191 23.5 18.5875 23.5 20.4004C23.5 22.2133 22.1575 23.6816 20.5 23.6816ZM35.6483 23.6816C33.9908 23.6816 32.6483 22.2133 32.6483 20.4004C32.6483 18.5875 33.9908 17.1191 35.6483 17.1191C37.3058 17.1191 38.6483 18.5875 38.6483 20.4004C38.6483 22.2133 37.3058 23.6816 35.6483 23.6816ZM31.509 26.3066C31.509 28.4805 29.8965 30.2441 27.909 30.2441C25.9215 30.2441 24.309 28.4805 24.309 26.3066C24.309 24.1328 25.9215 22.3691 27.909 22.3691C29.8965 22.3691 31.509 24.1328 31.509 26.3066Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M20.0013 25.7559C17.7925 25.7559 16 27.7164 16 30.1322C16 30.6121 16.36 31.0059 16.7988 31.0059H24.8013H24.8275C23.8338 30.042 23.2038 28.6352 23.2038 27.0684C23.2038 26.7566 23.2263 26.449 23.275 26.1537C22.765 25.8994 22.1988 25.7559 21.6025 25.7559H20.0013Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M31.1725 31.0059H31.1987H39.2012C39.64 31.0059 40 30.6162 40 30.1322C40 27.7164 38.2075 25.7559 35.9987 25.7559H34.3975C33.8012 25.7559 33.235 25.8953 32.725 26.1537C32.77 26.4531 32.7963 26.7566 32.7963 27.0684C32.7963 28.6352 32.17 30.042 31.1725 31.0059Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M25.7988 32.3183C23.0388 32.3183 20.8 34.767 20.8 37.7857C20.8 38.3928 21.25 38.8809 21.8013 38.8809H34.1987C34.7537 38.8809 35.2 38.3887 35.2 37.7857C35.2 34.767 32.9613 32.3183 30.2013 32.3183H25.7988Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\" *ngIf=\"type === 'create'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Create Team</a>\r\n <div class=\"sub-title\">Group multiple users to create a team for easier management</div>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"type === 'edit'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit Team</a>\r\n <div class=\"sub-title\">Group multiple users to edit a team for easier management</div>\r\n </div>\r\n\r\n\r\n <div class=\"w-100 h-500px scroll\">\r\n <div class=\"mt-5\">\r\n <form>\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"teamName\" class=\"form-label\">Team Name<span class=\"mandtryclr ms-1\">*</span></label>\r\n <input type=\"text\" [(ngModel)]=\"teamName\" [ngModelOptions]=\"{standalone: true}\"\r\n class=\"form-control\" id=\"teamName\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"teamlead\" class=\"form-label\">Team Lead <span class=\"mandtryclr ms-1\">*</span></label>\r\n <team-select [items]=\"teamleadList\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userId'\" (selected)=\"onTeamSelect($event)\" (deselected)=\"TeamUnselect($event)\" (deselectedAll)=\"TeamUnselectAll($event)\"\r\n [selectedValues]=\"selectedTeam\"></team-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"userlead\" class=\"form-label\">Select Users<span class=\"mandtryclr ms-1\">*</span>\r\n </label>\r\n <team-select [items]=\"userList\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userId'\" (selected)=\"onUserSelect($event)\" (deselected)=\"UserUnselect($event)\" (deselectedAll)=\"UserUnselectAll($event)\"\r\n [selectedValues]=\"selectedUsers\"></team-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"userlead\" class=\"form-label\">Description (optional)</label>\r\n <textarea id=\"description\" [(ngModel)]=\"description\"\r\n [ngModelOptions]=\"{standalone: true}\" name=\"description\" class=\"form-control\"\r\n rows=\"5\" cols=\"50\" placeholder=\"Enter a description...\"></textarea>\r\n </div>\r\n\r\n\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"280\" height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-15 or-color\">Or </span> <span class=\"line-bg \"><svg width=\"280\"\r\n height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold fs-6\">\r\n <li class=\"user-text\">Use the template to upload multiple users at once.</li>\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here -\r\n </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/teamsUploadTemplate.xlsx\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n\r\n </ol>\r\n </div>\r\n </div>\r\n <div\r\n class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\" class=\" w-50 p-4 mt-5\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n<div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n <!-- <span class=\"ms-2\">or drag and drop</span> -->\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n <!-- <div class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\" >\r\n <svg width=\"47\" height=\"46\" viewBox=\"0 0 47 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3.5\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\"/>\r\n <rect x=\"3.5\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\" stroke-width=\"6\"/>\r\n <g clip-path=\"url(#clip0_2176_18901)\">\r\n <path d=\"M26.8333 26.3332L23.5 22.9999M23.5 22.9999L20.1666 26.3332M23.5 22.9999V30.4999M30.4916 28.3249C31.3044 27.8818 31.9465 27.1806 32.3165 26.3321C32.6866 25.4835 32.7635 24.5359 32.5351 23.6388C32.3068 22.7417 31.7862 21.9462 31.0555 21.3778C30.3248 20.8094 29.4257 20.5005 28.5 20.4999H27.45C27.1977 19.5243 26.7276 18.6185 26.0749 17.8507C25.4222 17.0829 24.604 16.4731 23.6817 16.0671C22.7594 15.661 21.7571 15.4694 20.7501 15.5065C19.743 15.5436 18.7575 15.8085 17.8676 16.2813C16.9777 16.7541 16.2066 17.4225 15.6122 18.2362C15.0177 19.05 14.6155 19.9879 14.4358 20.9794C14.256 21.9709 14.3034 22.9903 14.5743 23.961C14.8452 24.9316 15.3327 25.8281 16 26.5832\" stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2176_18901\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(13.5 13)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\"><input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" value=\"personal\"\r\n class=\"btn-check\" ng-reflect-name=\"accountType\" ng-reflect-form-control-name=\"accountType\"\r\n (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />Click to upload</span> <span class=\"ms-2\">or drag and drop</span></div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </div> -->\r\n </div>\r\n <div class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"!isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length||!selectedTeam.length|| !teamName\">Create\r\n Team</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length ||!selectedTeam.length||!teamName\">Update\r\n Team</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\n\r\n@Component({\r\n selector: \"lib-roles-permission-table\",\r\n templateUrl: \"./roles-permission-table.component.html\",\r\n styleUrl: \"./roles-permission-table.component.scss\",\r\n})\r\nexport class RolesPermissionTableComponent implements OnInit,OnDestroy {\r\n @Output() dataEvent = new EventEmitter<string>();\r\n\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean;\r\n noData: boolean;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userCount: number;\r\n roleName: string;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private userService: UserService,\r\n private excelService: ExcelService,\r\n private modalService:NgbModal\r\n ) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n this.userService.rolesComms.subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n console.log(data)\r\n this.userType = data.userType\r\n this.roleName = data.role.roleName;\r\n }\r\n }\r\n })\r\n }\r\n \r\n ngOnInit() {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(type:any)=>{\r\n this.userType = (this.userType=='Tango User') ? 'tango' : 'client';\r\n if(this.$headerFilters && this.$headerFilters?.client) {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n role: this.roleName\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n }\r\n\r\n backToUser() {\r\n const dataToUser = \"\";\r\n this.userService.dataSubject.next((this.userType =='tango') ? 'Tango User' : 'Brand User');\r\n this.dataEvent.emit(dataToUser);\r\n }\r\n\r\n searchData() {\r\n if (this.searchValue) {\r\n this.userList_req.searchValue = this.searchValue;\r\n } else {\r\n delete this.userList_req[\"searchValue\"];\r\n }\r\n this.loadTable();\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = pageSize;\r\n this.pagination.limit = pageSize;\r\n this.loadTable();\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n \r\n loadTable() {\r\n this.loading = true;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.loading=false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.userCount = res.data.count;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n ...(this.searchValue != \"\"\r\n ? { searchValue: this.searchValue }\r\n : {}),\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n this.changeDetector.detectChanges();\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: (err:any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n if (this.pagination.totalCount > 10000) {\r\n Swal.fire({\r\n title: \"Export Failed!\",\r\n heightAuto: false,\r\n icon: \"error\",\r\n html: `Looks Like the Data Is Huge, You Can Select a Smaller Date Range, or Please Reach Out to Tango <a href=\"${this.supportEmail}\">${this.supportEmail}</a> for Further Assistance.`,\r\n showCloseButton: true,\r\n });\r\n return;\r\n }\r\n let excelData: any = [];\r\n var req: any = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userList_req.userType,\r\n role:this.userList_req.role\r\n };\r\n this.userService.getUserList(req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.data && res.data.result && res.data.result.length) {\r\n res.data.result.forEach((element: any) => {\r\n excelData.push({\r\n UserName: element.userName,\r\n Email: element.email,\r\n StoreAssigned: element?.Assigned,\r\n });\r\n });\r\n this.excelService.exportAsExcelFile(excelData, \"User\");\r\n }\r\n },\r\n error: () => {},\r\n complete: () => {},\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n users(type: any,user?: any) {\r\n // const data = \"add stores\";\r\n // this.dataTouserlist.emit(data);\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-3\">\r\n <div class=\"d-flex align-items-center card-title flex-grow-1\">\r\n <!--begin::Avatar-->\r\n <div class=\"symbol symbol-45px me-3\">\r\n <button type=\"button\" (click)=\"backToUser()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M16.3333 9.99996H4.66663M4.66663 9.99996L10.5 15.8333M4.66663 9.99996L10.5 4.16663\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> </button>\r\n </div>\r\n <!--end::Avatar-->\r\n\r\n <!--begin::Info-->\r\n <div class=\"d-flex flex-column\">\r\n <span *ngIf=\"roleName !=='superadmin'\" class=\"card-label\">{{roleName | titlecase}}</span>\r\n <span *ngIf=\"roleName ==='superadmin'\" class=\"card-label\">Super Admin</span>\r\n <span class=\"text-sub mb-2\">{{userCount || 0}} users in this role</span>\r\n </div>\r\n <!--end::Info-->\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if ((gs.userAccess |async)?.Global_User_isEdit) {\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Users</th>\r\n <th>Email</th>\r\n <th>Stores Assigned</th>\r\n <th class=\"text-end\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n\r\n <td class=\"text-end\">\r\n <span (click)=\"users('view',user)\" class=\"mx-6 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- <span class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3 4.99996H4.66667M4.66667 4.99996H18M4.66667 4.99996V16.6666C4.66667 17.1087 4.84226 17.5326 5.15482 17.8451C5.46738 18.1577 5.89131 18.3333 6.33333 18.3333H14.6667C15.1087 18.3333 15.5326 18.1577 15.8452 17.8451C16.1577 17.5326 16.3333 17.1087 16.3333 16.6666V4.99996H4.66667ZM7.16667 4.99996V3.33329C7.16667 2.89127 7.34226 2.46734 7.65482 2.15478C7.96738 1.84222 8.39131 1.66663 8.83333 1.66663H12.1667C12.6087 1.66663 13.0326 1.84222 13.3452 2.15478C13.6577 2.46734 13.8333 2.89127 13.8333 3.33329V4.99996M8.83333 9.16663V14.1666M12.1667 9.16663V14.1666\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span> -->\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n } @else if (loading) {\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (noData) {\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit ,EventEmitter, Output} from '@angular/core';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AlertPopupComponent } from '../user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from '../../../components-v2/add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../../../components-v2/teams-creation/teams-creation.component';\r\n\r\n@Component({\r\n selector: 'lib-brand-user',\r\n templateUrl: './brand-user.component.html',\r\n styleUrl: './brand-user.component.scss'\r\n})\r\nexport class BrandUserComponent implements OnInit,OnDestroy {\r\n @Output() dataToParent = new EventEmitter<string>();\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n receivedData:any='';\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any;\r\n rolesCount: any;\r\n SelectedTab: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n userInfo: any;\r\n constructor(\r\n public modalService: NgbModal,private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private userService: UserService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n }); \r\n }\r\n\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n}\r\n ngOnInit() {\r\n this.userInfo = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n \r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next:(data:any)=>{\r\n if(data === null ) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n if(userData?.clientId){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n } \r\n }\r\n });\r\n\r\n \r\n }\r\n\r\n \r\n searchData() {\r\n this.pagination.offset =1;\r\n this.pagination.limit =10;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n users(type: any,user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n }\r\n });\r\n }\r\n Viewusers(type: any,user?: any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount =0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.userService.changeMessage(this.pagination.limit);\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else { \r\n\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n \r\n \r\n\r\n }\r\n\r\n userStatusChange(user:any,i:number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" });\r\n modalRef.componentInstance.status = user.isActive\r\n modalRef.componentInstance.userName = user?.userName\r\nmodalRef.result.then((result) => { \r\n if (result) {\r\n if (result ==='submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive}).subscribe({\r\n next:(res:any)=> {\r\n if(res && res.code==200) {\r\n if(user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n },\r\n error:()=>{\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n },\r\n complete:()=>{}\r\n })\r\n } else if(result ==='close') {\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n}\r\n})\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n var data = { \r\n userType: 'client',\r\n clientId: this.$headerFilters?.client\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n}\r\nuserDetials(role: any) {\r\n let obj ={\r\n role:role,\r\n userType :'Brand User',\r\n receivedData:\"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData ='Role Value';\r\n}\r\nreceiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n}\r\n\r\nonSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n}\r\n\r\napplyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit=10;\r\n this.userList_req.export = false;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n}\r\nselectAllChecked: boolean = false;\r\nselectedUsers: any[] = []; \r\ncreateTeam: boolean = false;\r\nonSelectAll() {\r\n this.selectAllChecked = !this.selectAllChecked; \r\n\r\n this.userList.forEach(user => {\r\n user.checked = this.selectAllChecked; \r\n });\r\n if (this.selectAllChecked) {\r\n this.selectedUsers = [...this.userList];\r\n this.createTeam = true;\r\n } else {\r\n this.selectedUsers = [];\r\n this.createTeam = false;\r\n }\r\n}\r\n\r\n\r\nonSelectedTeams(user: any,index:any) {\r\n user.checked = !user.checked;\r\n if (user.checked) {\r\n this.selectedUsers.push(user);\r\n } else if(user.checked ===false) {\r\n const storeIndex = this.selectedUsers.findIndex(selectedUser => selectedUser._id === user._id);\r\n if (storeIndex !== -1) {\r\n this.selectedUsers.splice(storeIndex, 1);\r\n }\r\n }\r\n this.selectAllChecked = this.userList.every(store => store.checked);\r\n this.createTeam = this.selectedUsers.length > 0;\r\n }\r\n\r\n createTeams(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg',backdrop:'static' }); \r\n modalRef.componentInstance.teamsUsers = this.selectedUsers;\r\n console.log(this.selectedUsers)\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n this.selectAllChecked =false;\r\n this.createTeam = false;\r\n this.selectedUsers = []\r\n })\r\n }\r\n}","\r\n\r\n\r\n<div *ngIf=\"receivedData !=='Role Value'\">\r\n <div class=\"\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- <span class=\"card-label mb-2\">Users</span>\r\n <span class=\"text-sub mb-2\">{{pagination?.totalCount ? pagination?.totalCount :'0'}} total users</span> -->\r\n </h3>\r\n <div class=\"card-toolbar rightcorner \">\r\n <div *ngIf=\"!createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" type=\"button\" (click)=\"users('add')\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n \r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" (click)=\"createTeams()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\" (click)=\"onSelectAll()\" [(ngModel)]=\"selectAllChecked\"\r\n class=\"cursor-pointer\"></span>\r\n\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assignedStores')\">Stores Assigned\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'assignedStores' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\">Clusters \r\n <svg [ngClass]=\"userList_req?.sortColumName === 'clusterCount' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'clusterCount' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n \r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamCount')\">Teams \r\n <svg [ngClass]=\"userList_req?.sortColumName === 'teamCount' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'teamCount' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\"><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\" [(ngModel)]=\"user.checked\" (click)=\"onSelectedTeams(user,i)\"></span></td>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td>{{user?.assignedStores || 0}}</td> \r\n <td>{{user?.clusterCount||0}}</td>\r\n <td>{{user?.teamCount||0}}</td>\r\n\r\n <td>\r\n <div class=\"d-flex\">\r\n <!-- @if ((gs.userAccess | async)?.manage_users_isEdit) {\r\n <span class=\"me-3 cursor-pointer\" (click)=\"users('edit',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M9.66675 3.33333H3.83341C3.39139 3.33333 2.96746 3.50893 2.6549 3.82149C2.34234 4.13405 2.16675 4.55797 2.16675 5V16.6667C2.16675 17.1087 2.34234 17.5326 2.6549 17.8452C2.96746 18.1577 3.39139 18.3333 3.83341 18.3333H15.5001C15.9421 18.3333 16.366 18.1577 16.6786 17.8452C16.9912 17.5326 17.1667 17.1087 17.1667 16.6667V10.8333M15.9167 2.08333C16.2483 1.75181 16.6979 1.56557 17.1667 1.56557C17.6356 1.56557 18.0852 1.75181 18.4167 2.08333C18.7483 2.41485 18.9345 2.86449 18.9345 3.33333C18.9345 3.80217 18.7483 4.25181 18.4167 4.58333L10.5001 12.5L7.16675 13.3333L8.00008 10L15.9167 2.08333Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n } -->\r\n <span class=\"mx-3 cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n @if ((gs.userAccess | async)?.Global_User_isEdit) {\r\n <span class=\"mx-3 cursor-pointer\" *ngIf=\"userInfo.role!=='user'\">\r\n <button type=\"button\" (click)=\"assignStore(user)\" [disabled]=\"!user?.isActive || user?.role ==='superadmin'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Assign Store</span>\r\n </button>\r\n </span>\r\n }\r\n <span class=\"form-check form-switch\" *ngIf=\"userInfo.role!=='user'\">\r\n <input class=\"form-check-input mt-3\" type=\"checkbox\" role=\"switch\" id=\"support\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\" >\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <div *ngIf=\"receivedData !=='Role Value'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles\">\r\n\r\n <a *ngIf=\"obj.roleName ==='superadmin'\" class=\"role-title my-2 cursor-pointer\" >Super Admin</a>\r\n <a *ngIf=\"obj.roleName !=='superadmin'\" class=\"role-title my-2 cursor-pointer\">{{obj.roleName |\r\n titlecase}}</a> \r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n","import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { UserService } from '../../services/user.service';\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrl: './users-list.component.scss'\r\n})\r\nexport class UsersListComponent implements OnInit {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @Output() dataToParent = new EventEmitter<string>();\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Configuration\", isAdd: false },\r\n { name: \"invoice\", isAdd: false },\r\n { name: \"billing\", isAdd: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Eye\",\r\n modules: [\r\n { name: \"stores\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"camera\", isAdd: false, isEdit: false },\r\n { name: \"zone\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Trax\",\r\n modules: [\r\n { name: \"store\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Admin\",\r\n modules: [\r\n { name: \"Lead Approval\", isAdd: false },\r\n { name: \"invoice Approval\", isAdd: false },\r\n { name: \"Edit billing\", isAdd: false },\r\n { name: \"Ticket Configuration\", isAdd: false },\r\n { name: \"Ticket Assigning\", isAdd: false },\r\n ]\r\n },\r\n ];\r\n userListData: any;\r\nconstructor(private ts: ToastService,private router: Router,public modalService: NgbModal,private userService: UserService){\r\n\r\n \r\n}\r\n\r\n\r\n\r\nngOnInit() {\r\n this.userService.currentMessage.subscribe((message:any) =>{\r\n this.userListData = message;\r\n\r\n })\r\n \r\n}\r\nonUpload(e: any) {\r\n alert('in')\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n // this.ts.getErrorToast('Please Upload the Valid File');\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n \r\n return;\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n role: data[i].Role,\r\n rolespermission:this.permissionArray\r\n });\r\n }\r\n // this.userService\r\n // .userBulkUpload(\r\n // { \r\n // users: processedArray, \r\n // userType: this.userType, \r\n // ...(this.userType=='client') ? {clientId: this.$headerFilters.client } : {}\r\n // }\r\n // )\r\n // .subscribe({\r\n // next: (res: any) => {\r\n // if (res.code == 200) {\r\n // this.activeModal.close('submit');\r\n // this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n // }\r\n // },\r\n // error: (error: any) => {\r\n // console.log(error)\r\n // if (error) {\r\n // this.ts.getErrorToast(error.error.error ? error.error.error:'Unable to create multiple Users!');\r\n // // } else {\r\n // // this.ts.getErrorToast('Unable to create multiple Users!');\r\n // }\r\n // },\r\n // });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n}\r\nvalidateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${\r\n row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n}\r\naddSingleUser(){\r\n let obj = {\r\n label: 'add',\r\n }\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.result.then((result) => {\r\n })\r\n}\r\n\r\nusers(type:any){\r\n\r\n}\r\nonSort(type:any){\r\n\r\n}\r\nassignStore(){\r\n\r\n}\r\nuserCount: string;\r\n\r\nreceiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n this.dataToParent.emit(this.userCount ); \r\n}\r\n}\r\n","\r\n <div *ngIf=\"userListData === 0\" class=\"card-body d-flex flex-center flex-column p-9\">\r\n \r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 24V32M24 28H32M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Upload to add users </a>\r\n \r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <!-- <li class=\"user-text\">Use the template to upload multiple users at once.</li> -->\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/UsersTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2 single-user fw-bold\">Add Single User</span></span></label>\r\n \r\n </div>\r\n </div>\r\n\r\n<lib-brand-user *ngIf=\"userListData !== 0\" (dataToParent)=\"receiveData($event)\"></lib-brand-user>\r\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrl: './action-popup.component.scss'\r\n})\r\nexport class ActionPopupComponent {\r\n @Input() teamData:any;\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n cancel(){\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit(){\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Delete {{teamData?.teamName}} team?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Are you sure you want to delete this team? This action cannot be undone.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit()\">Delete</button> \r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","\r\nimport { ChangeDetectorRef, Component,Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ExcelService } from '../../services/excel.service';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\n@Component({\r\n selector: 'lib-viewteams-list',\r\n templateUrl: './viewteams-list.component.html',\r\n styleUrl: './viewteams-list.component.scss'\r\n})\r\nexport class ViewteamsListComponent implements OnInit {\r\n @Input() teamData: any;\r\n $headerFilters: any;\r\n searchValue: any;\r\n viewteamsList: any = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =true\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n leadData: any=[];\r\n\r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService,\r\n public gs: GlobalStateService, private excelService: ExcelService,public modalService: NgbModal,\r\n ) {\r\n }\r\n ngOnInit() {\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n TeamId:this.teamData?._id,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n\r\n };\r\n this.userService\r\n .getviewteamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams View')\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n }\r\n\r\n Viewusers(type: any,user?: any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.componentInstance.operationType ='view';\r\n\r\n modalRef.result.then((result) => {\r\n \r\n })\r\n }\r\n \r\n applyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.reqdata.offset = 1;\r\n this.reqdata.limit=10;\r\n this.reqdata.export = false;\r\n this.reqdata.filterByRoles = this.filterByRoles;\r\n this.reqdata.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n backteamsList(){\r\n this.userService.setViewTeam(false);\r\n }\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount = 0;\r\n this.userService.getviewteamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.viewteamsList = res.data.result;\r\n this.leadData = res.data.teamlead\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false,\r\n TeamId:this.teamData?._id,\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n Configure(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.teamData = this.teamData;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n viewUser(data:any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = data;\r\n modalRef.componentInstance.type = 'view';\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n })\r\n }\r\n}\r\n","<div *ngIf=\"viewTeams\" class=\"card border-0 p-5\">\r\n <div class=\"card-header border-0 px-0\">\r\n <h3 class=\"card-title align-items-start d-flex align-items-center\">\r\n <span class=\"cursor-pointer\" (click)=\"backteamsList()\"> <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_1029_22185)\">\r\n <rect x=\"2\" y=\"1\" width=\"44\" height=\"44\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"43\" height=\"43\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M29.8334 22.9998H18.1667M18.1667 22.9998L24 28.8332M18.1667 22.9998L24 17.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_1029_22185\" x=\"0\" y=\"0\" width=\"48\" height=\"48\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1029_22185\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1029_22185\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></span>\r\n <div class=\"ms-3\">\r\n <div class=\"card-label mb-2\">{{teamData?.teamName}}</div>\r\n <div class=\"text-sub mb-2\">{{pagination?.totalCount ? pagination?.totalCount :'0'}} total users</div>\r\n </div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\"\r\n (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <button *ngIf=\"!loading && !noData && (gs.userAccess |async)?.Global_User_isEdit\" class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" \r\n (click)=\"Configure()\">Configure</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-0 px-0 d-flex\" *ngIf=\"leadData?.length\">\r\n <div class=\"d-flex mt-5 mx-5 w-100 overflow-auto\">\r\n <div class=\"p-3 pt-7 text-nowrap\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"users\">\r\n <path id=\"Icon\"\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n <span class=\"heading ms-2\">Lead By</span>\r\n </div>\r\n <div class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val1 ms-4\"\r\n *ngFor=\"let obj of leadData\">\r\n <span class=\"heading \">{{obj.userName}}</span>\r\n <span *ngIf=\"obj?.role\" class=\"blue-badge ms-2\">{{obj?.role | titlecase}}</span>\r\n <div class=\"sub-header mt-2\">{{obj.email}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0 mt-10\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <!-- <th class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\"\r\n class=\"cursor-pointer\"></span>\r\n\r\n </th> -->\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Username\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'email' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'mobileNumber' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'role' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assignedStores')\">Stores Assigned\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'assignedStores' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\">Clusters\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'clusterCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamCount')\">Teams\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n <!-- <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Assigned Type\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th> -->\r\n <!-- <th style=\"line-height: 21px !important;\">Actions</th> -->\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of viewteamsList;let i=index;\">\r\n <tr>\r\n <!-- <td><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\"></span></td> -->\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td>{{user?.role |titlecase}}</td>\r\n <td>{{user?.assignedStores}}</td>\r\n <td>{{user?.clusterCount}}</td>\r\n <td>{{user?.teamCount}}</td>\r\n <td>\r\n <div class=\"d-flex\" (click)=\"Viewusers('view',user)\">\r\n <span class=\"cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10C0.833374 10 4.16671 3.33334 10 3.33334C15.8334 3.33334 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5C11.3808 12.5 12.5 11.3807 12.5 10C12.5 8.6193 11.3808 7.50001 10 7.50001C8.61933 7.50001 7.50004 8.6193 7.50004 10C7.50004 11.3807 8.61933 12.5 10 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n </div>\r\n </td>\r\n <!-- <td>store</td> -->\r\n <!-- <td>\r\n <span class=\"me-3 cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n\r\n </td> -->\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"viewteamsList.length!==0\" [itemsPerPage]=\"pagination.limit\"\r\n [currentPage]=\"pagination.offset\" [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <!-- <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noData\" class=\"row \">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>","import { Component,ChangeDetectorRef, OnInit, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ExcelService } from '../../services/excel.service';\r\n@Component({\r\n selector: 'lib-teams-list',\r\n templateUrl: './teams-list.component.html',\r\n styleUrl: './teams-list.component.scss'\r\n})\r\nexport class TeamsListComponent implements OnInit {\r\n @Output() dataTo = new EventEmitter<any>();\r\n @ViewChild('tooltipContent') tooltipContent!: NgbTooltip;\r\n @ViewChild('tooltipContents') tooltipContents!: NgbTooltip\r\n showcreatebutton:boolean = false;\r\n $headerFilters: any;\r\n searchValue: any;\r\n teamsList: any[] = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =false\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n\r\n \r\n\r\n \r\n \r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService, private excelService: ExcelService,\r\n public gs: GlobalStateService,private ts: ToastService,private router: Router,public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n ngOnInit() {\r\n this.userService.setViewTeam(false);\r\n this.userService.viewTeams$.subscribe((value: boolean) => {\r\n this.viewTeams = value;\r\n if(value){\r\n this.loadTable()\r\n }\r\n });\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n searchValue: this.searchValue,\r\n };\r\n this.userService\r\n .getTeamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams ')\r\n \r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n \r\n }\r\n createTeam(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' }); \r\n modalRef.componentInstance.type = 'create'; \r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n editTeamsdata(data:any){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n deleteTeam(data:any){\r\n const modalRef = this.modalService.open(ActionPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.result.then((result) => {\r\n if(result === 'submit'){\r\n this.userService.deleteTeam({teamId:data._id}).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast('Team Deleted Successfully')\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata.offset =1\r\n this.loadTable();\r\n }})\r\n }\r\n \r\n })\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount = 0;\r\n this.userService.getTeamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n if(res.data.result.length){\r\n this.teamsList = res.data.result;\r\n this.showcreatebutton = false \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataTo.emit( this.pagination.totalCount); \r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n }else{\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.showcreatebutton = true\r\n this.noData = true;\r\n this.loading = false;\r\n }\r\n \r\n }else {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true;\r\n this.userService.setViewTeam(true);\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n}\r\n","<div>\r\n <div class=\"\" *ngIf=\"!loading && !viewTeams&&!showcreatebutton\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n </h3>\r\n <div class=\"card-toolbar rightcorner\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd && teamsList.length>0\" type=\"button\" (click)=\"createTeam()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header border-0 pt-3 left-move\">\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button type=\"button\" (click)=\"createTeam()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <!-- <th class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\"\r\n class=\"cursor-pointer\"></span>\r\n\r\n </th> -->\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamName')\">Team Name\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userscount')\">Users\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userscount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userscount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Name\r\n <!-- <svg [ngClass]=\"reqdata?.sortColumName === 'leadName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'leadName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Email\r\n <!-- <svg [ngClass]=\"reqdata?.sortColumName === 'leademail' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'leademail' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Description\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of teamsList;let i=index;\">\r\n <tr>\r\n <!-- <td><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\"></span></td> -->\r\n <td>{{user?.teamName}}</td>\r\n <td>{{user?.userscount}}</td>\r\n <!-- <td>{{user?.leadName}}<span *ngIf=\"user?.Teamleadcount>0\"> +{{user?.Teamleadcount}}</span>\r\n </td> -->\r\n <td><div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ user?.leadName[0]?user?.leadName[0]:\"--\" }}\r\n </span>\r\n <span *ngIf=\"user?.leadName.length > 1\">\r\n +{{ user.leadName.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n <!-- <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"w-100\">{{ user.leadName}}</span>\r\n <span *ngIf=\"user.leademail.length > 1\">\r\n +{{ user.leademail.length - 1 }} more\r\n </span>\r\n </div>\r\n </ng-template> -->\r\n </div>\r\n </div></td>\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label badge-light-primary text-symbol\">\r\n <span class=\"text-primary fs-4 badge badge-light-primary fw-normal\">\r\n {{user?.leademail.slice(0,1) | uppercase }}\r\n </span>\r\n </span>\r\n </div> -->\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label badge-light-primary text-symbol\" *ngIf=\"user?.leademail.length>0\">\r\n <span class=\"text-primary fs-4 badge badge-light-primary fw-normal\">\r\n {{ user?.leademail[0]?.substring(0, 2) | uppercase }}\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ user?.leademail[0]?user?.leademail[0]:\"--\" }}\r\n </span>\r\n <span *ngIf=\"user?.leademail.length > 1\">\r\n +{{ user.leademail.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n <!-- <ng-template #tooltipContents>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"w-100\">{{ user.leademail}}</span>\r\n </div>\r\n </ng-template> -->\r\n </div>\r\n </div>\r\n <span *ngIf=\"user?.Teamleadcount>0\">+{{user?.Teamleadcount}}</span>\r\n </div>\r\n </td>\r\n <td class=\"description\">{{user?.description ? user?.description : \"--\"}}</td>\r\n <td>\r\n <span class=\"me-3 cursor-pointer\" (click)=\"viewTeamsdata(user)\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"me-3 cursor-pointer\" (click)=\"editTeamsdata(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_2181_11160)\">\r\n <path\r\n d=\"M24.1666 12.4999C24.3855 12.2811 24.6453 12.1074 24.9313 11.989C25.2173 11.8705 25.5238 11.8096 25.8333 11.8096C26.1428 11.8096 26.4493 11.8705 26.7353 11.989C27.0213 12.1074 27.2811 12.2811 27.5 12.4999C27.7188 12.7188 27.8924 12.9786 28.0109 13.2646C28.1294 13.5506 28.1903 13.8571 28.1903 14.1666C28.1903 14.4761 28.1294 14.7826 28.0109 15.0686C27.8924 15.3546 27.7188 15.6144 27.5 15.8333L16.25 27.0833L11.6666 28.3333L12.9166 23.7499L24.1666 12.4999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2181_11160\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"cursor-pointer\" (click)=\"deleteTeam(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.5 14.9998H14.1667M14.1667 14.9998H27.5M14.1667 14.9998V26.6665C14.1667 27.1085 14.3423 27.5325 14.6548 27.845C14.9674 28.1576 15.3913 28.3332 15.8333 28.3332H24.1667C24.6087 28.3332 25.0326 28.1576 25.3452 27.845C25.6577 27.5325 25.8333 27.1085 25.8333 26.6665V14.9998H14.1667ZM16.6667 14.9998V13.3332C16.6667 12.8911 16.8423 12.4672 17.1548 12.1547C17.4674 11.8421 17.8913 11.6665 18.3333 11.6665H21.6667C22.1087 11.6665 22.5326 11.8421 22.8452 12.1547C23.1577 12.4672 23.3333 12.8911 23.3333 13.3332V14.9998M18.3333 19.1665V24.1665M21.6667 19.1665V24.1665\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"teamsList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"noData&&!showcreatebutton\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"showcreatebutton\" class=\"row\">\r\n <div class=\"ms-3 right-bar py-7 d-flex justify-content-center align-items-center flex-column\">\r\n <svg width=\"160\" height=\"120\" viewBox=\"0 0 160 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"82\" cy=\"52\" r=\"52\" fill=\"#EAECF0\" />\r\n <g filter=\"url(#filter0_dd_1030_48016)\">\r\n <path\r\n d=\"M47.7266 79.1098L80.9651 63.6104C82.6339 62.8322 83.3559 60.8485 82.5777 59.1797L62.9484 17.0845L49.6563 12.2466L22.4611 24.9279C20.7923 25.7061 20.0703 27.6898 20.8485 29.3586L43.2959 77.4971C44.074 79.166 46.0577 79.888 47.7266 79.1098Z\"\r\n fill=\"url(#paint0_linear_1030_48016)\" />\r\n <path d=\"M49.6567 12.2471L62.9489 17.085L53.8838 21.3121L49.6567 12.2471Z\" fill=\"#D0D5DD\" />\r\n </g>\r\n <g filter=\"url(#filter1_dd_1030_48016)\">\r\n <path\r\n d=\"M63.6163 67.7831H100.291C102.132 67.7831 103.625 66.2904 103.625 64.4491V18.0022L93.6228 8H63.6163C61.7749 8 60.2822 9.49271 60.2822 11.3341V64.4491C60.2822 66.2904 61.7749 67.7831 63.6163 67.7831Z\"\r\n fill=\"url(#paint1_linear_1030_48016)\" />\r\n <path d=\"M93.6226 8L103.625 18.0022H93.6226V8Z\" fill=\"#D0D5DD\" />\r\n </g>\r\n <g filter=\"url(#filter2_dd_1030_48016)\">\r\n <path\r\n d=\"M82.4745 63.5909L115.713 79.0903C117.382 79.8685 119.366 79.1465 120.144 77.4777L139.773 35.3825L134.935 22.0903L107.74 9.40903C106.071 8.63085 104.087 9.35286 103.309 11.0217L80.8619 59.1602C80.0837 60.8291 80.8057 62.8128 82.4745 63.5909Z\"\r\n fill=\"url(#paint2_linear_1030_48016)\" />\r\n <path d=\"M134.936 22.0898L139.773 35.382L130.708 31.1549L134.936 22.0898Z\" fill=\"#D0D5DD\" />\r\n </g>\r\n <circle cx=\"27\" cy=\"11\" r=\"5\" fill=\"#F2F4F7\" />\r\n <circle cx=\"24\" cy=\"109\" r=\"7\" fill=\"#F2F4F7\" />\r\n <circle cx=\"151\" cy=\"35\" r=\"7\" fill=\"#F2F4F7\" />\r\n <circle cx=\"140\" cy=\"8\" r=\"4\" fill=\"#F2F4F7\" />\r\n <g filter=\"url(#filter3_b_1030_48016)\">\r\n <rect x=\"58\" y=\"62\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#344054\" fill-opacity=\"0.4\" />\r\n <path\r\n d=\"M74.5 81.6816C72.8425 81.6816 71.5 80.2133 71.5 78.4004C71.5 76.5875 72.8425 75.1191 74.5 75.1191C76.1575 75.1191 77.5 76.5875 77.5 78.4004C77.5 80.2133 76.1575 81.6816 74.5 81.6816ZM89.6483 81.6816C87.9908 81.6816 86.6483 80.2133 86.6483 78.4004C86.6483 76.5875 87.9908 75.1191 89.6483 75.1191C91.3058 75.1191 92.6483 76.5875 92.6483 78.4004C92.6483 80.2133 91.3058 81.6816 89.6483 81.6816ZM85.509 84.3066C85.509 86.4805 83.8965 88.2441 81.909 88.2441C79.9215 88.2441 78.309 86.4805 78.309 84.3066C78.309 82.1328 79.9215 80.3691 81.909 80.3691C83.8965 80.3691 85.509 82.1328 85.509 84.3066Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M74.0013 83.7559C71.7925 83.7559 70 85.7164 70 88.1322C70 88.6121 70.36 89.0059 70.7988 89.0059H78.8013H78.8275C77.8338 88.042 77.2038 86.6352 77.2038 85.0684C77.2038 84.7566 77.2263 84.449 77.275 84.1537C76.765 83.8994 76.1988 83.7559 75.6025 83.7559H74.0013Z\"\r\n fill=\"#D0D5DD\" />\r\n <path\r\n d=\"M85.1725 89.0059H85.1987H93.2012C93.64 89.0059 94 88.6162 94 88.1322C94 85.7164 92.2075 83.7559 89.9987 83.7559H88.3975C87.8012 83.7559 87.235 83.8953 86.725 84.1537C86.77 84.4531 86.7963 84.7566 86.7963 85.0684C86.7963 86.6352 86.17 88.042 85.1725 89.0059Z\"\r\n fill=\"#D0D5DD\" />\r\n <path\r\n d=\"M79.7988 90.3183C77.0388 90.3183 74.8 92.767 74.8 95.7857C74.8 96.3928 75.25 96.8809 75.8013 96.8809H88.1987C88.7537 96.8809 89.2 96.3887 89.2 95.7857C89.2 92.767 86.9613 90.3183 84.2013 90.3183H79.7988Z\"\r\n fill=\"#D0D5DD\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_dd_1030_48016\" x=\"-0.560547\" y=\"8.01953\" width=\"104.547\" height=\"112.499\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\" />\r\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow_1030_48016\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <filter id=\"filter1_dd_1030_48016\" x=\"40.2822\" y=\"8\" width=\"83.3428\" height=\"99.7832\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\" />\r\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow_1030_48016\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <filter id=\"filter2_dd_1030_48016\" x=\"59.4526\" y=\"8\" width=\"104.547\" height=\"112.499\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\" />\r\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow_1030_48016\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <filter id=\"filter3_b_1030_48016\" x=\"50\" y=\"54\" width=\"64\" height=\"64\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feGaussianBlur in=\"BackgroundImageFix\" stdDeviation=\"4\" />\r\n <feComposite in2=\"SourceAlpha\" operator=\"in\" result=\"effect1_backgroundBlur_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_backgroundBlur_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_1030_48016\" x1=\"45.7738\" y1=\"79.2396\" x2=\"19.2853\" y2=\"31.4523\"\r\n gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E4E7EC\" />\r\n <stop offset=\"1\" stop-color=\"#F9FAFB\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint1_linear_1030_48016\" x1=\"61.7916\" y1=\"67.0755\" x2=\"57.9807\" y2=\"12.571\"\r\n gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E4E7EC\" />\r\n <stop offset=\"1\" stop-color=\"#F9FAFB\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint2_linear_1030_48016\" x1=\"81.1199\" y1=\"62.1785\" x2=\"100.701\" y2=\"11.17\"\r\n gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E4E7EC\" />\r\n <stop offset=\"1\" stop-color=\"#F9FAFB\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n <div class=\"nodata-title\">Start by creating a team</div>\r\n <div class=\"nodata-sub mt-2\">Any team created will track here.</div>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-center align-items-center mt-3 mb-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-25 me-3\">How to create?</button>\r\n <button [disabled]=\"!(gs.userAccess |async)?.Global_User_isAdd\" class=\"btn btn-primary w-25 ms-3\" id=\"alert-toast\" (click)=\"createTeam()\"><span class=\"mx-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16699V15.8337M4.1665 10.0003H15.8332\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Create\r\n Team</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"viewTeams\">\r\n <lib-viewteams-list [teamData]=\"this.selectedTeam\"></lib-viewteams-list>\r\n</div>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n@Component({\r\n selector: 'lib-users-manage',\r\n templateUrl: './users-manage.component.html',\r\n styleUrl: './users-manage.component.scss'\r\n})\r\nexport class UsersManageComponent implements OnInit,OnDestroy {\r\n private readonly destroy = new Subject();\r\n selectedTab: any ='users';\r\n teamCount:any =''\r\n private readonly destroy$ = new Subject();\r\n searchValue: any;\r\n $headerFilters: any;\r\n constructor(public userService: ManageUsersService, ){\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n }\r\n ngOnInit(): void {\r\n this.selectedTabs('users');\r\n this.loadTable()\r\n }\r\n selectedTabs(type: any) {\r\n this.selectedTab = type;\r\n }\r\n userCount: string;\r\n\r\n receiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n }\r\n receive(data: any) {\r\n this.teamCount = data; // Store data from the child\r\n }\r\n loadTable() {\r\n let user = JSON.parse(localStorage.getItem('header-filters') || '{}')\r\n let payload = {\r\n clientId: user.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.userService.getTeamsList(payload).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamCount = res.data.count;\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \" style=\"border-bottom: white!important;overflow-y: hidden;\">\r\n \r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\">\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\" >{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6 \">Teams <span class=\"blue-badge mx-2\" >{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header my-3 min-h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\" >\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\">{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams <span class=\"blue-badge mx-2\">{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n\r\n </ul>\r\n </div> -->\r\n <div class=\"card-card pt-2 pb-1 \">\r\n <lib-users-list *ngIf=\"selectedTab ==='users'\" (dataToParent)=\"receiveData($event)\"></lib-users-list>\r\n <lib-teams-list *ngIf=\"selectedTab ==='teams'\" (dataTo)=\"receive($event)\"></lib-teams-list>\r\n </div>\r\n</div>","import { Component, OnDestroy, OnInit, Input, ChangeDetectorRef, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-list',\r\n templateUrl: './audit-user-list.component.html',\r\n styleUrl: './audit-user-list.component.scss'\r\n})\r\nexport class AuditUserListComponent implements OnInit, OnDestroy {\r\n\r\n @Input() viewuser: any;\r\n @Input() userDetails: any;\r\n userData: any;\r\n @Output() dataEmitter: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n };\r\n totalCount: any;\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n headerFilter: any;\r\n consolidatedData: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef, private toast: ToastService,\r\n public gs: GlobalStateService, private service: UserService,\r\n private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.headerFilter = data\r\n this.loadTable();\r\n this.consolidatedCard();\r\n this.getuserDetails();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n consolidatedCard() {\r\n const payload = {\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email\r\n }\r\n this.service.getConsolidatedCard(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code === 200) {\r\n this.consolidatedData = res?.data?.result;\r\n }\r\n },\r\n })\r\n\r\n }\r\n\r\n getuserDetails() {\r\n this.service.getAuditUserDetails(this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userData = res?.data?.result;\r\n }\r\n },\r\n })\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWalletSummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.totalCount = res?.data?.count;\r\n if (this.totalCount < 10) {\r\n this.paginationSizes = [this.totalCount];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportWalletAummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Wallet Summary')\r\n },\r\n error: (err: any) => {\r\n this.toast.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n // Viewusers(data: any, key: any) {\r\n // this.viewuser = true;\r\n // }\r\n\r\n paginationSize(): number {\r\n if (this.totalCount < 10) {\r\n return this.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n backTosummary() {\r\n this.viewuser = false;\r\n this.searchValue = '';\r\n this.dataEmitter.emit(this.viewuser)\r\n }\r\n}\r\n","<div class=\"card p-0 rounded-3 mb-5\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title m-0\">\r\n <div class=\"d-flex align-items-center\">\r\n <span (click)=\"backTosummary()\" class=\"btn me-3 px-2 py-2 btn-outline\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10H4.1665M4.1665 10L9.99984 15.8333M4.1665 10L9.99984 4.16667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"userData?.userName\" class=\"me-3 fw-bold\">{{(userDetails?.userName ? userDetails?.userName : userDetails?.userName) | titlecase}}</span> <span\r\n class=\"badge me-3 badge-light-default\">{{userData?.tangoUserType | titlecase}}</span><span\r\n class=\"badge me-3 badge-light-success\">{{userData?.role | titlecase}}</span>\r\n <span *ngIf=\"userData?.email\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14.6668 4.00001C14.6668 3.26667 14.0668 2.66667 13.3335 2.66667H2.66683C1.9335 2.66667 1.3335 3.26667 1.3335 4.00001M14.6668 4.00001V12C14.6668 12.7333 14.0668 13.3333 13.3335 13.3333H2.66683C1.9335 13.3333 1.3335 12.7333 1.3335 12V4.00001M14.6668 4.00001L8.00016 8.66667L1.3335 4.00001\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.email}}</span></span>\r\n <span *ngIf=\"userData?.mobileNumber\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_8096_7888)\">\r\n <path\r\n d=\"M16.5001 12.69V14.94C16.5009 15.1489 16.4581 15.3556 16.3745 15.547C16.2908 15.7384 16.168 15.9102 16.0141 16.0514C15.8602 16.1926 15.6785 16.3001 15.4806 16.367C15.2828 16.4339 15.0731 16.4588 14.8651 16.44C12.5572 16.1892 10.3403 15.4006 8.39257 14.1375C6.58044 12.986 5.04407 11.4496 3.89257 9.6375C2.62506 7.6809 1.83625 5.45324 1.59007 3.135C1.57133 2.9276 1.59598 2.71857 1.66245 2.52121C1.72892 2.32386 1.83575 2.14251 1.97615 1.98871C2.11654 1.83491 2.28743 1.71203 2.47792 1.62789C2.6684 1.54375 2.87433 1.50019 3.08257 1.5H5.33257C5.69655 1.49641 6.04942 1.62531 6.32539 1.86265C6.60137 2.09999 6.78163 2.42958 6.83257 2.79C6.92754 3.51005 7.10366 4.21704 7.35757 4.8975C7.45848 5.16594 7.48032 5.45768 7.4205 5.73816C7.36069 6.01863 7.22172 6.27608 7.02007 6.48L6.06757 7.4325C7.13524 9.31016 8.68991 10.8648 10.5676 11.9325L11.5201 10.98C11.724 10.7783 11.9814 10.6394 12.2619 10.5796C12.5424 10.5197 12.8341 10.5416 13.1026 10.6425C13.783 10.8964 14.49 11.0725 15.2101 11.1675C15.5744 11.2189 15.9071 11.4024 16.145 11.6831C16.3828 11.9638 16.5092 12.3222 16.5001 12.69Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8096_7888\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.mobileNumber }}</span></span>\r\n <span *ngIf=\"userData?.clientAssigned\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12.75 15.75V14.25C12.75 13.4544 12.4339 12.6913 11.8713 12.1287C11.3087 11.5661 10.5456 11.25 9.75 11.25H3.75C2.95435 11.25 2.19129 11.5661 1.62868 12.1287C1.06607 12.6913 0.75 13.4544 0.75 14.25V15.75M17.25 15.75V14.25C17.2495 13.5853 17.0283 12.9396 16.621 12.4142C16.2138 11.8889 15.6436 11.5137 15 11.3475M12 2.3475C12.6453 2.51273 13.2173 2.88803 13.6257 3.41423C14.0342 3.94044 14.2559 4.58762 14.2559 5.25375C14.2559 5.91988 14.0342 6.56706 13.6257 7.09327C13.2173 7.61947 12.6453 7.99477 12 8.16M9.75 5.25C9.75 6.90685 8.40685 8.25 6.75 8.25C5.09315 8.25 3.75 6.90685 3.75 5.25C3.75 3.59315 5.09315 2.25 6.75 2.25C8.40685 2.25 9.75 3.59315 9.75 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 top-list\">Clients Assigned:{{userData?.clientAssigned ?? 0}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card p-3 rounded-3 mb-5\">\r\n <div class=\"w-100 p-5 bg-highlighted d-flex align-items-center\">\r\n <span class=\"fw-bold text-highlighted\">₹ {{consolidatedData?.totalCredit ? consolidatedData?.totalCredit.toFixed(2) : 0}}</span><span\r\n class=\"fw-semibold text-sub ms-3\">{{consolidatedData?.message}}\r\n <!-- {{headerFilter?.date?.startDate}} – {{headerFilter?.date?.endDate}} -->\r\n </span>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center px-5 py-5\">\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalFiles ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Files</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalBC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Before Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalAC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">After Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalEarnings ? consolidatedData?.totalEarnings.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Earnings</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalReducedAmount ? consolidatedData?.totalReducedAmount.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Reduced Amount</div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3 mb-5\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title\">Summary Table</div>\r\n <div class=\"text-sub\">Based on {{headerFilter?.date?.startDate | date:'dd MMM, yyyy'}} – {{headerFilter?.date?.endDate | date:'dd MMM, yyyy'}}</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default px-4 py-3 mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDate')\">File Date\r\n <svg [ngClass]=\"sortColumName === 'fileDate' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFilesCount')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFilesCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFilesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBeforeCount')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBeforeCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBeforeCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAfterCount')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAfterCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAfterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarn')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarn' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarn' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionByMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionByMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionByLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.fileDate ?? '--'}}</td>\r\n <td>{{user?.totalFilesCount ?? '--'}}</td>\r\n <td>{{user?.totalBeforeCount ?? '--'}}</td>\r\n <td>{{user?.totalAfterCount ?? '--'}}</td>\r\n <td>{{user?.totalEarn ? user?.totalEarn.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMinimumTarget ? user?.deductionByMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMapping ? user?.deductionByMapping.toFixed(2) : 0}}</td>\r\n <td>{{user.deductionByLateLogin ? user.deductionByLateLogin.toFixed(2) : 0}}\r\n </td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit, viewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { AddUserPopupComponent } from '../../add-user-popup/add-user-popup.component';\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-earnings',\r\n templateUrl: './audit-user-earnings.component.html',\r\n styleUrl: './audit-user-earnings.component.scss'\r\n})\r\nexport class AuditUserEarningsComponent implements OnInit, OnDestroy {\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private service: UserService, private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.$headerFilters = data\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.searchValue = this.searchValue;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.loadTable();\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.pagination.totalCount = res?.data?.count;\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res?.data?.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportgetAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Users Summary')\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n }\r\n\r\n generateReport() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate\r\n }\r\n this.service.getGenerateReport(payload).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.toastService.getSuccessToast('Report Generated Successfully')\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error.error)\r\n },\r\n })\r\n }\r\n\r\n\r\n viewuser: boolean = false;\r\n userDetails: any;\r\n\r\n Viewusers(type: any, user?: any) {\r\n this.viewuser = true;\r\n this.searchValue = '';\r\n this.userDetails = user;\r\n }\r\n\r\n addUsers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.pagination.limit = 10;\r\n this.pagination.offset = 1;\r\n // this.sortColumName = 'userName';\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n receivedData(event: any) {\r\n this.viewuser = event;\r\n this.searchValue = '';\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortBy = -1;\r\n this.sortColumName = undefined;\r\n this.loadTable();\r\n }\r\n\r\n}\r\n","<div *ngIf=\"!viewuser\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer px-5 me-5 text-center\"><a routerLink=\"/manage/users/tango\"\r\n class=\"nav-link mx-0 text-active-primary\">Users</a>\r\n </li>\r\n <li class=\"nav-item activated px-5 me-5 bg-light-primary cursor-pointer\"><a\r\n class=\"nav-link text-active-primary mx-0\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <!-- <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"generateReport()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><span\r\n class=\"ms-2\">Generate</span> </button> -->\r\n\r\n\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"addUsers('add')\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"sortColumName === 'userName' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateFrom')\">File Date From\r\n <svg [ngClass]=\"sortColumName === 'fileDateFrom' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateFrom' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateTo')\">File Date To\r\n <svg [ngClass]=\"sortColumName === 'fileDateTo' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateTo' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('noOfDays')\">No.of Days\r\n <svg [ngClass]=\"sortColumName === 'noOfDays' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'noOfDays' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFiles')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFiles' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBC')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAC')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarnings')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarnings' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarnings' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('bcCredit')\">BC Credit\r\n <svg [ngClass]=\"sortColumName === 'bcCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'bcCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('acCredit')\">AC Credit\r\n <svg [ngClass]=\"sortColumName === 'acCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'acCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionbyLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName ? user?.userName : '--'}}</td>\r\n <td>{{user?.fileDateFrom ? user?.fileDateFrom : '--'}}</td>\r\n <td>{{user?.fileDateTo ? user?.fileDateTo : '--'}}</td>\r\n <td>{{user?.noOfDays ? user?.noOfDays : 0}}</td>\r\n <td>{{user?.totalFiles ?? '--'}}</td>\r\n <td>{{user?.totalBC ?? '--'}}</td>\r\n <td>{{user?.totalAC ?? '--'}}</td>\r\n <td>{{user?.totalEarnings ? user?.totalEarnings.toFixed(2) : 0}}</td>\r\n <td>{{user.bcCredit ? user.bcCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.acCredit ? user?.acCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMinimumTarget ? user?.deductionbyMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMapping ? user?.deductionbyMapping.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyLateLogin ? user?.deductionbyLateLogin.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>\r\n<div *ngIf=\"viewuser\">\r\n <lib-audit-user-list (dataEmitter)=\"receivedData($event)\" [viewuser]=\"viewuser\"\r\n [userDetails]=\"userDetails\"></lib-audit-user-list>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\n\r\nconst routes: Routes = [\r\n // {\r\n // path:'client',\r\n // component:BrandUserComponent\r\n // },\r\n {\r\n path: 'tango',\r\n component: UserTableComponent,\r\n },\r\n {\r\n path: 'tango/audit',\r\n component: AuditUserEarningsComponent\r\n },\r\n {\r\n path: 'client',\r\n component: UsersManageComponent\r\n },\r\n {\r\n path: 'teams',\r\n component: TeamsCreationComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoManageUsersRoutingModule { }\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { PageInfoService,GlobalStateService } from \"tango-app-ui-global\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n@Component({\r\n selector: \"lib-tango-manage-users\",\r\n templateUrl: \"./tango-manage-users.component.html\",\r\n styleUrl: \"./tango-manage-users.component.scss\",\r\n})\r\nexport class TangoManageUsersComponent implements OnInit,OnDestroy {\r\n receivedData: any = \"\";\r\n userData: string;\r\n roles: any[] = [];\r\n rolesCount: number;\r\n $headerFilters: any;\r\n userType: string;\r\n USER: any;\r\n setTab: string;\r\n private readonly destroy$ = new Subject();\r\n \r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private gs: GlobalStateService,private route: ActivatedRoute\r\n ) {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n if(user && user.userType) {\r\n this.USER = user;\r\n }\r\n this.userType = this.USER.userType ? this.USER.userType : 'client';\r\n this.route?.queryParams\r\n ?.pipe(takeUntil(this.destroy$))\r\n .subscribe((params) => {\r\n if (params.type === \"client\") this.userData = \"Brand User\";\r\n else\r\n this.userData = this.setTab\r\n ? this.setTab\r\n : this.userType == \"client\"\r\n ? \"Brand User\"\r\n : \"Tango User\";\r\n });\r\n this.setTab = this.userData;\r\n this.$headerFilters = data;\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n },\r\n });\r\n }\r\n \r\n ngOnInit(): void {\r\n this.userService?.rolesComms?.subscribe(value => {\r\n this.receivedData = value?.receivedData\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe(()=>{\r\n this.getRoles();\r\n })\r\n this.setPageData();\r\n this.receivedData = \"\";\r\n }\r\n\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n\r\n userValue(e: any) {\r\n this.userData = e.target.innerHTML;\r\n this.setTab = this.userData;\r\n this.userType = this.userData == \"Brand User\" ? \"client\" : \"tango\";\r\n \r\n // this.userType = this.userData == \"Tango User\" ? \"tango\" : \"client\";\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n this.receivedData = \"\";\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n\r\n getRoles() {\r\n \r\n let data \r\n\r\n if(this.userType === 'tango'){\r\n data = { \r\n userType: this.userType\r\n }\r\n }\r\n\r\n if(this.userType === 'client'){\r\n data = { \r\n userType: this.userType,\r\n clientId: this.$headerFilters?.client\r\n }\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n // userDetials(role: any) {\r\n // this.userService.rolesComms.next(role);\r\n // this.receivedData = \"Role Value\";\r\n // }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<!-- Users subhead start -->\r\n<div class=\"card mb-5\">\r\n @if (USER?.userType==='tango') {\r\n <div class=\"card-body pt-2 pb-1\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul \r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li (click)=\"userValue('Brand User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'client' }\">\r\n <a [ngClass]=\"userData ==='Brand User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer me-6\">Brand User</a>\r\n </li>\r\n <li (click)=\"userValue('Tango User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'tango' }\">\r\n <a [ngClass]=\"userData ==='Tango User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer no-border me-6 \">Tango User</a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<!-- Users subhead end -->\r\n<!-- *ngIf=\"userdata =='Tango User'\" -->\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData !=='Role Value' && (userData ==='Tango User' || userData ==='Brand User')\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <!-- (dataTouserlist)=\"receiveData($event)\" -->\r\n <lib-user-table *ngIf=\"userData ==='Tango User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-user-table>\r\n <lib-brand-user *ngIf=\"userData ==='Brand User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-brand-user>\r\n\r\n </div>\r\n <!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles;let i=index\">\r\n <a class=\"role-title my-2 cursor-pointer\" (click)=\"userDetials(obj)\">{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!-- <div *ngFor=\"let obj of values\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"obj.value\">\r\n </div> -->","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TangoManageUsersRoutingModule } from './tango-manage-users-routing.module';\r\nimport { TangoManageUsersComponent } from './components/tango-manage-users/tango-manage-users.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { RolesPermissionTableComponent } from './components/tango-manage-users/roles-permission-table/roles-permission-table.component';\r\nimport { AddUserPopupComponent } from './components/tango-manage-users/add-user-popup/add-user-popup.component';\r\nimport { NgbAccordionModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { AssignStorePopupComponent } from './components/tango-manage-users/assign-store-popup/assign-store-popup.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { AlertPopupComponent } from './components/tango-manage-users/user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from './components-v2/add-users/add-users.component';\r\nimport { UsersListComponent } from './components-v2/users-list/users-list.component';\r\nimport { TeamsListComponent } from './components-v2/teams-list/teams-list.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { CustomSelectComponent } from './components-v2/custom-select/custom-select.component';\r\nimport { ViewteamsListComponent } from './components-v2/viewteams-list/viewteams-list.component';\r\nimport { ActionPopupComponent } from './components-v2/action-popup/action-popup.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\nimport { AuditUserListComponent } from './components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoManageUsersComponent,\r\n UserTableComponent,\r\n RolesPermissionTableComponent,\r\n AddUserPopupComponent,\r\n AssignStorePopupComponent,\r\n BrandUserComponent,\r\n AlertPopupComponent,\r\n AddUsersComponent,\r\n UsersListComponent,\r\n TeamsListComponent,\r\n TeamsCreationComponent,\r\n UsersManageComponent,\r\n CustomSelectComponent,\r\n ViewteamsListComponent,\r\n ActionPopupComponent,\r\n AuditUserEarningsComponent,\r\n AuditUserListComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoManageUsersRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxPaginationModule,\r\n NgbAccordionModule,\r\n CommonSharedModule,\r\n NgbTooltipModule\r\n ],\r\n})\r\nexport class TangoManageUsersModule { }\r\n","/*\r\n * Public API Surface of tango-manage-users\r\n */\r\n\r\nexport * from './lib/tango-manage-users.module';\r\n\r\nexport * from './lib/components/tango-manage-users/tango-manage-users.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ManageUsersService","i2","i4.UserService","i5","i6","i7","i8.CustomSelectComponent","i1","i3.UserService","i1.UserService","i3","i4","i3.ExcelService","i5.UserService","i8","i4.ManageUsersService","i2.UserService","i8.RolesPermissionTableComponent","i6.BrandUserComponent","i2.ExcelService","i9.ViewteamsListComponent","i3.UsersListComponent","i4.TeamsListComponent","i5.ExcelService","i9.AuditUserListComponent","i5.UserTableComponent","i6.RolesPermissionTableComponent","i7.BrandUserComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tango-app-ui-manage-users.mjs","sources":["../../../projects/tango-manage-users/src/lib/services-v2/manage-users.service.ts","../../../projects/tango-manage-users/src/lib/services/user.service.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.html","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.html","../../../projects/tango-manage-users/src/lib/services/excel.service.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.html","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users-routing.module.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users.module.ts","../../../projects/tango-manage-users/src/public-api.ts","../../../projects/tango-manage-users/src/tango-app-ui-manage-users.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ManageUsersService {\r\n dropDownTrigger = new BehaviorSubject(null)\r\n private userApiUrl:string = '';\r\n middlewareApiUrl: any;\r\n teamsApiUrl: any;\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.middlewareApiUrl = env.middlewareApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.userApiUrl = env.userApiUrl;\r\n }\r\n })\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n getAllCountries(): Observable<any> {\r\n return this.http.get(`${this.middlewareApiUrl}/get-countries`);\r\n }\r\n\r\n getallusersList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/get-allusers`, params);\r\n }\r\n getTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/list`, params);\r\n }\r\n getTeamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/list`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n \r\n deleteTeam(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/delete`, params);\r\n }\r\n getviewteamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/view`, params);\r\n }\r\n getviewteamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/view`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n createTeams(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/create`, params);\r\n }\r\n editTeamsdata(data: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.teamsApiUrl}/get`, { params: { teamId: data._id }})\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n updateTeam(data: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.teamsApiUrl}/update/${data.teamId}`, data)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getAllTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, params);\r\n }\r\n teamBulkUpload(storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.teamsApiUrl}/teamBulkUpload`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n updateUsers(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-users`, userBody)\r\n .pipe(\r\n map((response: any) => response) \r\n );\r\n }\r\n\r\n private viewTeamsSubject = new BehaviorSubject<boolean>(false);\r\n \r\n // Expose an observable for components to subscribe to\r\n viewTeams$ = this.viewTeamsSubject.asObservable();\r\n\r\n // Method to toggle the view\r\n setViewTeam(value: boolean) {\r\n this.viewTeamsSubject.next(value);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class UserService {\r\n private userApiUrl: string = '';\r\n private roleApiUrl: string = '';\r\n private storeApiUrl: string = '';\r\n private groupApiUrl: string = '';\r\n private auditWalletApiUrl: string = '';\r\n dataSubject = new BehaviorSubject<any>(null);\r\n rolesComms = new BehaviorSubject<any>(null);\r\n private clusterApiUrl: string = '';\r\n private teamsApiUrl: string = ''\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.userApiUrl = env.userApiUrl;\r\n this.roleApiUrl = env.roleApiUrl;\r\n this.storeApiUrl = env.storeApiUrl;\r\n this.groupApiUrl = env.groupApiUrl;\r\n this.clusterApiUrl = env.clusterApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.auditWalletApiUrl = env.auditWalletApiUrl\r\n }\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n\r\n getUserList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/get-list-v2`, params);\r\n }\r\n getUserListExport(data: any) {\r\n return this.http.post(`${this.userApiUrl}/get-list-v2`, data, { responseType: 'arraybuffer' })\r\n }\r\n getUser(userEmail: string): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.userApiUrl}/get-user-details`, {\r\n params: { email: userEmail },\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getRoles(req: any): Observable<any> {\r\n return this.http.post<any>(`${this.roleApiUrl}/get-roles`, req).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createUser(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/create-user`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n\r\n updateUser(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-user`, userBody)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n userBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/create-users`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n\r\n getPersmissions(filter: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.roleApiUrl}/get-permission`, filter)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignStores(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.storeApiUrl}/store-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignGroups(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.groupApiUrl}/group-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n assignData(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assignData`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n assignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignclusters(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/AllclusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignteams(data: any) {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n reAssignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/reassign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getUserAssignDetails(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-stores`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getUserAssignData(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-Data`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createUsers(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/createUser`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n private messageSource = new BehaviorSubject<any>(\"default message\");\r\n currentMessage = this.messageSource.asObservable();\r\n\r\n changeMessage(message: any) {\r\n this.messageSource.next(message);\r\n }\r\n createSingleUsers(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/createUser`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n createBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/createUsers`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n getClusterList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getClusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getProductList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getproductList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data })\r\n }\r\n\r\n ExportgetAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getAuditUserDetails(data: string) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/get-audit-user-details?userEmail=${data}`)\r\n }\r\n\r\n getConsolidatedCard(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/consolidated-card`, { params: data })\r\n }\r\n\r\n getAuditWalletSummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data })\r\n }\r\n\r\n ExportWalletAummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getGenerateReport(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/generate-report`, { params: data })\r\n }\r\n\r\n\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'team-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n\r\n @Output() selected = new EventEmitter<any>()\r\n @Output() deselected = new EventEmitter<any>()\r\n @Output() deselectedAll = new EventEmitter<any>()\r\n\r\n\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n\r\n\r\n constructor(private cd: ChangeDetectorRef, private authService: ManageUsersService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e) => {\r\n if (e !== this.instanceId) {\r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes['items']) {\r\n if (this.items?.length) {\r\n this.initializeItems();\r\n } else {\r\n this.filteredValues = []\r\n }\r\n\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {\r\n this.updateSelectedValues();\r\n }\r\n }\r\n\r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n\r\n updateSelectedValues() {\r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n\r\n onSelect(event: any, item: any) {\r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item);\r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n this.deselected.emit(item);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element: any) => {\r\n if (element[this.idField] !== item[this.idField]) {\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n\r\n }\r\n\r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n\r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.deselectedAll.emit(this.selectedValues);\r\n this.selectedValues = [];\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n\r\n\r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n\r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> \r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 2\">+{{selectedValues?.length -2}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, Subscription, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { UserService } from '../../services/user.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n@Component({\r\n selector: 'lib-add-users',\r\n templateUrl: './add-users.component.html',\r\n styleUrl: './add-users.component.scss'\r\n})\r\nexport class AddUsersComponent implements OnDestroy, OnInit {\r\n private readonly destroy = new Subject();\r\n @Input() type: any;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Input() data: any;\r\n userForm: FormGroup;\r\n operationType: string = 'add';\r\n teamList: any = []\r\n countryList: any;\r\n selectedUser: any = [];\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n user_data: any;\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n\r\n ];\r\n\r\n handleViewChange(modules: FormGroup | any): void {\r\n if (!modules.get(\"isAdd\")?.value) {\r\n modules.get(\"isDelete\")?.setValue(false);\r\n modules.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(modules: FormGroup | any): void {\r\n // if (!modules.get(\"isAdd\")?.value) {\r\n // modules.get(\"isDelete\")?.setValue(false);\r\n // modules.get(\"isEdit\")?.setValue(false);\r\n // }\r\n if (!modules.get(\"isEdit\")?.value) {\r\n // modules.get('isDownload')?.setValue(false);\r\n modules.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n\r\n constructor(private service: ManageUsersService,\r\n private cd: ChangeDetectorRef,\r\n public activeModal: NgbActiveModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService,\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n\r\n this.destroy.next(false);\r\n this.destroy.complete();\r\n\r\n }\r\n ngOnInit(): void {\r\n console.log(this.type)\r\n let data: any;\r\n if (\"header-filters\" in localStorage) {\r\n data = JSON.parse(localStorage.getItem('header-filters') || '');\r\n }\r\n this.user_data = JSON?.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n this.getCountryCodes();\r\n this.getRoles();\r\n this.getAllTeamsList()\r\n if (this.type === \"view\" || (this.type === \"edit\")) {\r\n // this.addSingleUser();\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n // this.getAllTeamsList()\r\n // this.showsingleuser = false;\r\n }\r\n\r\n }\r\n\r\n getRoles() {\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode;\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.user_data.userType);\r\n }\r\n getCountryCodes() {\r\n this.service.getAllCountries().subscribe({\r\n next: (res) => {\r\n this.countryList = res.data\r\n this.cd.detectChanges()\r\n },\r\n error: (err) => {\r\n\r\n }\r\n })\r\n }\r\n onrolechange(event: any) {\r\n console.log(event.target.value)\r\n if (event.target.value === 'user') {\r\n this.populatePermission(this.permissionArray);\r\n }\r\n\r\n }\r\n onStoreSelect(event: any) {\r\n this.selectedUser = event\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamLeadArray.clear(); // Clears existing values\r\n\r\n this.selectedUser.forEach((user: any) => {\r\n teamLeadArray.push(new FormControl(user)); // Adds each user in selectedUser array\r\n });\r\n ;\r\n // this.setTeamLeads(event);\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n const triggerButton = document.querySelector('#triggerButtonId') as HTMLElement;\r\n triggerButton?.focus();\r\n }\r\n // onSubmit() {\r\n // this.activeModal.close('submit');\r\n // }\r\n loadUserForm() {\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n this.userForm = this.fb.group({\r\n userName: [res.data.result.userName, Validators.required],\r\n email: [res.data.result.email, Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [res.data.result.mobileNumber, [Validators.required, Validators.minLength(10), Validators.maxLength(13)]],\r\n role: [res.data.result.role, Validators.required],\r\n userType: [res.data.result.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [res.data.result.countryCode, Validators.required],\r\n });\r\n this.updateTangouserField(res.data.result.tangoUserType);\r\n if (this.type == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.selectedUser = res.data.teamsList\r\n if (this.selectedUser.length) {\r\n this.setTeamLeads(this.selectedUser);\r\n }\r\n // Promise.resolve().then(() => {\r\n // this.userForm.get('teamLead')?.setValue();\r\n this.populatePermission(res?.data?.result?.rolespermission);\r\n // });\r\n\r\n if (this.operationType == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.cd.detectChanges();\r\n // this.getUserPermissionData(res.data.result.role,res.data.result.userType);\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n updateTangouserField(tangoUserType:any) {\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control(tangoUserType || 'dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(10), Validators.maxLength(15)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [\"\", Validators.required],\r\n });\r\n\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control('dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n this.getUserPermissionData(\"user\", this.user_data.userType);\r\n }\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"rolespermission\") as FormArray;\r\n permissions.clear(); // Clear existing entries\r\n\r\n permissionsData.forEach((rolespermission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [rolespermission?.featureName],\r\n modules: this.fb.array([]), // Initialize modules as a FormArray\r\n });\r\n\r\n const modulesArray = featureGroup.get(\"modules\") as FormArray;\r\n rolespermission.modules.forEach((module: any) => {\r\n const moduleGroup = this.fb.group({\r\n name: [module.name],\r\n isAdd: [{ value: module.isAdd, disabled: this.type === 'view' }], // Set disabled based on type\r\n isEdit: [{ value: module.isEdit, disabled: this.type === 'view' }], // Set disabled based on type\r\n // isDelete: [module.isDelete],\r\n });\r\n modulesArray.push(moduleGroup); // Add each module to modules array\r\n });\r\n\r\n permissions.push(featureGroup); // Add each feature group to permissions\r\n });\r\n\r\n // Trigger validation after populating\r\n permissions.updateValueAndValidity();\r\n }\r\n\r\n getPermissions(): FormArray {\r\n // console.log(this.userForm.value)\r\n return this.userForm.get(\"rolespermission\") as FormArray;\r\n\r\n }\r\n getFeaturePermissions(rolespermission: FormGroup | any): FormArray {\r\n return rolespermission.get(\"modules\") as FormArray;\r\n }\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm?.get(\"rolespermission\") as FormArray).clear();\r\n this.populatePermission(this.permissionArray);\r\n }\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n\r\n addUserSubmit() {\r\n let value = this.updatePermissionsBasedOnUserType(this.userForm.value)\r\n const updatedData = this.removeNullValues(value);\r\n this.userService.createSingleUsers({ ...updatedData, ...{ clientId: this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId } }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true)\r\n\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close('submit');\r\n }\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n onSubmit() {\r\n if (this.type == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n this.userForm.get(\"email\")?.disable();\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n updatePermissionsBasedOnUserType(user: any) {\r\n user.rolespermission.forEach((feature: any) => {\r\n feature.modules.forEach((modules: any) => {\r\n // if (user.userType === \"superAdmin\") {\r\n // modules.isAdd = true;\r\n // modules.isEdit = true;\r\n // // modules.isDelete = true;\r\n // } else \r\n if (user.userType === \"users\") {\r\n modules.isAdd = false;\r\n modules.isEdit = false;\r\n // modules.isDelete = false;\r\n }\r\n });\r\n });\r\n return user;\r\n }\r\n removeNullValues = (data: any) => {\r\n if (!Array.isArray(data.rolespermission)) {\r\n throw new Error(\"Permission is not an array\");\r\n }\r\n\r\n // Map through the permissions and products to remove null values\r\n return {\r\n ...data,\r\n rolespermission: data.rolespermission.map((feature: any) => {\r\n return {\r\n ...feature,\r\n modules: feature.modules.map((modules: any) => {\r\n const newProduct: { [key: string]: any } = {};\r\n for (const [key, value] of Object.entries(modules)) {\r\n if (value !== null) {\r\n newProduct[key] = value;\r\n }\r\n }\r\n return newProduct;\r\n })\r\n };\r\n })\r\n };\r\n };\r\n getAllTeamsList() {\r\n this.service.getAllTeamsList({ clientId: this.$headerFilters.client }).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamList = res.data.result\r\n }\r\n })\r\n }\r\n editUser() {\r\n if (this.user?.isActive) {\r\n this.type = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n } else if (this.user?.status === 'active') {\r\n this.type = \"view\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n isButtonDisabled(): boolean {\r\n const { teamLead, ...controlsToCheck } = this.userForm.controls;\r\n return Object.values(controlsToCheck).some(control => control.invalid);\r\n }\r\n setTeamLeads(teamList: any[]) {\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamList.forEach(team => {\r\n // Push each team object as a new FormGroup into the teamLead FormArray\r\n if (team.clientId) {\r\n teamLeadArray.push(this.fb.group({\r\n _id: new FormControl(team._id),\r\n clientId: new FormControl(team.clientId),\r\n teamName: new FormControl(team.teamName),\r\n usersCount: new FormControl(team.usersCount)\r\n }));\r\n }\r\n\r\n });\r\n }\r\n}","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5 d-flex\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div>\r\n\r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"type!=='view' && type!=='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <!-- <div *ngIf=\"type==='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit User Details</a>\r\n <div class=\"sub-title\">Please Edit your user details</div>\r\n </div> -->\r\n <div *ngIf=\"type==='view' && type !=='edit'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <ng-container *ngIf=\"operationType!=='view'\">\r\n <div\r\n *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit && type ==='view' && type !=='edit' && user?.role !== 'superadmin'\"\r\n class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"type==='edit' && type !=='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">Edit your user details</div>\r\n </div>\r\n <div class=\"w-100 h-0px scroll\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <!-- User Name Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name <span\r\n class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\" autocomplete=\"off\">\r\n <div *ngIf=\"userForm.get('userName')?.invalid && (userForm.get('userName')?.dirty)\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('userName')?.errors?.['required']\">User Name is required.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Email Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\" autocomplete=\"off\">\r\n <div *ngIf=\"userForm.get('email')?.invalid && userForm.get('email')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('email')?.errors?.['required']\">Email is required.</small>\r\n <small *ngIf=\"userForm.get('email')?.errors?.['pattern']\">Invalid email format.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Contact Number Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number <span\r\n class=\"alert-required text-danger\">*</span></label>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-4 col-xl-4\">\r\n <select class=\"form-select ps-3 pe-8\" id=\"inputGroupSelect01\" formControlName=\"countryCode\">\r\n <option *ngFor=\"let country of countryList\" [value]=\"country.phonecode\">\r\n {{country.name}} ({{country.phonecode}})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-8 col-xl-8\">\r\n <input type=\"text\" class=\"form-control\" (keypress)=\"omit_special_char($event)\" id=\"mobileNumber\"\r\n autocomplete=\"off\" formControlName=\"mobileNumber\">\r\n <div *ngIf=\"userForm.get('mobileNumber')?.invalid && userForm.get('mobileNumber')?.touched\"\r\n class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['required']\">Contact Number is\r\n required.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['minlength']\">Contact Number must be at least\r\n 10 digits.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['maxlength']\">Contact Number cannot exceed 13\r\n digits.</small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Role Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role <span class=\"alert-required text-danger\">*</span></label>\r\n <select class=\"form-select\" formControlName=\"role\" (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n <div *ngIf=\"userForm.get('role')?.invalid && userForm.get('role')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('role')?.errors?.['required']\">Role is required.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- User Type Field -->\r\n <div *ngIf=\"this.userType ==='tango'\" class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"tangoUserType\" class=\"form-label\">User Type <span\r\n class=\"alert-required text-danger\">*</span></label>\r\n <select class=\"form-select\" formControlName=\"tangoUserType\"\r\n (change)=\"onRoleChange(userForm.get('tangoUserType')?.value)\">\r\n <option value=\"dashboard\">Dashboard</option>\r\n <option value=\"audit\">Audit</option>\r\n </select>\r\n <div *ngIf=\"userForm.get('tangoUserType')?.invalid && userForm.get('tangoUserType')?.touched\"\r\n class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('tangoUserType')?.errors?.['required']\">User Type is required.</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Add to Team Field -->\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\" *ngIf=\"this.userType !=='tango'\">\r\n <label for=\"teamLead\" class=\"form-label teams-title\">Add to a team</label>\r\n <team-select [items]=\"teamList\" [multi]=\"true\" [searchField]=\"'teamName'\" [idField]=\"'_id'\"\r\n (selected)=\"onStoreSelect($event)\" [selectedValues]=\"selectedUser\"></team-select>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"userForm.get('role')?.value === 'admin'\">\r\n\r\n <h3 class=\"teams-title\" *ngIf=\"getPermissions().length\">Access for Admin</h3>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"rolespermission\">\r\n <ng-container *ngFor=\"let rolespermission of getPermissions().controls; let i = index\"\r\n [formGroupName]=\"i\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"title-header mt-4 ms-2\">\r\n {{ camelCaseToText(rolespermission.get('featureName')?.value) }}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"rolespermission.get('modules')\" formArrayName=\"modules\">\r\n <ng-container\r\n *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\"\r\n [formGroupName]=\"j\">\r\n <table class=\"w-100\">\r\n <tbody>\r\n <tr *ngIf=\"rolespermission.get('featureName')?.value !== 'TangoAdmin'\">\r\n <td class=\"w-50\">{{ camelCaseToText(modules.get('name')?.value) }}</td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input type=\"checkbox\" formControlName=\"isAdd\" class=\"cursor-pointer\"\r\n (change)=\"handleViewChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Add</label>\r\n </div>\r\n </td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input formControlName=\"isEdit\" type=\"checkbox\" class=\"cursor-pointer\"\r\n (change)=\"handleEditChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Edit</label>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <div *ngIf=\"rolespermission.get('featureName')?.value === 'TangoAdmin'\"\r\n class=\"row w-100 text-nowrap\">\r\n <div class=\"col-md-4\"\r\n *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\"\r\n [formGroupName]=\"j\">\r\n <div class=\"d-inline-flex mt-3\">\r\n <input type=\"checkbox\" class=\"cursor-pointer\" formControlName=\"isEdit\">\r\n <label class=\"global-label mb-5 mx-2 mt-1\" style=\"text-wrap:nowrap\">\r\n {{ camelCaseToText(modules.get('name')?.value) }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"type!=='view'\" class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" (click)=\"onSubmit()\"\r\n [disabled]=\"userForm.invalid || type === 'view'\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal, NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport Swal from \"sweetalert2\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-user-popup\",\r\n templateUrl: \"./add-user-popup.component.html\",\r\n styleUrl: \"./add-user-popup.component.scss\",\r\n})\r\nexport class AddUserPopupComponent implements OnInit, OnDestroy {\r\n @Input() type: string;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Output() dataTosingleuser: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n\r\n ];\r\n userForm: FormGroup;\r\n operationType: string;\r\n expandedItems: string[] = [];\r\n showsingleuser: boolean = false;\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n userData: string;\r\n isExpanded: boolean[] = [];\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n user_data: any;\r\n handleAddChange(product: FormGroup | any): void {\r\n if (!product.get(\"isAdd\")?.value) {\r\n product.get(\"isDelete\")?.setValue(false);\r\n product.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(product: FormGroup | any): void {\r\n if (!product.get(\"isEdit\")?.value) {\r\n // product.get('isDownload')?.setValue(false);\r\n product.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n constructor(\r\n public activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef, public modalService: NgbModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n let data: any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.user_data = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n this.operationType = this.type;\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.userData = data;\r\n // this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n }\r\n },\r\n });\r\n if (this.type === \"view\" || (this.type === \"edit\" && this.user.email)) {\r\n this.addSingleUser();\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n this.showsingleuser = false;\r\n }\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType],\r\n tangoUserType: [\"dashboard\", Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n this.getUserPermissionData(\"user\", this.userType);\r\n }\r\n\r\n loadUserForm() {\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n this.userForm = this.fb.group({\r\n userName: [res.data.result.userName, Validators.required],\r\n email: [res.data.result.email, Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n ])],\r\n mobileNumber: [res.data.result.mobileNumber, [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [res.data.result.role, Validators.required],\r\n userType: [res.data.result.userType, Validators.required],\r\n tangoUserType: [res.data.result.tangoUserType, Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n this.populatePermission(res.data.result.permission);\r\n if (this.operationType == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.cd.detectChanges();\r\n // this.getUserPermissionData(res.data.result.role,res.data.result.userType);\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n // toggleCollapse(id: string): void {\r\n // if (this.isExpanded(id)) {\r\n // this.expandedItems = this.expandedItems.filter((item) => item !== id);\r\n // } else {\r\n // this.expandedItems.push(id);\r\n // }\r\n // }\r\n\r\n toggleCollapse(index: number): void {\r\n this.isExpanded[index] = !this.isExpanded[index];\r\n }\r\n\r\n // isExpanded(id: string): boolean {\r\n // return this.expandedItems.includes(id);\r\n // }\r\n\r\n // getArrowIcon(id: string): string {\r\n // return this.isExpanded(id) ? \"fa-chevron-up\" : \"fa-chevron-down\";\r\n // }\r\n\r\n addSingleUser() {\r\n // this.activeModal.close(\"\");\r\n let obj = {\r\n type: 'add'\r\n }\r\n\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg', backdrop: 'static' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.componentInstance.userType = this.userType\r\n modalRef.result.then((result) => {\r\n this.activeModal.close('submit');\r\n })\r\n const data = \"single user\";\r\n this.dataTosingleuser.emit(data);\r\n // this.showsingleuser = true;\r\n }\r\n\r\n addUserSubmit() {\r\n this.userService.createUser({ ...this.userForm.value, ...{ clientId: this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId } }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true)\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err: any) => {\r\n console.log(err)\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n }\r\n\r\n editUser() {\r\n if (this.user.isActive) {\r\n this.operationType = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"permission\") as FormArray;\r\n permissions.clear();\r\n permissionsData.forEach((permission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [permission?.featureName],\r\n product: this.fb.array([]),\r\n });\r\n\r\n const products = featureGroup.get(\"product\") as FormArray;\r\n permission.product.forEach((product: any) => {\r\n const productGroup = this.fb.group({\r\n name: [product.name],\r\n isView: [product.isView],\r\n isEdit: [product.isEdit],\r\n // isDownload: [product.isDownload],\r\n // isDelete: [product.isDelete],\r\n });\r\n products.push(productGroup);\r\n });\r\n\r\n permissions.push(featureGroup);\r\n });\r\n for (let i = 0; i < this.getPermissions().length; i++) {\r\n this.isExpanded.push(true);\r\n }\r\n }\r\n\r\n getProducts(featureName: string): FormArray {\r\n return this.userForm\r\n .get(\"permission\")\r\n ?.value.find((permission: any) => permission.featureName === featureName)\r\n .product;\r\n }\r\n\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n this.cd.detectChanges();\r\n this.userService\r\n .getPersmissions({\r\n roleName: roleName,\r\n userType: userType,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n if (res.code == 200) {\r\n this.populatePermission(res.data.result[0]?.permission);\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n },\r\n error: (error: any) => {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n },\r\n complete: () => { },\r\n });\r\n this.cd.detectChanges();\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode; // k = event.keyCode; (Both can be used)\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n getPermissions(): FormArray {\r\n return this.userForm.get(\"permission\") as FormArray;\r\n }\r\n\r\n getFeaturePermissions(permission: FormGroup | any): FormArray {\r\n return permission.get(\"product\") as FormArray;\r\n }\r\n\r\n onUpload(e: any) {\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n this.ts.getErrorToast('Please Upload the Valid File');\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n // errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n Swal.fire({\r\n icon: \"error\",\r\n html: errors,\r\n customClass: {\r\n htmlContainer: \"error-htmlcontainer-class\",\r\n },\r\n heightAuto: false,\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonColor: \"#009EF7\",\r\n confirmButtonText: \"OK\",\r\n }).then((result) => { });\r\n return;\r\n }\r\n\r\n console.log('data', data)\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n tangoUserType: data[i].UserType,\r\n role: 'user',\r\n rolespermission: this.permissionArray\r\n });\r\n }\r\n\r\n if (processedArray.length == 0) {\r\n return this.ts.getErrorToast(\"No user entered in CSV\")\r\n }\r\n\r\n\r\n this.userService\r\n .createBulkUpload(\r\n {\r\n users: processedArray,\r\n userType: this.userType,\r\n ...(this.userType == 'client') ? { clientId: this.$headerFilters.client } : {}\r\n }\r\n )\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.code == 200) {\r\n this.activeModal.close('submit');\r\n this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log(error)\r\n if (error) {\r\n this.ts.getErrorToast(error.error.error ? error.error.error : 'Unable to create multiple Users!');\r\n // } else {\r\n // this.ts.getErrorToast('Unable to create multiple Users!');\r\n }\r\n },\r\n });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n }\r\n\r\n validateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n ): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.userType);\r\n }\r\n\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n this.userForm.get(\"email\")?.disable();\r\n this.userService.updateUser(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.operationType == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n}\r\n","<div class=\"card py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div> -->\r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"operationType==='add'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <!-- <div *ngIf=\"operationType==='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit User Details</a>\r\n <div class=\"sub-title\">Please Edit your user details</div>\r\n </div> -->\r\n <div *ngIf=\"operationType==='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <!-- @if ((gs.userAccess | async)?.Global_User_isEdit) { -->\r\n <div *ngIf=\"operationType==='view' && (gs.userAccess | async)?.Global_User_isEdit\"\r\n class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n <!-- } -->\r\n </div>\r\n <div class=\"fw-bold text-gray-500 my-6\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <li>Use the template to upload multiple users at once.</li>\r\n <li>Download the template here -\r\n <a [attr.href]=\"userType ==='tango' ? '../../../assets/files/TangoUsersTemplate.xlsx' : '../../../assets/files/UsersTemplate.xlsx'\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li>Add your data to the Template File</li>\r\n <li>Upload it below for processing</li>\r\n\r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5 w-100\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span id=\"triggerButtonId\" class=\"mx-2 single-user fw-bold\">Add Single\r\n User</span></span></label>\r\n </div>\r\n\r\n <div class=\"w-100 h-500px scroll\" *ngIf=\"showsingleuser\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name</label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\"\r\n autocomplete=\"off\" required>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number</label>\r\n <input type=\"text\" class=\"form-control\" id=\"contact\" formControlName=\"mobileNumber\"\r\n autocomplete=\"off\" required minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role</label>\r\n <select class=\"form-select\" formControlName=\"role\"\r\n (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"superadmin\">Super Admin</option>\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"userType === 'tango'\" class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"tangoUserType\" class=\"form-label\">User Type</label>\r\n <select class=\"form-select\" formControlName=\"tangoUserType\"\r\n (change)=\"onRoleChange(userForm.get('tangoUserType')?.value)\">\r\n <option value=\"dashboard\">Dashboard</option>\r\n <option value=\"audit\">Audit</option>\r\n </select>\r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\">Access for\r\n {{userForm.get('role')?.value | titlecase}}</a>\r\n <div class=\"sub-title font-sub\">{{userForm.get('role')?.value | titlecase}} can access respective\r\n enabled features and products</div>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"permission\">\r\n <ng-container *ngFor=\"let permission of getPermissions().controls; let i = index\"\r\n [formGroupName]=\"i\">\r\n <div class=\"my-6\">\r\n <div class=\"row me-3\">\r\n <div class=\"col-6\">\r\n <div class=\"title fw-semibold\">\r\n {{ permission.get('featureName')?.value | titlecase }}\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-6 d-flex justify-content-end\" (click)=\"toggleCollapse(i)\">\r\n <div class=\"text-end\">\r\n @if (!isExpanded[i]) {\r\n <svg width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1.5 1.5L6.5 6.5L11.5 1.5\" stroke=\"#667085\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n } @else {\r\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M11 6.5L6 1.5L1 6.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'collapsed': !isExpanded[i] }\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <table class=\"w-100\">\r\n <thead>\r\n <tr>\r\n <th>Modules</th>\r\n <th>View</th>\r\n <th>Edit</th>\r\n <th>Download</th>\r\n <th>Delete</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"permission.get('product')\"\r\n formArrayName=\"product\">\r\n <ng-container\r\n *ngFor=\"let product of getFeaturePermissions(permission)?.controls;let j=index;\"\r\n [formGroupName]=\"j\">\r\n <tr>\r\n <td>{{ camelCaseToText(product.get('name')?.value) }}\r\n </td>\r\n <td><input formControlName=\"isView\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleAddChange(product)\"></td>\r\n <td><input formControlName=\"isEdit\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleEditChange(product)\"></td>\r\n <td><input formControlName=\"isDownload\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n <td><input formControlName=\"isDelete\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"operationType!=='view'\" class=\"d-flex my-14\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" [disabled]=\"userForm.invalid\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n selector: \"lib-assign-store-popup\",\r\n templateUrl: \"./assign-store-popup.component.html\",\r\n styleUrl: \"./assign-store-popup.component.scss\",\r\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\r\n host: {\r\n '(document:click)': 'onClick($event)',\r\n },\r\n})\r\nexport class AssignStorePopupComponent implements OnInit {\r\n @Input() user: any;\r\n select: string = \"stores\";\r\n stores: any[] = [];\r\n clusters: any[] = [];\r\n teams:any[]=[];\r\n $headerFilters: any;\r\n userData: any;\r\n userType: string;\r\n selectedTextstores:any\r\n selectedTextclusters:any\r\n selectedTextteams:any\r\n\r\n constructor(\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private ts: ToastService,\r\n public activeModal: NgbActiveModal,\r\n ) {\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n this.userData = data;\r\n this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n },\r\n });\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n if (data) {\r\n this.$headerFilters = data;\r\n } else if(!data){\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = user;\r\n this.$headerFilters.client = user.clientId;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getAssignStoreList();\r\n this.getclusterList();\r\n this.getteamsList() \r\n }\r\n\r\n loadUserAssignDetails() {\r\n this.userService\r\n .getUserAssignData({\r\n email: this.user.email, \r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.loadSelectedStores(res.data.stores);\r\n this.loadSelectedclusters(res.data.clusters);\r\n this.loadSelectedteams(res.data.teams);\r\n\r\n this.cd.detectChanges();\r\n } \r\n },\r\n error: () => { \r\n this.cd.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n getAssignStoreList() {\r\n this.userService\r\n .getAssignStores({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[0].Stores = res.data.result;\r\n this.loadUserAssignDetails();\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[0].Stores = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n getclusterList() {\r\n this.userService\r\n .getAssignclusters({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[1].clusters = res.data.result;\r\n \r\n }\r\n },\r\n error: () => {\r\n this.dataObject[1].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n getteamsList() {\r\n this.userService\r\n .getAssignteams({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[2].teams = res.data.result;\r\n \r\n // if (this.user.assignedValue) {\r\n // this.loadSelectedteams(this.user.assignedValue);\r\n // }\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[2].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n storesType(e: any) {\r\n this.Opendropdown = false;\r\n // this.resetclusters();\r\n // this.resetStore();\r\n if (this.select == \"stores\") {\r\n if(this.selectedValuesArray[0].length==0){\r\n this.selectedTextstores = \"Select Stores\";\r\n }else{\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n } else if(this.select =='clusters') {\r\n if(this.selectedValuesArray[1].length==0){\r\n this.selectedTextclusters = \"Select Clusters\";\r\n }else{\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n } \r\n }else if(this.select =='teams') {\r\n if(this.selectedValuesArray[2].length==0){\r\n this.selectedTextteams = \"Select Teams\";\r\n }else{\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n } \r\n }\r\n }\r\n\r\n resetStore() {\r\n this.dataObject[0].Stores = [];\r\n this.stores = [];\r\n this.selectedValuesArray[0] = [];\r\n }\r\n\r\n resetclusters() {\r\n this.dataObject[1].clusters = [];\r\n this.clusters = [];\r\n this.selectedValuesArray[1] = [];\r\n }\r\n resetTeams() {\r\n this.dataObject[2].clusters = [];\r\n this.clusters = [];\r\n this.selectedValuesArray[2] = [];\r\n }\r\n Opendropdown: boolean = false;\r\n dataObject: any[] = [\r\n { Description: \"Stores\", Stores: [] },\r\n { Description: \"Clusters\", clusters: [] },\r\n { Description: \"Teams\", teams: [] },\r\n\r\n ];\r\n selectedValuesArray: any[] = [[], [],[]];\r\n selectedText: string;\r\n\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest(\".dropdown1\")) {\r\n this.Opendropdown = false;\r\n }\r\n if (!target.closest(\".dropdown-content\")) {\r\n this.dataObject.forEach((item: any, i: any) => {\r\n item.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n Dropdown(value: any, index: number, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false;\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n\r\n toggleCheckboxStores(\r\n event: any,\r\n store: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n const stores = this.dataObject[0].Stores;\r\n this.selectedValuesArray[0] = this.selectedValuesArray[0] || [];\r\n\r\n if (store === \"Select All\") {\r\n const checked = event.target.checked;\r\n stores.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[0] = checked ? [...stores] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[0].findIndex(\r\n (item: any) => item.storeName === store.storeName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[0].push(store)\r\n : this.selectedValuesArray[0].splice(storeIndex, 1);\r\n this.dataObject[index].Stores[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = stores.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${store.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[0]);\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n toggleCheckboxTeams(\r\n event: any,\r\n team: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n \r\n const teams = this.dataObject[2].teams;\r\n this.selectedValuesArray[2] = this.selectedValuesArray[2] || [];\r\n\r\n if (team === \"Select All\") {\r\n const checked = event.target.checked;\r\n teams.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[2] = checked ? [...teams] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[2].findIndex(\r\n (item: any) => item.userName === team.userName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[2].push(team)\r\n : this.selectedValuesArray[2].splice(storeIndex, 1);\r\n this.dataObject[index].teams[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = teams.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${teams.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[2]);\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n }\r\n\r\n loadTable(values: any[]) {\r\n if (this.select == \"stores\") {\r\n this.stores = values;\r\n } else if(this.select == \"clusters\") {\r\n this.clusters = values;\r\n }else if(this.select == \"teams\") {\r\n this.teams = values;\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n toggleCheckboxclusters( event: any, cluster: any, index: number, subIndex: number ) {\r\n const clusters = this.dataObject[index].clusters;\r\n this.selectedValuesArray[1] = this.selectedValuesArray[1] || [];\r\n\r\n if (cluster === \"Select All\") {\r\n const checked = event.target.checked;\r\n clusters.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[1] = checked ? [...clusters] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const clusterIndex = this.selectedValuesArray[1].findIndex(\r\n (item: any) => item.clusterName === cluster.clusterName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[1].push(cluster)\r\n : this.selectedValuesArray[1].splice(clusterIndex, 1);\r\n this.dataObject[1].clusters[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = clusters.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${cluster.clusterName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[1]);\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n }\r\n\r\n onSubmit() {\r\n if (this.user.assignedValue && this.user.assignedValue.length) {\r\n this.reAssignSubmit();\r\n } else {\r\n this.assignSubmit();\r\n }\r\n }\r\n\r\n assignSubmit() {\r\n let payload = {\r\n userId:this.user._id,\r\n clientId: this.$headerFilters.client,\r\n userEmail: this.user.email,\r\n userType: this.userType,\r\n stores:this.selectedValuesArray[0],\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2]\r\n } \r\n this.userService\r\n .assignData(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`${this.select == 'stores' ? 'Stores' : 'Clusters'} Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to assign ${this.select == 'stores' ? 'stores' : 'Clusters'} to user!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n reAssignSubmit() {\r\n let payload= {\r\n userId:this.user._id,\r\n clientId: this.$headerFilters.client,\r\n userEmail: this.user.email,\r\n userType: this.userType,\r\n stores:this.selectedValuesArray[0],\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2]\r\n }\r\n this.userService\r\n .reAssignStores(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`${this.select == 'stores' ? 'Stores' : 'Clusters'} Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to assign ${this.select == 'stores' ? 'stores' : 'Clusters'} to user!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadSelectedStores(stores: any[]) {\r\n this.selectedValuesArray[0] = [];\r\n this.dataObject[0].Stores.forEach((store: any) => {\r\n const exists = stores.some( ( obj:any ) => obj.storeId === store.storeId );\r\n if (exists) { \r\n store.checked = true;\r\n this.selectedValuesArray[0].push(store);\r\n }\r\n });\r\n this.stores = this.selectedValuesArray[0];\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n loadSelectedteams(teams: any[]){\r\n this.selectedValuesArray[2] = [];\r\n this.dataObject[2].teams.forEach((team: any) => {\r\n const exists = teams.some( ( obj:any ) => obj._id === team._id );\r\n if (exists) {\r\n team.checked = true;\r\n this.selectedValuesArray[2].push(team);\r\n this.teams.push(team._id)\r\n }\r\n });\r\n this.selectedTextteams = `${this.selectedValuesArray[1].length} Teams Selected`;\r\n }\r\n loadSelectedclusters(clusters: any[]) {\r\n this.selectedValuesArray[1] = [];\r\n this.dataObject[1].clusters.forEach((cluster: any) => {\r\n const exists = clusters.some( ( obj:any ) => obj._id === cluster._id );\r\n if (exists) {\r\n cluster.checked = true;\r\n this.selectedValuesArray[1].push(cluster);\r\n this.clusters.push(cluster._id)\r\n }\r\n });\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n }\r\n\r\n closeModal() {\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card assign-store py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/assign-adduser.svg\">\r\n </div> -->\r\n </div>\r\n <a class=\"title\">Assign User</a>\r\n <span class=\"sub-title my-2\">Please assign the user</span>\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"select='stores'; storesType($event)\">\r\n <a [ngClass]=\"select === 'stores' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Stores</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='clusters'; storesType($event)\"><a\r\n [ngClass]=\"select === 'clusters' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Cluster</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='teams'; storesType($event)\"><a\r\n [ngClass]=\"select === 'teams' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams</a>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"select ==='stores'\" class=\"w-100 my-5\">\r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of [dataObject[0]]; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Stores</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control disable\" id=\"storeName\" [ngModel]=\"selectedTextstores\"\r\n placeholder=\"Select Stores\" (click)=\"Dropdown('Stores',0,$event)\" readonly>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[i]?.length === item.Stores.length\"\r\n (click)=\"toggleCheckboxStores($event,'Select All', 0,0)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div *ngFor=\"let store of item.Stores;let j=index;\"\r\n class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"store.storeName\"\r\n id=\"option{{store.storeName}}\" [checked]=\"store.checked\"\r\n (click)=\"toggleCheckboxStores($event,store,0,j)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{store.storeName}}\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='clusters'\" class=\"w-100 my-5\"> \r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of [dataObject[1]]; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Cluster</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control disable\" id=\"clusterName\" [ngModel]=\"selectedTextclusters\"\r\n placeholder=\"Select Clusters\" (click)=\"Dropdown('clusters',1,$event)\" readonly>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[1]?.length === item.clusters.length\"\r\n (click)=\"toggleCheckboxclusters($event,'Select All', 1,0)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div *ngFor=\"let cluster of item.clusters;let j=index;\"\r\n class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"cluster.clusterName\"\r\n id=\"option{{cluster.clusterName}}\" [checked]=\"cluster.checked\"\r\n (click)=\"toggleCheckboxclusters($event,cluster,1,j)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{cluster.clusterName}}\">\r\n {{ cluster.clusterName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='teams'\" class=\"w-100 my-5\"> \r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of [dataObject[2]]; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Teams</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control disable\" id=\"teamName\" [ngModel]=\"selectedTextteams\"\r\n placeholder=\"Select Teams\" (click)=\"Dropdown('teams',2,$event)\" readonly>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute\">\r\n <div class=\"form-check d-flex align-items-center pt-3 px-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\"\r\n [checked]=\"selectedValuesArray[2]?.length === item.teams.length\"\r\n (click)=\"toggleCheckboxTeams($event,'Select All', 2,0)\">\r\n <label class=\"form-check-label px-3\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n <div class=\"border border-gray mt-3\"></div>\r\n <div *ngFor=\"let team of item.teams;let j=index;\"\r\n class=\"form-check d-flex align-items-center py-3 px-5\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" [value]=\"team.teamName\"\r\n id=\"option{{team.teamName}}\" [checked]=\"team.checked\"\r\n (click)=\"toggleCheckboxTeams($event,team,2,j)\">\r\n <label class=\"form-check-label px-3 cursor-pointer\" for=\"option{{team.teamName}}\">\r\n {{ team.teamName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <h2 class=\"store-info fw-bold\">\r\n @if(select ==='stores') {\r\n Store \r\n } @else if(select ==='clusters') {\r\n Cluster\r\n }@else if(select ==='teams') {\r\n Teams\r\n }\r\n Information\r\n </h2>\r\n\r\n <section *ngIf=\"select ==='stores'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th>SPOC Name</th>\r\n <th>Store ID</th>\r\n <th>Application ID</th>\r\n <th>Location</th>\r\n </tr>\r\n </thead>\r\n <tbody> \r\n <tr *ngFor=\"let store of stores;let i=index\">\r\n <td>{{store?.spocName}}</td>\r\n <td>{{store?.storeId}}</td>\r\n <td>{{store?.appId}}</td>\r\n <td>{{store?.location}}</td>\r\n </tr> \r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[0].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned to the above stores.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='clusters'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Cluster Name</th>\r\n <th>Stores</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let cluster of this.selectedValuesArray[1];let i=index;\">\r\n <td class=\"ms-5\">{{cluster?.clusterName}}</td>\r\n <td>{{cluster?.storeNames}} <span *ngIf=\"cluster?.storeListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{cluster?.storeListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[1].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n clusters.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='teams'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Team Name</th>\r\n <th>Users</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let team of this.selectedValuesArray[2];let i=index;\">\r\n <td class=\"ms-5\">{{team?.teamName}}</td>\r\n <td>{{team?.userNames}} <span *ngIf=\"team?.userListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{team?.userListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[2].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n teams.</span>\r\n </div>\r\n }\r\n </section>\r\n\r\n <div class=\"d-flex mb-10 w-100\" role=\"cluster\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"closeModal()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n\r\n\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-alert-popup',\r\n templateUrl: './alert-popup.component.html',\r\n styleUrl: './alert-popup.component.scss'\r\n})\r\nexport class AlertPopupComponent {\r\n @Input() status: any;\r\n @Input() userName:any;\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n cancel(){\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit(){\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span *ngIf=\"status\" class=\"sub-title fw-normal mt-2\">Do you want to active the user<b> {{userName}}</b> ?</span>\r\n <span *ngIf=\"!status\" class=\"sub-title fw-normal mt-2\">Do you want to deactive the user<b> {{userName}}</b> ?</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button *ngIf=\"status\" id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit()\">Active</button>\r\n <button *ngIf=\"!status\" id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit()\">Deactive</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelService {\r\n\r\n \r\n constructor() { }\r\n\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n console.log(buffer, fileName);\r\n \r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + 'list'+ EXCEL_EXTENSION);\r\n }\r\n \r\n private saveAsTemplate(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AlertPopupComponent } from \"./alert-popup/alert-popup.component\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\n@Component({\r\n selector: \"lib-user-table\",\r\n templateUrl: \"./user-table.component.html\",\r\n styleUrl: \"./user-table.component.scss\",\r\n})\r\nexport class UserTableComponent implements OnInit, OnDestroy {\r\n\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any[] = [];\r\n rolesCount: number;\r\n receivedData: any = '';\r\n SelectedTab: any;\r\n userListStatus: any;\r\n userRole: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n constructor(\r\n public modalService: NgbModal, private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private userService: UserService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n // this.initSearch();\r\n }\r\n\r\n // initSearch() {\r\n // console.log(678);\r\n\r\n // this.searchInput.valueChanges\r\n // .pipe(debounceTime(1000), distinctUntilChanged())\r\n // .subscribe((e) => {\r\n // if(e) {\r\n\r\n // this.userList_req.searchValue = e;\r\n // }\r\n // this.loadTable();\r\n // });\r\n // }\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Tango Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs: any[] = [];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n ngOnInit() {\r\n\r\n let userInfo: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.userRole = userInfo?.role;\r\n console.log('userRole', this.userRole, userInfo)\r\n // this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n // next:(data:any)=>{\r\n // if(data) {\r\n // this.$headerFilters = data;\r\n // this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe((type: any) => {\r\n // this.userData = type;\r\n this.userType = \"tango\";\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n this.setPageData();\r\n // });\r\n // }\r\n // }\r\n // });\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n Viewusers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n\r\n users(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n }\r\n });\r\n }\r\n\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: '',\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n this.pagination.totalCount = 0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n } else {\r\n this.userList_req = {\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n\r\n }\r\n userStatusChange(user: any, i: number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.status = user.isActive\r\n modalRef.componentInstance.userName = user?.userName\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n if (result === 'submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n if (user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n },\r\n error: () => {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n },\r\n complete: () => { }\r\n })\r\n } else if (result === 'close') {\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n let data = {\r\n userType: 'tango'\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n userDetials(role: any) {\r\n let obj = {\r\n role: role,\r\n userType: 'Tango User',\r\n receivedData: \"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData = 'Role Value';\r\n }\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n onSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n applyFilters(event: any) {\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit = 10;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userList_req.export = false;\r\n this.loadTable()\r\n }\r\n}","<div *ngIf=\"receivedData ===''\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item activated cursor-pointer bg-light-primary px-5 text-center me-5\"><a\r\n class=\"nav-link me-0 text-active-primary\">Users</a>\r\n </li>\r\n <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && userRole === 'superadmin'\"\r\n class=\"nav-item cursor-pointer me-5\"><a routerLink=\"/manage/users/tango/audit\"\r\n class=\"nav-link text-active-primary\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default px-4 py-3 rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16774 13.7347 6.0862 13.7036 6.01005C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37332 9.06609 1.32749 8.98994 1.29639C8.91379 1.26529 8.83225 1.24952 8.75 1.25H2.5C2.16848 1.25 1.85054 1.38169 1.61612 1.61611C1.3817 1.85053 1.25 2.16847 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89946 7.86612 7.13388C8.10054 7.3683 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"users('add')\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assigned')\">Clients Assigned\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'assigned' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'assigned' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"form-check form-switch mx-6\">\r\n <input class=\"form-check-input mt-3 cursor-pointer\" type=\"checkbox\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\"\r\n role=\"switch\" checked=\"\">\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div *ngIf=\"receivedData ===''\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles\">\r\n <a *ngIf=\"obj.roleName ==='superadmin'\" class=\"role-title my-2 cursor-pointer\" >Super Admin</a>\r\n <a *ngIf=\"obj.roleName !=='superadmin'\" class=\"role-title my-2 cursor-pointer\" >{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<!--begin::Row-->\r\n<!-- <div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\"> -->\r\n<!--begin::Col-->\r\n<!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\"> -->\r\n<!-- <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table> -->\r\n<!-- </div> -->\r\n<!--end::Col-->\r\n<!-- </div> -->\r\n<!--end::Row-->","import { Component, ChangeDetectorRef, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, Subscription, takeUntil, debounceTime, distinctUntilChanged, } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { FormControl } from '@angular/forms';\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-teams-creation',\r\n templateUrl: './teams-creation.component.html',\r\n styleUrl: './teams-creation.component.scss'\r\n})\r\nexport class TeamsCreationComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n private readonly destroy = new Subject();\r\n searchInput = new FormControl(\"\");\r\n @Input() teamData: any;\r\n @Input() type: any;\r\n @Input() teamsUsers: any;\r\n teamleadList: any[] = [];\r\n userList: any[] = [];\r\n selectedTeam: any = [];\r\n selectedUsers: any = [];\r\n $headerFilters: any;\r\n teamName: any;\r\n isEdit: boolean = false\r\n description: any;\r\n fileerror:boolean = false\r\n constructor(private ts: ToastService, private router: Router, public activeModal: NgbActiveModal,\r\n private userService: ManageUsersService, public gs: GlobalStateService, private cd: ChangeDetectorRef,\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n\r\n }\r\n ngOnInit(): void {\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n } else {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.getuserList();\r\n\r\n }\r\n getTeamData(data: any) {\r\n this.userService.editTeamsdata(data).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.isEdit = true\r\n if (res.data.length > 0) {\r\n this.teamName = res.data[0].teamName\r\n this.description = res.data[0].description\r\n this.selectedTeam = res.data[0].Teamlead\r\n this.selectedUsers = res.data[0].users\r\n\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.userList)\r\n\r\n }\r\n }\r\n })\r\n }\r\n getuserList() {\r\n\r\n let payload = {\r\n clientId: this.$headerFilters.client\r\n }\r\n this.userService.getallusersList(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamleadList = res.data.filter((e: any) => e.role != 'superadmin');\r\n this.userList = res.data.filter((e: any) => e.role != 'superadmin'); \r\n\r\n if (this.teamData) {\r\n this.getTeamData(this.teamData)\r\n }\r\n \r\n\r\n if (this.teamsUsers && this.teamsUsers.length > 0 && !this.isEdit) {\r\n console.log(this.teamsUsers)\r\n const updatedusers = this.teamsUsers.map((user: any) => {\r\n return {\r\n email: user.email,\r\n userId: user.userId\r\n };\r\n });\r\n this.selectedUsers = updatedusers\r\n this.markCheckedStores();\r\n }\r\n }\r\n })\r\n }\r\n\r\n filteredUsers: any;\r\n markCheckedStores(): void {\r\n const clusterStoreIds = this.teamsUsers?.map((user: any) => user._id);\r\n this.userList = this.userList?.map(user => {\r\n user.checked = clusterStoreIds.includes(user.userId);\r\n return user;\r\n });\r\n this.selectedUsers = this.userList.filter(user => user.checked);\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n \r\n }\r\n TeamUnselectAll(event:any){\r\n this.userList = [...this.userList,...event]\r\n console.log(\"teamlead unselectall\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n\r\n TeamUnselect(event:any){\r\n this.userList.push(event)\r\n console.log(\"teamlead unselect\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselect(event:any){\r\n console.log(\"user unselect\", event)\r\n this.teamleadList.push(event)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselectAll(event:any){\r\n this.teamleadList = [...this.teamleadList,...event]\r\n console.log(\"user unselectall\", this.teamleadList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n onTeamSelect(event: any) {\r\n console.log(\"teamlead select\", event)\r\n this.selectedTeam = event \r\n if(this.selectedTeam.length>0){\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n }\r\n this.cd.detectChanges();\r\n }\r\n onUserSelect(event: any) {\r\n console.log(\"user select\", event)\r\n \r\n this.selectedUsers = event\r\n if(this.selectedUsers.length>0){\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n }\r\n \r\n \r\n }\r\n cancel() {\r\n this.teamsUsers = []\r\n this.activeModal.close()\r\n }\r\n\r\n onCreateTeam() {\r\n let admincount = this.selectedUsers.filter((user: any) => user.role == 'admin').length\r\n let leadUsercount = this.selectedTeam.filter((user: any) => user.role == 'user').length\r\n if (admincount > 0 && leadUsercount > 0) {\r\n return this.ts.getErrorToast('User cannot be team lead when admins as a users')\r\n } else {\r\n let payload: any = {\r\n clientId: this.$headerFilters.client,\r\n teamName: this.teamName,\r\n description: this.description,\r\n users: this.selectedUsers,\r\n Teamlead: this.selectedTeam,\r\n }\r\n if (this.isEdit) {\r\n payload.teamId = this.teamData?._id\r\n this.userService.updateTeam(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Updated Successfully\")\r\n this.activeModal.close()\r\n }\r\n })\r\n } else {\r\n this.userService.createTeams(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Created Successfully\")\r\n this.activeModal.close()\r\n }\r\n }, (error: any) => {\r\n console.log(\"error\", error);\r\n\r\n this.ts.getErrorToast(error?.error?.error?.error)\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n onUpload(e: any) {\r\n let data: any = [];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n this.fileerror = true\r\n this.ts.getErrorToast(\"Please Upload the Valid File\");\r\n return;\r\n \r\n\r\n } else {\r\n data = utils.sheet_to_json(ws);\r\n }\r\n };\r\n \r\n \r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n value: data[i]['User Name/Email Id'],\r\n })\r\n }\r\n if(this.fileerror){\r\n return\r\n }\r\n this.userService\r\n .teamBulkUpload({\r\n users: processedArray,\r\n clientId: this.$headerFilters?.client ? this.$headerFilters?.client : this.$headerFilters?.clientId,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n const uniqueUsers = res.data.result.filter((item: { userId: string }, index: number, self: { userId: string }[]) =>\r\n index === self.findIndex((t) => t.userId === item.userId)\r\n );\r\n this.selectedUsers = uniqueUsers\r\n } else {\r\n this.ts.getErrorToast(\"The given User not associated with this brand\");\r\n }\r\n },\r\n error: (error: any) => {\r\n if (error.code == 400) {\r\n this.ts.getErrorToast(error);\r\n } else {\r\n this.ts.getErrorToast(error.error.error);\r\n }\r\n },\r\n });\r\n // .catch((error) => {\r\n // this.ts.getErrorToast(\"Unable to create stores!\");\r\n // });\r\n };\r\n\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M20.5 23.6816C18.8425 23.6816 17.5 22.2133 17.5 20.4004C17.5 18.5875 18.8425 17.1191 20.5 17.1191C22.1575 17.1191 23.5 18.5875 23.5 20.4004C23.5 22.2133 22.1575 23.6816 20.5 23.6816ZM35.6483 23.6816C33.9908 23.6816 32.6483 22.2133 32.6483 20.4004C32.6483 18.5875 33.9908 17.1191 35.6483 17.1191C37.3058 17.1191 38.6483 18.5875 38.6483 20.4004C38.6483 22.2133 37.3058 23.6816 35.6483 23.6816ZM31.509 26.3066C31.509 28.4805 29.8965 30.2441 27.909 30.2441C25.9215 30.2441 24.309 28.4805 24.309 26.3066C24.309 24.1328 25.9215 22.3691 27.909 22.3691C29.8965 22.3691 31.509 24.1328 31.509 26.3066Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M20.0013 25.7559C17.7925 25.7559 16 27.7164 16 30.1322C16 30.6121 16.36 31.0059 16.7988 31.0059H24.8013H24.8275C23.8338 30.042 23.2038 28.6352 23.2038 27.0684C23.2038 26.7566 23.2263 26.449 23.275 26.1537C22.765 25.8994 22.1988 25.7559 21.6025 25.7559H20.0013Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M31.1725 31.0059H31.1987H39.2012C39.64 31.0059 40 30.6162 40 30.1322C40 27.7164 38.2075 25.7559 35.9987 25.7559H34.3975C33.8012 25.7559 33.235 25.8953 32.725 26.1537C32.77 26.4531 32.7963 26.7566 32.7963 27.0684C32.7963 28.6352 32.17 30.042 31.1725 31.0059Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M25.7988 32.3183C23.0388 32.3183 20.8 34.767 20.8 37.7857C20.8 38.3928 21.25 38.8809 21.8013 38.8809H34.1987C34.7537 38.8809 35.2 38.3887 35.2 37.7857C35.2 34.767 32.9613 32.3183 30.2013 32.3183H25.7988Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\" *ngIf=\"type === 'create'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Create Team</a>\r\n <div class=\"sub-title\">Group multiple users to create a team for easier management</div>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"type === 'edit'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit Team</a>\r\n <div class=\"sub-title\">Group multiple users to edit a team for easier management</div>\r\n </div>\r\n\r\n\r\n <div class=\"w-100 h-500px scroll\">\r\n <div class=\"mt-5\">\r\n <form>\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"teamName\" class=\"form-label\">Team Name<span class=\"mandtryclr ms-1\">*</span></label>\r\n <input type=\"text\" [(ngModel)]=\"teamName\" [ngModelOptions]=\"{standalone: true}\"\r\n class=\"form-control\" id=\"teamName\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"teamlead\" class=\"form-label\">Team Lead <span class=\"mandtryclr ms-1\">*</span></label>\r\n <team-select [items]=\"teamleadList\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userId'\" (selected)=\"onTeamSelect($event)\" (deselected)=\"TeamUnselect($event)\" (deselectedAll)=\"TeamUnselectAll($event)\"\r\n [selectedValues]=\"selectedTeam\"></team-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"userlead\" class=\"form-label\">Select Users<span class=\"mandtryclr ms-1\">*</span>\r\n </label>\r\n <team-select [items]=\"userList\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userId'\" (selected)=\"onUserSelect($event)\" (deselected)=\"UserUnselect($event)\" (deselectedAll)=\"UserUnselectAll($event)\"\r\n [selectedValues]=\"selectedUsers\"></team-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"userlead\" class=\"form-label\">Description (optional)</label>\r\n <textarea id=\"description\" [(ngModel)]=\"description\"\r\n [ngModelOptions]=\"{standalone: true}\" name=\"description\" class=\"form-control\"\r\n rows=\"5\" cols=\"50\" placeholder=\"Enter a description...\"></textarea>\r\n </div>\r\n\r\n\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"280\" height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-15 or-color\">Or </span> <span class=\"line-bg \"><svg width=\"280\"\r\n height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold fs-6\">\r\n <li class=\"user-text\">Use the template to upload multiple users at once.</li>\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here -\r\n </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/teamsUploadTemplate.xlsx\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n\r\n </ol>\r\n </div>\r\n </div>\r\n <div\r\n class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\" class=\" w-50 p-4 mt-5\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n<div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n <!-- <span class=\"ms-2\">or drag and drop</span> -->\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n <!-- <div class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\" >\r\n <svg width=\"47\" height=\"46\" viewBox=\"0 0 47 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3.5\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\"/>\r\n <rect x=\"3.5\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\" stroke-width=\"6\"/>\r\n <g clip-path=\"url(#clip0_2176_18901)\">\r\n <path d=\"M26.8333 26.3332L23.5 22.9999M23.5 22.9999L20.1666 26.3332M23.5 22.9999V30.4999M30.4916 28.3249C31.3044 27.8818 31.9465 27.1806 32.3165 26.3321C32.6866 25.4835 32.7635 24.5359 32.5351 23.6388C32.3068 22.7417 31.7862 21.9462 31.0555 21.3778C30.3248 20.8094 29.4257 20.5005 28.5 20.4999H27.45C27.1977 19.5243 26.7276 18.6185 26.0749 17.8507C25.4222 17.0829 24.604 16.4731 23.6817 16.0671C22.7594 15.661 21.7571 15.4694 20.7501 15.5065C19.743 15.5436 18.7575 15.8085 17.8676 16.2813C16.9777 16.7541 16.2066 17.4225 15.6122 18.2362C15.0177 19.05 14.6155 19.9879 14.4358 20.9794C14.256 21.9709 14.3034 22.9903 14.5743 23.961C14.8452 24.9316 15.3327 25.8281 16 26.5832\" stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2176_18901\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(13.5 13)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\"><input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" value=\"personal\"\r\n class=\"btn-check\" ng-reflect-name=\"accountType\" ng-reflect-form-control-name=\"accountType\"\r\n (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />Click to upload</span> <span class=\"ms-2\">or drag and drop</span></div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </div> -->\r\n </div>\r\n <div class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"!isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length||!selectedTeam.length|| !teamName\">Create\r\n Team</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length ||!selectedTeam.length||!teamName\">Update\r\n Team</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\n\r\n@Component({\r\n selector: \"lib-roles-permission-table\",\r\n templateUrl: \"./roles-permission-table.component.html\",\r\n styleUrl: \"./roles-permission-table.component.scss\",\r\n})\r\nexport class RolesPermissionTableComponent implements OnInit,OnDestroy {\r\n @Output() dataEvent = new EventEmitter<string>();\r\n\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean;\r\n noData: boolean;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userCount: number;\r\n roleName: string;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private userService: UserService,\r\n private excelService: ExcelService,\r\n private modalService:NgbModal\r\n ) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n this.userService.rolesComms.subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n console.log(data)\r\n this.userType = data.userType\r\n this.roleName = data.role.roleName;\r\n }\r\n }\r\n })\r\n }\r\n \r\n ngOnInit() {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(type:any)=>{\r\n this.userType = (this.userType=='Tango User') ? 'tango' : 'client';\r\n if(this.$headerFilters && this.$headerFilters?.client) {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n role: this.roleName\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n }\r\n\r\n backToUser() {\r\n const dataToUser = \"\";\r\n this.userService.dataSubject.next((this.userType =='tango') ? 'Tango User' : 'Brand User');\r\n this.dataEvent.emit(dataToUser);\r\n }\r\n\r\n searchData() {\r\n if (this.searchValue) {\r\n this.userList_req.searchValue = this.searchValue;\r\n } else {\r\n delete this.userList_req[\"searchValue\"];\r\n }\r\n this.loadTable();\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = pageSize;\r\n this.pagination.limit = pageSize;\r\n this.loadTable();\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n \r\n loadTable() {\r\n this.loading = true;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.loading=false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.userCount = res.data.count;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n ...(this.searchValue != \"\"\r\n ? { searchValue: this.searchValue }\r\n : {}),\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n this.changeDetector.detectChanges();\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: (err:any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n if (this.pagination.totalCount > 10000) {\r\n Swal.fire({\r\n title: \"Export Failed!\",\r\n heightAuto: false,\r\n icon: \"error\",\r\n html: `Looks Like the Data Is Huge, You Can Select a Smaller Date Range, or Please Reach Out to Tango <a href=\"${this.supportEmail}\">${this.supportEmail}</a> for Further Assistance.`,\r\n showCloseButton: true,\r\n });\r\n return;\r\n }\r\n let excelData: any = [];\r\n var req: any = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userList_req.userType,\r\n role:this.userList_req.role\r\n };\r\n this.userService.getUserList(req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.data && res.data.result && res.data.result.length) {\r\n res.data.result.forEach((element: any) => {\r\n excelData.push({\r\n UserName: element.userName,\r\n Email: element.email,\r\n StoreAssigned: element?.Assigned,\r\n });\r\n });\r\n this.excelService.exportAsExcelFile(excelData, \"User\");\r\n }\r\n },\r\n error: () => {},\r\n complete: () => {},\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n users(type: any,user?: any) {\r\n // const data = \"add stores\";\r\n // this.dataTouserlist.emit(data);\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-3\">\r\n <div class=\"d-flex align-items-center card-title flex-grow-1\">\r\n <!--begin::Avatar-->\r\n <div class=\"symbol symbol-45px me-3\">\r\n <button type=\"button\" (click)=\"backToUser()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M16.3333 9.99996H4.66663M4.66663 9.99996L10.5 15.8333M4.66663 9.99996L10.5 4.16663\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> </button>\r\n </div>\r\n <!--end::Avatar-->\r\n\r\n <!--begin::Info-->\r\n <div class=\"d-flex flex-column\">\r\n <span *ngIf=\"roleName !=='superadmin'\" class=\"card-label\">{{roleName | titlecase}}</span>\r\n <span *ngIf=\"roleName ==='superadmin'\" class=\"card-label\">Super Admin</span>\r\n <span class=\"text-sub mb-2\">{{userCount || 0}} users in this role</span>\r\n </div>\r\n <!--end::Info-->\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if ((gs.userAccess |async)?.Global_User_isEdit) {\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Users</th>\r\n <th>Email</th>\r\n <th>Stores Assigned</th>\r\n <th class=\"text-end\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n\r\n <td class=\"text-end\">\r\n <span (click)=\"users('view',user)\" class=\"mx-6 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- <span class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3 4.99996H4.66667M4.66667 4.99996H18M4.66667 4.99996V16.6666C4.66667 17.1087 4.84226 17.5326 5.15482 17.8451C5.46738 18.1577 5.89131 18.3333 6.33333 18.3333H14.6667C15.1087 18.3333 15.5326 18.1577 15.8452 17.8451C16.1577 17.5326 16.3333 17.1087 16.3333 16.6666V4.99996H4.66667ZM7.16667 4.99996V3.33329C7.16667 2.89127 7.34226 2.46734 7.65482 2.15478C7.96738 1.84222 8.39131 1.66663 8.83333 1.66663H12.1667C12.6087 1.66663 13.0326 1.84222 13.3452 2.15478C13.6577 2.46734 13.8333 2.89127 13.8333 3.33329V4.99996M8.83333 9.16663V14.1666M12.1667 9.16663V14.1666\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span> -->\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n } @else if (loading) {\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (noData) {\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit ,EventEmitter, Output} from '@angular/core';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AlertPopupComponent } from '../user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from '../../../components-v2/add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../../../components-v2/teams-creation/teams-creation.component';\r\n\r\n@Component({\r\n selector: 'lib-brand-user',\r\n templateUrl: './brand-user.component.html',\r\n styleUrl: './brand-user.component.scss'\r\n})\r\nexport class BrandUserComponent implements OnInit,OnDestroy {\r\n @Output() dataToParent = new EventEmitter<string>();\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n receivedData:any='';\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any;\r\n rolesCount: any;\r\n SelectedTab: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n userInfo: any;\r\n constructor(\r\n public modalService: NgbModal,private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private userService: UserService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n }); \r\n }\r\n\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n}\r\n ngOnInit() {\r\n this.userInfo = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n \r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next:(data:any)=>{\r\n if(data === null ) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n if(userData?.clientId){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n } \r\n }\r\n });\r\n\r\n \r\n }\r\n\r\n \r\n searchData() {\r\n this.pagination.offset =1;\r\n this.pagination.limit =10;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n users(type: any,user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n }\r\n });\r\n }\r\n Viewusers(type: any,user?: any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount =0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.userService.changeMessage(this.pagination.limit);\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else { \r\n\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n \r\n \r\n\r\n }\r\n\r\n userStatusChange(user:any,i:number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" });\r\n modalRef.componentInstance.status = user.isActive\r\n modalRef.componentInstance.userName = user?.userName\r\nmodalRef.result.then((result) => { \r\n if (result) {\r\n if (result ==='submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive}).subscribe({\r\n next:(res:any)=> {\r\n if(res && res.code==200) {\r\n if(user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n },\r\n error:()=>{\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n },\r\n complete:()=>{}\r\n })\r\n } else if(result ==='close') {\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n}\r\n})\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n var data = { \r\n userType: 'client',\r\n clientId: this.$headerFilters?.client\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n}\r\nuserDetials(role: any) {\r\n let obj ={\r\n role:role,\r\n userType :'Brand User',\r\n receivedData:\"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData ='Role Value';\r\n}\r\nreceiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n}\r\n\r\nonSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n}\r\n\r\napplyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit=10;\r\n this.userList_req.export = false;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n}\r\nselectAllChecked: boolean = false;\r\nselectedUsers: any[] = []; \r\ncreateTeam: boolean = false;\r\nonSelectAll() {\r\n this.selectAllChecked = !this.selectAllChecked; \r\n\r\n this.userList.forEach(user => {\r\n user.checked = this.selectAllChecked; \r\n });\r\n if (this.selectAllChecked) {\r\n this.selectedUsers = [...this.userList];\r\n this.createTeam = true;\r\n } else {\r\n this.selectedUsers = [];\r\n this.createTeam = false;\r\n }\r\n}\r\n\r\n\r\nonSelectedTeams(user: any,index:any) {\r\n user.checked = !user.checked;\r\n if (user.checked) {\r\n this.selectedUsers.push(user);\r\n } else if(user.checked ===false) {\r\n const storeIndex = this.selectedUsers.findIndex(selectedUser => selectedUser._id === user._id);\r\n if (storeIndex !== -1) {\r\n this.selectedUsers.splice(storeIndex, 1);\r\n }\r\n }\r\n this.selectAllChecked = this.userList.every(store => store.checked);\r\n this.createTeam = this.selectedUsers.length > 0;\r\n }\r\n\r\n createTeams(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg',backdrop:'static' }); \r\n modalRef.componentInstance.teamsUsers = this.selectedUsers;\r\n console.log(this.selectedUsers)\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n this.selectAllChecked =false;\r\n this.createTeam = false;\r\n this.selectedUsers = []\r\n })\r\n }\r\n}","\r\n\r\n\r\n<div *ngIf=\"receivedData !=='Role Value'\">\r\n <div class=\"\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <!-- <span class=\"card-label mb-2\">Users</span>\r\n <span class=\"text-sub mb-2\">{{pagination?.totalCount ? pagination?.totalCount :'0'}} total users</span> -->\r\n </h3>\r\n <div class=\"card-toolbar rightcorner \">\r\n <div *ngIf=\"!createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" type=\"button\" (click)=\"users('add')\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n \r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" (click)=\"createTeams()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\" (click)=\"onSelectAll()\" [(ngModel)]=\"selectAllChecked\"\r\n class=\"cursor-pointer\"></span>\r\n\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assignedStores')\">Stores Assigned\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'assignedStores' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\">Clusters \r\n <svg [ngClass]=\"userList_req?.sortColumName === 'clusterCount' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'clusterCount' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n \r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamCount')\">Teams \r\n <svg [ngClass]=\"userList_req?.sortColumName === 'teamCount' && userList_req?.sortBy === 1 ? 'rotate' : ''\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'teamCount' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\"><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\" [(ngModel)]=\"user.checked\" (click)=\"onSelectedTeams(user,i)\"></span></td>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td>{{user?.assignedStores || 0}}</td> \r\n <td>{{user?.clusterCount||0}}</td>\r\n <td>{{user?.teamCount||0}}</td>\r\n\r\n <td>\r\n <div class=\"d-flex\">\r\n <!-- @if ((gs.userAccess | async)?.manage_users_isEdit) {\r\n <span class=\"me-3 cursor-pointer\" (click)=\"users('edit',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M9.66675 3.33333H3.83341C3.39139 3.33333 2.96746 3.50893 2.6549 3.82149C2.34234 4.13405 2.16675 4.55797 2.16675 5V16.6667C2.16675 17.1087 2.34234 17.5326 2.6549 17.8452C2.96746 18.1577 3.39139 18.3333 3.83341 18.3333H15.5001C15.9421 18.3333 16.366 18.1577 16.6786 17.8452C16.9912 17.5326 17.1667 17.1087 17.1667 16.6667V10.8333M15.9167 2.08333C16.2483 1.75181 16.6979 1.56557 17.1667 1.56557C17.6356 1.56557 18.0852 1.75181 18.4167 2.08333C18.7483 2.41485 18.9345 2.86449 18.9345 3.33333C18.9345 3.80217 18.7483 4.25181 18.4167 4.58333L10.5001 12.5L7.16675 13.3333L8.00008 10L15.9167 2.08333Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n } -->\r\n <span class=\"mx-3 cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n @if ((gs.userAccess | async)?.Global_User_isEdit) {\r\n <span class=\"mx-3 cursor-pointer\" *ngIf=\"userInfo.role!=='user'\">\r\n <button type=\"button\" (click)=\"assignStore(user)\" [disabled]=\"!user?.isActive || user?.role ==='superadmin'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span class=\"ms-2\">Assign Store</span>\r\n </button>\r\n </span>\r\n }\r\n <span class=\"form-check form-switch\" *ngIf=\"userInfo.role!=='user'\">\r\n <input class=\"form-check-input mt-3\" type=\"checkbox\" role=\"switch\" id=\"support\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\" >\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <div *ngIf=\"receivedData !=='Role Value'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles\">\r\n\r\n <a *ngIf=\"obj.roleName ==='superadmin'\" class=\"role-title my-2 cursor-pointer\" >Super Admin</a>\r\n <a *ngIf=\"obj.roleName !=='superadmin'\" class=\"role-title my-2 cursor-pointer\">{{obj.roleName |\r\n titlecase}}</a> \r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n","import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { UserService } from '../../services/user.service';\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrl: './users-list.component.scss'\r\n})\r\nexport class UsersListComponent implements OnInit {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @Output() dataToParent = new EventEmitter<string>();\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Configuration\", isAdd: false },\r\n { name: \"invoice\", isAdd: false },\r\n { name: \"billing\", isAdd: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Eye\",\r\n modules: [\r\n { name: \"stores\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"camera\", isAdd: false, isEdit: false },\r\n { name: \"zone\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Trax\",\r\n modules: [\r\n { name: \"store\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Admin\",\r\n modules: [\r\n { name: \"Lead Approval\", isAdd: false },\r\n { name: \"invoice Approval\", isAdd: false },\r\n { name: \"Edit billing\", isAdd: false },\r\n { name: \"Ticket Configuration\", isAdd: false },\r\n { name: \"Ticket Assigning\", isAdd: false },\r\n ]\r\n },\r\n ];\r\n userListData: any;\r\nconstructor(private ts: ToastService,private router: Router,public modalService: NgbModal,private userService: UserService){\r\n\r\n \r\n}\r\n\r\n\r\n\r\nngOnInit() {\r\n this.userService.currentMessage.subscribe((message:any) =>{\r\n this.userListData = message;\r\n\r\n })\r\n \r\n}\r\nonUpload(e: any) {\r\n alert('in')\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n // this.ts.getErrorToast('Please Upload the Valid File');\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n \r\n return;\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n role: data[i].Role,\r\n rolespermission:this.permissionArray\r\n });\r\n }\r\n // this.userService\r\n // .userBulkUpload(\r\n // { \r\n // users: processedArray, \r\n // userType: this.userType, \r\n // ...(this.userType=='client') ? {clientId: this.$headerFilters.client } : {}\r\n // }\r\n // )\r\n // .subscribe({\r\n // next: (res: any) => {\r\n // if (res.code == 200) {\r\n // this.activeModal.close('submit');\r\n // this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n // }\r\n // },\r\n // error: (error: any) => {\r\n // console.log(error)\r\n // if (error) {\r\n // this.ts.getErrorToast(error.error.error ? error.error.error:'Unable to create multiple Users!');\r\n // // } else {\r\n // // this.ts.getErrorToast('Unable to create multiple Users!');\r\n // }\r\n // },\r\n // });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n}\r\nvalidateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${\r\n row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n}\r\naddSingleUser(){\r\n let obj = {\r\n label: 'add',\r\n }\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.result.then((result) => {\r\n })\r\n}\r\n\r\nusers(type:any){\r\n\r\n}\r\nonSort(type:any){\r\n\r\n}\r\nassignStore(){\r\n\r\n}\r\nuserCount: string;\r\n\r\nreceiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n this.dataToParent.emit(this.userCount ); \r\n}\r\n}\r\n","\r\n <div *ngIf=\"userListData === 0\" class=\"card-body d-flex flex-center flex-column p-9\">\r\n \r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 24V32M24 28H32M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Upload to add users </a>\r\n \r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <!-- <li class=\"user-text\">Use the template to upload multiple users at once.</li> -->\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/UsersTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2 single-user fw-bold\">Add Single User</span></span></label>\r\n \r\n </div>\r\n </div>\r\n\r\n<lib-brand-user *ngIf=\"userListData !== 0\" (dataToParent)=\"receiveData($event)\"></lib-brand-user>\r\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrl: './action-popup.component.scss'\r\n})\r\nexport class ActionPopupComponent {\r\n @Input() teamData:any;\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n cancel(){\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit(){\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Delete {{teamData?.teamName}} team?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Are you sure you want to delete this team? This action cannot be undone.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit()\">Delete</button> \r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","\r\nimport { ChangeDetectorRef, Component,Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ExcelService } from '../../services/excel.service';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\n@Component({\r\n selector: 'lib-viewteams-list',\r\n templateUrl: './viewteams-list.component.html',\r\n styleUrl: './viewteams-list.component.scss'\r\n})\r\nexport class ViewteamsListComponent implements OnInit {\r\n @Input() teamData: any;\r\n $headerFilters: any;\r\n searchValue: any;\r\n viewteamsList: any = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =true\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n leadData: any=[];\r\n\r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService,\r\n public gs: GlobalStateService, private excelService: ExcelService,public modalService: NgbModal,\r\n ) {\r\n }\r\n ngOnInit() {\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n TeamId:this.teamData?._id,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n\r\n };\r\n this.userService\r\n .getviewteamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams View')\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n }\r\n\r\n Viewusers(type: any,user?: any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.componentInstance.operationType ='view';\r\n\r\n modalRef.result.then((result) => {\r\n \r\n })\r\n }\r\n \r\n applyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.reqdata.offset = 1;\r\n this.reqdata.limit=10;\r\n this.reqdata.export = false;\r\n this.reqdata.filterByRoles = this.filterByRoles;\r\n this.reqdata.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n backteamsList(){\r\n this.userService.setViewTeam(false);\r\n }\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount = 0;\r\n this.userService.getviewteamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.viewteamsList = res.data.result;\r\n this.leadData = res.data.teamlead\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false,\r\n TeamId:this.teamData?._id,\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n Configure(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.teamData = this.teamData;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n viewUser(data:any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = data;\r\n modalRef.componentInstance.type = 'view';\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n })\r\n }\r\n}\r\n","<div *ngIf=\"viewTeams\" class=\"card border-0 p-5\">\r\n <div class=\"card-header border-0 px-0\">\r\n <h3 class=\"card-title align-items-start d-flex align-items-center\">\r\n <span class=\"cursor-pointer\" (click)=\"backteamsList()\"> <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_1029_22185)\">\r\n <rect x=\"2\" y=\"1\" width=\"44\" height=\"44\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"43\" height=\"43\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M29.8334 22.9998H18.1667M18.1667 22.9998L24 28.8332M18.1667 22.9998L24 17.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_1029_22185\" x=\"0\" y=\"0\" width=\"48\" height=\"48\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1029_22185\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1029_22185\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></span>\r\n <div class=\"ms-3\">\r\n <div class=\"card-label mb-2\">{{teamData?.teamName}}</div>\r\n <div class=\"text-sub mb-2\">{{pagination?.totalCount ? pagination?.totalCount :'0'}} total users</div>\r\n </div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\"\r\n (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <button *ngIf=\"!loading && !noData && (gs.userAccess |async)?.Global_User_isEdit\" class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" \r\n (click)=\"Configure()\">Configure</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-0 px-0 d-flex\" *ngIf=\"leadData?.length\">\r\n <div class=\"d-flex mt-5 mx-5 w-100 overflow-auto\">\r\n <div class=\"p-3 pt-7 text-nowrap\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"users\">\r\n <path id=\"Icon\"\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n <span class=\"heading ms-2\">Lead By</span>\r\n </div>\r\n <div class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val1 ms-4\"\r\n *ngFor=\"let obj of leadData\">\r\n <span class=\"heading \">{{obj.userName}}</span>\r\n <span *ngIf=\"obj?.role\" class=\"blue-badge ms-2\">{{obj?.role | titlecase}}</span>\r\n <div class=\"sub-header mt-2\">{{obj.email}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0 mt-10\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <!-- <th class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\"\r\n class=\"cursor-pointer\"></span>\r\n\r\n </th> -->\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Username\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'email' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'mobileNumber' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'role' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assignedStores')\">Stores Assigned\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'assignedStores' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\">Clusters\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'clusterCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamCount')\">Teams\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n <!-- <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Assigned Type\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th> -->\r\n <!-- <th style=\"line-height: 21px !important;\">Actions</th> -->\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of viewteamsList;let i=index;\">\r\n <tr>\r\n <!-- <td><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\"></span></td> -->\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td>{{user?.role |titlecase}}</td>\r\n <td>{{user?.assignedStores}}</td>\r\n <td>{{user?.clusterCount}}</td>\r\n <td>{{user?.teamCount}}</td>\r\n <td>\r\n <div class=\"d-flex\" (click)=\"Viewusers('view',user)\">\r\n <span class=\"cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10C0.833374 10 4.16671 3.33334 10 3.33334C15.8334 3.33334 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5C11.3808 12.5 12.5 11.3807 12.5 10C12.5 8.6193 11.3808 7.50001 10 7.50001C8.61933 7.50001 7.50004 8.6193 7.50004 10C7.50004 11.3807 8.61933 12.5 10 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n </div>\r\n </td>\r\n <!-- <td>store</td> -->\r\n <!-- <td>\r\n <span class=\"me-3 cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n\r\n </td> -->\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"viewteamsList.length!==0\" [itemsPerPage]=\"pagination.limit\"\r\n [currentPage]=\"pagination.offset\" [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <!-- <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noData\" class=\"row \">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>","import { Component,ChangeDetectorRef, OnInit, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ExcelService } from '../../services/excel.service';\r\n@Component({\r\n selector: 'lib-teams-list',\r\n templateUrl: './teams-list.component.html',\r\n styleUrl: './teams-list.component.scss'\r\n})\r\nexport class TeamsListComponent implements OnInit {\r\n @Output() dataTo = new EventEmitter<any>();\r\n @ViewChild('tooltipContent') tooltipContent!: NgbTooltip;\r\n @ViewChild('tooltipContents') tooltipContents!: NgbTooltip\r\n showcreatebutton:boolean = false;\r\n $headerFilters: any;\r\n searchValue: any;\r\n teamsList: any[] = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =false\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n\r\n \r\n\r\n \r\n \r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService, private excelService: ExcelService,\r\n public gs: GlobalStateService,private ts: ToastService,private router: Router,public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n ngOnInit() {\r\n this.userService.setViewTeam(false);\r\n this.userService.viewTeams$.subscribe((value: boolean) => {\r\n this.viewTeams = value;\r\n if(value){\r\n this.loadTable()\r\n }\r\n });\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n searchValue: this.searchValue,\r\n };\r\n this.userService\r\n .getTeamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams ')\r\n \r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n \r\n }\r\n createTeam(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' }); \r\n modalRef.componentInstance.type = 'create'; \r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n editTeamsdata(data:any){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n deleteTeam(data:any){\r\n const modalRef = this.modalService.open(ActionPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.result.then((result) => {\r\n if(result === 'submit'){\r\n this.userService.deleteTeam({teamId:data._id}).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast('Team Deleted Successfully')\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata.offset =1\r\n this.loadTable();\r\n }})\r\n }\r\n \r\n })\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount = 0;\r\n this.userService.getTeamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n if(res.data.result.length){\r\n this.teamsList = res.data.result;\r\n this.showcreatebutton = false \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataTo.emit( this.pagination.totalCount); \r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n }else{\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.showcreatebutton = true\r\n this.noData = true;\r\n this.loading = false;\r\n }\r\n \r\n }else {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true;\r\n this.userService.setViewTeam(true);\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n}\r\n","<div>\r\n <div class=\"\" *ngIf=\"!loading && !viewTeams&&!showcreatebutton\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n </h3>\r\n <div class=\"card-toolbar rightcorner\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd && teamsList.length>0\" type=\"button\" (click)=\"createTeam()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header border-0 pt-3 left-move\">\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button type=\"button\" (click)=\"createTeam()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <!-- <th class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\"\r\n class=\"cursor-pointer\"></span>\r\n\r\n </th> -->\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamName')\">Team Name\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userscount')\">Users\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userscount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userscount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Name\r\n <!-- <svg [ngClass]=\"reqdata?.sortColumName === 'leadName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'leadName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Email\r\n <!-- <svg [ngClass]=\"reqdata?.sortColumName === 'leademail' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'leademail' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Description\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of teamsList;let i=index;\">\r\n <tr>\r\n <!-- <td><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\"></span></td> -->\r\n <td>{{user?.teamName}}</td>\r\n <td>{{user?.userscount}}</td>\r\n <!-- <td>{{user?.leadName}}<span *ngIf=\"user?.Teamleadcount>0\"> +{{user?.Teamleadcount}}</span>\r\n </td> -->\r\n <td><div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ user?.leadName[0]?user?.leadName[0]:\"--\" }}\r\n </span>\r\n <span *ngIf=\"user?.leadName.length > 1\">\r\n +{{ user.leadName.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n <!-- <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"w-100\">{{ user.leadName}}</span>\r\n <span *ngIf=\"user.leademail.length > 1\">\r\n +{{ user.leademail.length - 1 }} more\r\n </span>\r\n </div>\r\n </ng-template> -->\r\n </div>\r\n </div></td>\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label badge-light-primary text-symbol\">\r\n <span class=\"text-primary fs-4 badge badge-light-primary fw-normal\">\r\n {{user?.leademail.slice(0,1) | uppercase }}\r\n </span>\r\n </span>\r\n </div> -->\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label badge-light-primary text-symbol\" *ngIf=\"user?.leademail.length>0\">\r\n <span class=\"text-primary fs-4 badge badge-light-primary fw-normal\">\r\n {{ user?.leademail[0]?.substring(0, 2) | uppercase }}\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ user?.leademail[0]?user?.leademail[0]:\"--\" }}\r\n </span>\r\n <span *ngIf=\"user?.leademail.length > 1\">\r\n +{{ user.leademail.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n <!-- <ng-template #tooltipContents>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"w-100\">{{ user.leademail}}</span>\r\n </div>\r\n </ng-template> -->\r\n </div>\r\n </div>\r\n <span *ngIf=\"user?.Teamleadcount>0\">+{{user?.Teamleadcount}}</span>\r\n </div>\r\n </td>\r\n <td class=\"description\">{{user?.description ? user?.description : \"--\"}}</td>\r\n <td>\r\n <span class=\"me-3 cursor-pointer\" (click)=\"viewTeamsdata(user)\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"me-3 cursor-pointer\" (click)=\"editTeamsdata(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_2181_11160)\">\r\n <path\r\n d=\"M24.1666 12.4999C24.3855 12.2811 24.6453 12.1074 24.9313 11.989C25.2173 11.8705 25.5238 11.8096 25.8333 11.8096C26.1428 11.8096 26.4493 11.8705 26.7353 11.989C27.0213 12.1074 27.2811 12.2811 27.5 12.4999C27.7188 12.7188 27.8924 12.9786 28.0109 13.2646C28.1294 13.5506 28.1903 13.8571 28.1903 14.1666C28.1903 14.4761 28.1294 14.7826 28.0109 15.0686C27.8924 15.3546 27.7188 15.6144 27.5 15.8333L16.25 27.0833L11.6666 28.3333L12.9166 23.7499L24.1666 12.4999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2181_11160\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"cursor-pointer\" (click)=\"deleteTeam(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.5 14.9998H14.1667M14.1667 14.9998H27.5M14.1667 14.9998V26.6665C14.1667 27.1085 14.3423 27.5325 14.6548 27.845C14.9674 28.1576 15.3913 28.3332 15.8333 28.3332H24.1667C24.6087 28.3332 25.0326 28.1576 25.3452 27.845C25.6577 27.5325 25.8333 27.1085 25.8333 26.6665V14.9998H14.1667ZM16.6667 14.9998V13.3332C16.6667 12.8911 16.8423 12.4672 17.1548 12.1547C17.4674 11.8421 17.8913 11.6665 18.3333 11.6665H21.6667C22.1087 11.6665 22.5326 11.8421 22.8452 12.1547C23.1577 12.4672 23.3333 12.8911 23.3333 13.3332V14.9998M18.3333 19.1665V24.1665M21.6667 19.1665V24.1665\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"teamsList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"noData&&!showcreatebutton\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"showcreatebutton\" class=\"row\">\r\n <div class=\"ms-3 right-bar py-7 d-flex justify-content-center align-items-center flex-column\">\r\n <svg width=\"160\" height=\"120\" viewBox=\"0 0 160 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"82\" cy=\"52\" r=\"52\" fill=\"#EAECF0\" />\r\n <g filter=\"url(#filter0_dd_1030_48016)\">\r\n <path\r\n d=\"M47.7266 79.1098L80.9651 63.6104C82.6339 62.8322 83.3559 60.8485 82.5777 59.1797L62.9484 17.0845L49.6563 12.2466L22.4611 24.9279C20.7923 25.7061 20.0703 27.6898 20.8485 29.3586L43.2959 77.4971C44.074 79.166 46.0577 79.888 47.7266 79.1098Z\"\r\n fill=\"url(#paint0_linear_1030_48016)\" />\r\n <path d=\"M49.6567 12.2471L62.9489 17.085L53.8838 21.3121L49.6567 12.2471Z\" fill=\"#D0D5DD\" />\r\n </g>\r\n <g filter=\"url(#filter1_dd_1030_48016)\">\r\n <path\r\n d=\"M63.6163 67.7831H100.291C102.132 67.7831 103.625 66.2904 103.625 64.4491V18.0022L93.6228 8H63.6163C61.7749 8 60.2822 9.49271 60.2822 11.3341V64.4491C60.2822 66.2904 61.7749 67.7831 63.6163 67.7831Z\"\r\n fill=\"url(#paint1_linear_1030_48016)\" />\r\n <path d=\"M93.6226 8L103.625 18.0022H93.6226V8Z\" fill=\"#D0D5DD\" />\r\n </g>\r\n <g filter=\"url(#filter2_dd_1030_48016)\">\r\n <path\r\n d=\"M82.4745 63.5909L115.713 79.0903C117.382 79.8685 119.366 79.1465 120.144 77.4777L139.773 35.3825L134.935 22.0903L107.74 9.40903C106.071 8.63085 104.087 9.35286 103.309 11.0217L80.8619 59.1602C80.0837 60.8291 80.8057 62.8128 82.4745 63.5909Z\"\r\n fill=\"url(#paint2_linear_1030_48016)\" />\r\n <path d=\"M134.936 22.0898L139.773 35.382L130.708 31.1549L134.936 22.0898Z\" fill=\"#D0D5DD\" />\r\n </g>\r\n <circle cx=\"27\" cy=\"11\" r=\"5\" fill=\"#F2F4F7\" />\r\n <circle cx=\"24\" cy=\"109\" r=\"7\" fill=\"#F2F4F7\" />\r\n <circle cx=\"151\" cy=\"35\" r=\"7\" fill=\"#F2F4F7\" />\r\n <circle cx=\"140\" cy=\"8\" r=\"4\" fill=\"#F2F4F7\" />\r\n <g filter=\"url(#filter3_b_1030_48016)\">\r\n <rect x=\"58\" y=\"62\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#344054\" fill-opacity=\"0.4\" />\r\n <path\r\n d=\"M74.5 81.6816C72.8425 81.6816 71.5 80.2133 71.5 78.4004C71.5 76.5875 72.8425 75.1191 74.5 75.1191C76.1575 75.1191 77.5 76.5875 77.5 78.4004C77.5 80.2133 76.1575 81.6816 74.5 81.6816ZM89.6483 81.6816C87.9908 81.6816 86.6483 80.2133 86.6483 78.4004C86.6483 76.5875 87.9908 75.1191 89.6483 75.1191C91.3058 75.1191 92.6483 76.5875 92.6483 78.4004C92.6483 80.2133 91.3058 81.6816 89.6483 81.6816ZM85.509 84.3066C85.509 86.4805 83.8965 88.2441 81.909 88.2441C79.9215 88.2441 78.309 86.4805 78.309 84.3066C78.309 82.1328 79.9215 80.3691 81.909 80.3691C83.8965 80.3691 85.509 82.1328 85.509 84.3066Z\"\r\n fill=\"white\" />\r\n <path\r\n d=\"M74.0013 83.7559C71.7925 83.7559 70 85.7164 70 88.1322C70 88.6121 70.36 89.0059 70.7988 89.0059H78.8013H78.8275C77.8338 88.042 77.2038 86.6352 77.2038 85.0684C77.2038 84.7566 77.2263 84.449 77.275 84.1537C76.765 83.8994 76.1988 83.7559 75.6025 83.7559H74.0013Z\"\r\n fill=\"#D0D5DD\" />\r\n <path\r\n d=\"M85.1725 89.0059H85.1987H93.2012C93.64 89.0059 94 88.6162 94 88.1322C94 85.7164 92.2075 83.7559 89.9987 83.7559H88.3975C87.8012 83.7559 87.235 83.8953 86.725 84.1537C86.77 84.4531 86.7963 84.7566 86.7963 85.0684C86.7963 86.6352 86.17 88.042 85.1725 89.0059Z\"\r\n fill=\"#D0D5DD\" />\r\n <path\r\n d=\"M79.7988 90.3183C77.0388 90.3183 74.8 92.767 74.8 95.7857C74.8 96.3928 75.25 96.8809 75.8013 96.8809H88.1987C88.7537 96.8809 89.2 96.3887 89.2 95.7857C89.2 92.767 86.9613 90.3183 84.2013 90.3183H79.7988Z\"\r\n fill=\"#D0D5DD\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_dd_1030_48016\" x=\"-0.560547\" y=\"8.01953\" width=\"104.547\" height=\"112.499\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\" />\r\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow_1030_48016\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <filter id=\"filter1_dd_1030_48016\" x=\"40.2822\" y=\"8\" width=\"83.3428\" height=\"99.7832\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\" />\r\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow_1030_48016\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <filter id=\"filter2_dd_1030_48016\" x=\"59.4526\" y=\"8\" width=\"104.547\" height=\"112.499\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1030_48016\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feMorphology radius=\"4\" operator=\"erode\" in=\"SourceAlpha\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\" />\r\n <feBlend mode=\"normal\" in2=\"effect1_dropShadow_1030_48016\" result=\"effect2_dropShadow_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <filter id=\"filter3_b_1030_48016\" x=\"50\" y=\"54\" width=\"64\" height=\"64\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feGaussianBlur in=\"BackgroundImageFix\" stdDeviation=\"4\" />\r\n <feComposite in2=\"SourceAlpha\" operator=\"in\" result=\"effect1_backgroundBlur_1030_48016\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_backgroundBlur_1030_48016\" result=\"shape\" />\r\n </filter>\r\n <linearGradient id=\"paint0_linear_1030_48016\" x1=\"45.7738\" y1=\"79.2396\" x2=\"19.2853\" y2=\"31.4523\"\r\n gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E4E7EC\" />\r\n <stop offset=\"1\" stop-color=\"#F9FAFB\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint1_linear_1030_48016\" x1=\"61.7916\" y1=\"67.0755\" x2=\"57.9807\" y2=\"12.571\"\r\n gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E4E7EC\" />\r\n <stop offset=\"1\" stop-color=\"#F9FAFB\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint2_linear_1030_48016\" x1=\"81.1199\" y1=\"62.1785\" x2=\"100.701\" y2=\"11.17\"\r\n gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"#E4E7EC\" />\r\n <stop offset=\"1\" stop-color=\"#F9FAFB\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n <div class=\"nodata-title\">Start by creating a team</div>\r\n <div class=\"nodata-sub mt-2\">Any team created will track here.</div>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-center align-items-center mt-3 mb-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-25 me-3\">How to create?</button>\r\n <button [disabled]=\"!(gs.userAccess |async)?.Global_User_isAdd\" class=\"btn btn-primary w-25 ms-3\" id=\"alert-toast\" (click)=\"createTeam()\"><span class=\"mx-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16699V15.8337M4.1665 10.0003H15.8332\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>Create\r\n Team</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"viewTeams\">\r\n <lib-viewteams-list [teamData]=\"this.selectedTeam\"></lib-viewteams-list>\r\n</div>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n@Component({\r\n selector: 'lib-users-manage',\r\n templateUrl: './users-manage.component.html',\r\n styleUrl: './users-manage.component.scss'\r\n})\r\nexport class UsersManageComponent implements OnInit,OnDestroy {\r\n private readonly destroy = new Subject();\r\n selectedTab: any ='users';\r\n teamCount:any =''\r\n private readonly destroy$ = new Subject();\r\n searchValue: any;\r\n $headerFilters: any;\r\n constructor(public userService: ManageUsersService, ){\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n }\r\n ngOnInit(): void {\r\n this.selectedTabs('users');\r\n this.loadTable()\r\n }\r\n selectedTabs(type: any) {\r\n this.selectedTab = type;\r\n }\r\n userCount: string;\r\n\r\n receiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n }\r\n receive(data: any) {\r\n this.teamCount = data; // Store data from the child\r\n }\r\n loadTable() {\r\n let user = JSON.parse(localStorage.getItem('header-filters') || '{}')\r\n let payload = {\r\n clientId: user.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.userService.getTeamsList(payload).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamCount = res.data.count;\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \" style=\"border-bottom: white!important;overflow-y: hidden;\">\r\n \r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\">\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\" >{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6 \">Teams <span class=\"blue-badge mx-2\" >{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header my-3 min-h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\" >\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\">{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams <span class=\"blue-badge mx-2\">{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n\r\n </ul>\r\n </div> -->\r\n <div class=\"card-card pt-2 pb-1 \">\r\n <lib-users-list *ngIf=\"selectedTab ==='users'\" (dataToParent)=\"receiveData($event)\"></lib-users-list>\r\n <lib-teams-list *ngIf=\"selectedTab ==='teams'\" (dataTo)=\"receive($event)\"></lib-teams-list>\r\n </div>\r\n</div>","import { Component, OnDestroy, OnInit, Input, ChangeDetectorRef, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-list',\r\n templateUrl: './audit-user-list.component.html',\r\n styleUrl: './audit-user-list.component.scss'\r\n})\r\nexport class AuditUserListComponent implements OnInit, OnDestroy {\r\n\r\n @Input() viewuser: any;\r\n @Input() userDetails: any;\r\n userData: any;\r\n @Output() dataEmitter: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n };\r\n totalCount: any;\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n headerFilter: any;\r\n consolidatedData: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef, private toast: ToastService,\r\n public gs: GlobalStateService, private service: UserService,\r\n private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.headerFilter = data\r\n this.loadTable();\r\n this.consolidatedCard();\r\n this.getuserDetails();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n consolidatedCard() {\r\n const payload = {\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email\r\n }\r\n this.service.getConsolidatedCard(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code === 200) {\r\n this.consolidatedData = res?.data?.result;\r\n }\r\n },\r\n })\r\n\r\n }\r\n\r\n getuserDetails() {\r\n this.service.getAuditUserDetails(this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userData = res?.data?.result;\r\n }\r\n },\r\n })\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWalletSummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.totalCount = res?.data?.count;\r\n if (this.totalCount < 10) {\r\n this.paginationSizes = [this.totalCount];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.loading = false;\r\n this.noData = true;\r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportWalletAummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Wallet Summary')\r\n },\r\n error: (err: any) => {\r\n this.toast.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n // Viewusers(data: any, key: any) {\r\n // this.viewuser = true;\r\n // }\r\n\r\n paginationSize(): number {\r\n if (this.totalCount < 10) {\r\n return this.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n backTosummary() {\r\n this.viewuser = false;\r\n this.searchValue = '';\r\n this.dataEmitter.emit(this.viewuser)\r\n }\r\n}\r\n","<div class=\"card p-0 rounded-3 mb-5\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title m-0\">\r\n <div class=\"d-flex align-items-center\">\r\n <span (click)=\"backTosummary()\" class=\"btn me-3 px-2 py-2 btn-outline\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10H4.1665M4.1665 10L9.99984 15.8333M4.1665 10L9.99984 4.16667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"userData?.userName\" class=\"me-3 fw-bold\">{{(userDetails?.userName ? userDetails?.userName : userDetails?.userName) | titlecase}}</span> <span\r\n class=\"badge me-3 badge-light-default\">{{userData?.tangoUserType | titlecase}}</span><span\r\n class=\"badge me-3 badge-light-success\">{{userData?.role | titlecase}}</span>\r\n <span *ngIf=\"userData?.email\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14.6668 4.00001C14.6668 3.26667 14.0668 2.66667 13.3335 2.66667H2.66683C1.9335 2.66667 1.3335 3.26667 1.3335 4.00001M14.6668 4.00001V12C14.6668 12.7333 14.0668 13.3333 13.3335 13.3333H2.66683C1.9335 13.3333 1.3335 12.7333 1.3335 12V4.00001M14.6668 4.00001L8.00016 8.66667L1.3335 4.00001\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.email}}</span></span>\r\n <span *ngIf=\"userData?.mobileNumber\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_8096_7888)\">\r\n <path\r\n d=\"M16.5001 12.69V14.94C16.5009 15.1489 16.4581 15.3556 16.3745 15.547C16.2908 15.7384 16.168 15.9102 16.0141 16.0514C15.8602 16.1926 15.6785 16.3001 15.4806 16.367C15.2828 16.4339 15.0731 16.4588 14.8651 16.44C12.5572 16.1892 10.3403 15.4006 8.39257 14.1375C6.58044 12.986 5.04407 11.4496 3.89257 9.6375C2.62506 7.6809 1.83625 5.45324 1.59007 3.135C1.57133 2.9276 1.59598 2.71857 1.66245 2.52121C1.72892 2.32386 1.83575 2.14251 1.97615 1.98871C2.11654 1.83491 2.28743 1.71203 2.47792 1.62789C2.6684 1.54375 2.87433 1.50019 3.08257 1.5H5.33257C5.69655 1.49641 6.04942 1.62531 6.32539 1.86265C6.60137 2.09999 6.78163 2.42958 6.83257 2.79C6.92754 3.51005 7.10366 4.21704 7.35757 4.8975C7.45848 5.16594 7.48032 5.45768 7.4205 5.73816C7.36069 6.01863 7.22172 6.27608 7.02007 6.48L6.06757 7.4325C7.13524 9.31016 8.68991 10.8648 10.5676 11.9325L11.5201 10.98C11.724 10.7783 11.9814 10.6394 12.2619 10.5796C12.5424 10.5197 12.8341 10.5416 13.1026 10.6425C13.783 10.8964 14.49 11.0725 15.2101 11.1675C15.5744 11.2189 15.9071 11.4024 16.145 11.6831C16.3828 11.9638 16.5092 12.3222 16.5001 12.69Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8096_7888\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.mobileNumber }}</span></span>\r\n <span *ngIf=\"userData?.clientAssigned\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12.75 15.75V14.25C12.75 13.4544 12.4339 12.6913 11.8713 12.1287C11.3087 11.5661 10.5456 11.25 9.75 11.25H3.75C2.95435 11.25 2.19129 11.5661 1.62868 12.1287C1.06607 12.6913 0.75 13.4544 0.75 14.25V15.75M17.25 15.75V14.25C17.2495 13.5853 17.0283 12.9396 16.621 12.4142C16.2138 11.8889 15.6436 11.5137 15 11.3475M12 2.3475C12.6453 2.51273 13.2173 2.88803 13.6257 3.41423C14.0342 3.94044 14.2559 4.58762 14.2559 5.25375C14.2559 5.91988 14.0342 6.56706 13.6257 7.09327C13.2173 7.61947 12.6453 7.99477 12 8.16M9.75 5.25C9.75 6.90685 8.40685 8.25 6.75 8.25C5.09315 8.25 3.75 6.90685 3.75 5.25C3.75 3.59315 5.09315 2.25 6.75 2.25C8.40685 2.25 9.75 3.59315 9.75 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 top-list\">Clients Assigned:{{userData?.clientAssigned ?? 0}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card p-3 rounded-3 mb-5\">\r\n <div class=\"w-100 p-5 bg-highlighted d-flex align-items-center\">\r\n <span class=\"fw-bold text-highlighted\">₹ {{consolidatedData?.totalCredit ? consolidatedData?.totalCredit.toFixed(2) : 0}}</span><span\r\n class=\"fw-semibold text-sub ms-3\">{{consolidatedData?.message}}\r\n <!-- {{headerFilter?.date?.startDate}} – {{headerFilter?.date?.endDate}} -->\r\n </span>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center px-5 py-5\">\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalFiles ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Files</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalBC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Before Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalAC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">After Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalEarnings ? consolidatedData?.totalEarnings.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Earnings</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalReducedAmount ? consolidatedData?.totalReducedAmount.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Reduced Amount</div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3 mb-5\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title\">Summary Table</div>\r\n <div class=\"text-sub\">Based on {{headerFilter?.date?.startDate | date:'dd MMM, yyyy'}} – {{headerFilter?.date?.endDate | date:'dd MMM, yyyy'}}</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default px-4 py-3 mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDate')\">File Date\r\n <svg [ngClass]=\"sortColumName === 'fileDate' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFilesCount')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFilesCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFilesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBeforeCount')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBeforeCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBeforeCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAfterCount')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAfterCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAfterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarn')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarn' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarn' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionByMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionByMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionByLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.fileDate ?? '--'}}</td>\r\n <td>{{user?.totalFilesCount ?? '--'}}</td>\r\n <td>{{user?.totalBeforeCount ?? '--'}}</td>\r\n <td>{{user?.totalAfterCount ?? '--'}}</td>\r\n <td>{{user?.totalEarn ? user?.totalEarn.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMinimumTarget ? user?.deductionByMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMapping ? user?.deductionByMapping.toFixed(2) : 0}}</td>\r\n <td>{{user.deductionByLateLogin ? user.deductionByLateLogin.toFixed(2) : 0}}\r\n </td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit, viewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { AddUserPopupComponent } from '../../add-user-popup/add-user-popup.component';\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-earnings',\r\n templateUrl: './audit-user-earnings.component.html',\r\n styleUrl: './audit-user-earnings.component.scss'\r\n})\r\nexport class AuditUserEarningsComponent implements OnInit, OnDestroy {\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private service: UserService, private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.$headerFilters = data\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.searchValue = this.searchValue;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.loadTable();\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.pagination.totalCount = res?.data?.count;\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res?.data?.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.loading = false;\r\n this.noData = true; \r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportgetAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Users Summary')\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n }\r\n\r\n generateReport() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate\r\n }\r\n this.service.getGenerateReport(payload).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.toastService.getSuccessToast('Report Generated Successfully')\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error.error)\r\n },\r\n })\r\n }\r\n\r\n\r\n viewuser: boolean = false;\r\n userDetails: any;\r\n\r\n Viewusers(type: any, user?: any) {\r\n this.viewuser = true;\r\n this.searchValue = '';\r\n this.userDetails = user;\r\n }\r\n\r\n addUsers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.pagination.limit = 10;\r\n this.pagination.offset = 1;\r\n // this.sortColumName = 'userName';\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n receivedData(event: any) {\r\n this.viewuser = event;\r\n this.searchValue = '';\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortBy = -1;\r\n this.sortColumName = undefined;\r\n this.loadTable();\r\n }\r\n\r\n}\r\n","<div *ngIf=\"!viewuser\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer px-5 me-5 text-center\"><a routerLink=\"/manage/users/tango\"\r\n class=\"nav-link mx-0 text-active-primary\">Users</a>\r\n </li>\r\n <li class=\"nav-item activated px-5 me-5 bg-light-primary cursor-pointer\"><a\r\n class=\"nav-link text-active-primary mx-0\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <!-- <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"generateReport()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><span\r\n class=\"ms-2\">Generate</span> </button> -->\r\n\r\n\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"addUsers('add')\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"sortColumName === 'userName' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateFrom')\">File Date From\r\n <svg [ngClass]=\"sortColumName === 'fileDateFrom' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateFrom' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateTo')\">File Date To\r\n <svg [ngClass]=\"sortColumName === 'fileDateTo' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateTo' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('noOfDays')\">No.of Days\r\n <svg [ngClass]=\"sortColumName === 'noOfDays' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'noOfDays' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFiles')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFiles' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBC')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAC')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarnings')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarnings' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarnings' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('bcCredit')\">BC Credit\r\n <svg [ngClass]=\"sortColumName === 'bcCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'bcCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('acCredit')\">AC Credit\r\n <svg [ngClass]=\"sortColumName === 'acCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'acCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionbyLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName ? user?.userName : '--'}}</td>\r\n <td>{{user?.fileDateFrom ? user?.fileDateFrom : '--'}}</td>\r\n <td>{{user?.fileDateTo ? user?.fileDateTo : '--'}}</td>\r\n <td>{{user?.noOfDays ? user?.noOfDays : 0}}</td>\r\n <td>{{user?.totalFiles ?? '--'}}</td>\r\n <td>{{user?.totalBC ?? '--'}}</td>\r\n <td>{{user?.totalAC ?? '--'}}</td>\r\n <td>{{user?.totalEarnings ? user?.totalEarnings.toFixed(2) : 0}}</td>\r\n <td>{{user.bcCredit ? user.bcCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.acCredit ? user?.acCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMinimumTarget ? user?.deductionbyMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMapping ? user?.deductionbyMapping.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyLateLogin ? user?.deductionbyLateLogin.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>\r\n<div *ngIf=\"viewuser\">\r\n <lib-audit-user-list (dataEmitter)=\"receivedData($event)\" [viewuser]=\"viewuser\"\r\n [userDetails]=\"userDetails\"></lib-audit-user-list>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\n\r\nconst routes: Routes = [\r\n // {\r\n // path:'client',\r\n // component:BrandUserComponent\r\n // },\r\n {\r\n path: 'tango',\r\n component: UserTableComponent,\r\n },\r\n {\r\n path: 'tango/audit',\r\n component: AuditUserEarningsComponent\r\n },\r\n {\r\n path: 'client',\r\n component: UsersManageComponent\r\n },\r\n {\r\n path: 'teams',\r\n component: TeamsCreationComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoManageUsersRoutingModule { }\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { PageInfoService,GlobalStateService } from \"tango-app-ui-global\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n@Component({\r\n selector: \"lib-tango-manage-users\",\r\n templateUrl: \"./tango-manage-users.component.html\",\r\n styleUrl: \"./tango-manage-users.component.scss\",\r\n})\r\nexport class TangoManageUsersComponent implements OnInit,OnDestroy {\r\n receivedData: any = \"\";\r\n userData: string;\r\n roles: any[] = [];\r\n rolesCount: number;\r\n $headerFilters: any;\r\n userType: string;\r\n USER: any;\r\n setTab: string;\r\n private readonly destroy$ = new Subject();\r\n \r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private gs: GlobalStateService,private route: ActivatedRoute\r\n ) {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n if(user && user.userType) {\r\n this.USER = user;\r\n }\r\n this.userType = this.USER.userType ? this.USER.userType : 'client';\r\n this.route?.queryParams\r\n ?.pipe(takeUntil(this.destroy$))\r\n .subscribe((params) => {\r\n if (params.type === \"client\") this.userData = \"Brand User\";\r\n else\r\n this.userData = this.setTab\r\n ? this.setTab\r\n : this.userType == \"client\"\r\n ? \"Brand User\"\r\n : \"Tango User\";\r\n });\r\n this.setTab = this.userData;\r\n this.$headerFilters = data;\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n },\r\n });\r\n }\r\n \r\n ngOnInit(): void {\r\n this.userService?.rolesComms?.subscribe(value => {\r\n this.receivedData = value?.receivedData\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe(()=>{\r\n this.getRoles();\r\n })\r\n this.setPageData();\r\n this.receivedData = \"\";\r\n }\r\n\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n\r\n userValue(e: any) {\r\n this.userData = e.target.innerHTML;\r\n this.setTab = this.userData;\r\n this.userType = this.userData == \"Brand User\" ? \"client\" : \"tango\";\r\n \r\n // this.userType = this.userData == \"Tango User\" ? \"tango\" : \"client\";\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n this.receivedData = \"\";\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n\r\n getRoles() {\r\n \r\n let data \r\n\r\n if(this.userType === 'tango'){\r\n data = { \r\n userType: this.userType\r\n }\r\n }\r\n\r\n if(this.userType === 'client'){\r\n data = { \r\n userType: this.userType,\r\n clientId: this.$headerFilters?.client\r\n }\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n // userDetials(role: any) {\r\n // this.userService.rolesComms.next(role);\r\n // this.receivedData = \"Role Value\";\r\n // }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<!-- Users subhead start -->\r\n<div class=\"card mb-5\">\r\n @if (USER?.userType==='tango') {\r\n <div class=\"card-body pt-2 pb-1\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul \r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li (click)=\"userValue('Brand User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'client' }\">\r\n <a [ngClass]=\"userData ==='Brand User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer me-6\">Brand User</a>\r\n </li>\r\n <li (click)=\"userValue('Tango User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'tango' }\">\r\n <a [ngClass]=\"userData ==='Tango User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer no-border me-6 \">Tango User</a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<!-- Users subhead end -->\r\n<!-- *ngIf=\"userdata =='Tango User'\" -->\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData !=='Role Value' && (userData ==='Tango User' || userData ==='Brand User')\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <!-- (dataTouserlist)=\"receiveData($event)\" -->\r\n <lib-user-table *ngIf=\"userData ==='Tango User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-user-table>\r\n <lib-brand-user *ngIf=\"userData ==='Brand User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-brand-user>\r\n\r\n </div>\r\n <!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles;let i=index\">\r\n <a class=\"role-title my-2 cursor-pointer\" (click)=\"userDetials(obj)\">{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!-- <div *ngFor=\"let obj of values\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"obj.value\">\r\n </div> -->","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TangoManageUsersRoutingModule } from './tango-manage-users-routing.module';\r\nimport { TangoManageUsersComponent } from './components/tango-manage-users/tango-manage-users.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { RolesPermissionTableComponent } from './components/tango-manage-users/roles-permission-table/roles-permission-table.component';\r\nimport { AddUserPopupComponent } from './components/tango-manage-users/add-user-popup/add-user-popup.component';\r\nimport { NgbAccordionModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { AssignStorePopupComponent } from './components/tango-manage-users/assign-store-popup/assign-store-popup.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { AlertPopupComponent } from './components/tango-manage-users/user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from './components-v2/add-users/add-users.component';\r\nimport { UsersListComponent } from './components-v2/users-list/users-list.component';\r\nimport { TeamsListComponent } from './components-v2/teams-list/teams-list.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { CustomSelectComponent } from './components-v2/custom-select/custom-select.component';\r\nimport { ViewteamsListComponent } from './components-v2/viewteams-list/viewteams-list.component';\r\nimport { ActionPopupComponent } from './components-v2/action-popup/action-popup.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\nimport { AuditUserListComponent } from './components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoManageUsersComponent,\r\n UserTableComponent,\r\n RolesPermissionTableComponent,\r\n AddUserPopupComponent,\r\n AssignStorePopupComponent,\r\n BrandUserComponent,\r\n AlertPopupComponent,\r\n AddUsersComponent,\r\n UsersListComponent,\r\n TeamsListComponent,\r\n TeamsCreationComponent,\r\n UsersManageComponent,\r\n CustomSelectComponent,\r\n ViewteamsListComponent,\r\n ActionPopupComponent,\r\n AuditUserEarningsComponent,\r\n AuditUserListComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoManageUsersRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxPaginationModule,\r\n NgbAccordionModule,\r\n CommonSharedModule,\r\n NgbTooltipModule\r\n ],\r\n})\r\nexport class TangoManageUsersModule { }\r\n","/*\r\n * Public API Surface of tango-manage-users\r\n */\r\n\r\nexport * from './lib/tango-manage-users.module';\r\n\r\nexport * from './lib/components/tango-manage-users/tango-manage-users.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ManageUsersService","i2","i4.UserService","i5","i6","i7","i8.CustomSelectComponent","i1","i3.UserService","i1.UserService","i3","i4","i3.ExcelService","i5.UserService","i8","i4.ManageUsersService","i2.UserService","i8.RolesPermissionTableComponent","i6.BrandUserComponent","i2.ExcelService","i9.ViewteamsListComponent","i3.UsersListComponent","i4.TeamsListComponent","i5.ExcelService","i9.AuditUserListComponent","i5.UserTableComponent","i6.RolesPermissionTableComponent","i7.BrandUserComponent"],"mappings":"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"}