tango-app-ui-manage-stores 3.0.30-dev → 3.0.31-dev

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-stores.mjs","sources":["../../../projects/tango-manage-stores/src/lib/services/stores.service.ts","../../../projects/tango-manage-stores/src/lib/services/excel.service.ts","../../../projects/tango-manage-stores/src/lib/services/group.service.ts","../../../projects/tango-manage-stores/src/lib/components/create-group/create-group.component.ts","../../../projects/tango-manage-stores/src/lib/components/create-group/create-group.component.html","../../../projects/tango-manage-stores/src/lib/components/group-delete-popup/group-delete-popup.component.ts","../../../projects/tango-manage-stores/src/lib/components/group-delete-popup/group-delete-popup.component.html","../../../projects/tango-manage-stores/src/lib/components/tango-manage-groups/tango-manage-groups.component.ts","../../../projects/tango-manage-stores/src/lib/components/tango-manage-groups/tango-manage-groups.component.html","../../../projects/tango-manage-stores/src/lib/utils/filters/filters.component.ts","../../../projects/tango-manage-stores/src/lib/utils/filters/filters.component.html","../../../projects/tango-manage-stores/src/lib/components/group-details/group-details.component.ts","../../../projects/tango-manage-stores/src/lib/components/group-details/group-details.component.html","../../../projects/tango-manage-stores/src/lib/components/tango-manage-stores/tango-manage-stores.component.ts","../../../projects/tango-manage-stores/src/lib/components/tango-manage-stores/tango-manage-stores.component.html","../../../projects/tango-manage-stores/src/lib/components/add-stores/add-stores.component.ts","../../../projects/tango-manage-stores/src/lib/components/add-stores/add-stores.component.html","../../../projects/tango-manage-stores/src/lib/components/add-stores-form/add-stores-form.component.ts","../../../projects/tango-manage-stores/src/lib/components/add-stores-form/add-stores-form.component.html","../../../projects/tango-manage-stores/src/lib/guards/store-edit.guard.ts","../../../projects/tango-manage-stores/src/lib/tango-manage-stores-routing.module.ts","../../../projects/tango-manage-stores/src/lib/tango-manage-stores.module.ts","../../../projects/tango-manage-stores/src/public-api.ts","../../../projects/tango-manage-stores/src/tango-app-ui-manage-stores.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, catchError, map, throwError } from \"rxjs\";\r\nimport { Store, StoreResponse } from \"../interfaces/store.interface\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class StoresService {\r\n private storeApiUrl = \"\";\r\n // private userInfraApiUrl = \"\";\r\n private middlewareApiUrl = \"\";\r\n private ticketsApiUrl = \"\"; \r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.storeApiUrl = env.storeApiUrl;\r\n // this.userInfraApiUrl = env.userInfraApiUrl;\r\n this.middlewareApiUrl = env.middlewareApiUrl;\r\n this.ticketsApiUrl = env.ticketsApiUrl;\r\n }\r\n });\r\n }\r\n\r\n getStoreList(req: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.storeApiUrl}/storeInfraList`, req)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStoreListExport(req: any): Observable<any> {\r\n return this.http\r\n .post(`${this.storeApiUrl}/storeInfraList`, req, {\r\n responseType: \"arraybuffer\",\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStore(storeId: string): Observable<any> {\r\n return this.http.get<any>(`${this.storeApiUrl}/get-store/${storeId}`).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createStore(storeBody: StoreResponse): Observable<Store> {\r\n return this.http\r\n .post<Store>(`${this.storeApiUrl}/create-store`, storeBody)\r\n .pipe(\r\n map((response: any) => response)\r\n \r\n );\r\n }\r\n \r\n updateStore(storeId:string,storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.storeApiUrl}/update-store/${storeId}`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n storeBulkUpload(storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.storeApiUrl}/storeBulkUpload`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n getCountries(params?: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.middlewareApiUrl}/get-countries`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStates(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.middlewareApiUrl}/get-country-states`, {\r\n params: params,\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getCities(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.middlewareApiUrl}/get-state-cities`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAddress(latitude: number, longitude: number) {\r\n return fetch(\r\n `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}&key=AIzaSyDlOezgwQO0JviD0aizrCuN1FY9tcWfR3o`\r\n )\r\n .then((res) => {\r\n if (!res.ok) {\r\n throw new Error(\"Network response was not ok\");\r\n }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n if (data.status === \"OK\") {\r\n return data.results[0];\r\n } else {\r\n throw new Error(data.status);\r\n }\r\n });\r\n }\r\n\r\n createInfraTicket(req: any): Observable<any> {\r\n return this.http\r\n .post(`${this.ticketsApiUrl}/infra/createTicket`, req)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n bulkInfraTicket(req: any): Observable<any> {\r\n return this.http\r\n .post(`${this.ticketsApiUrl}/infra/bulkcreateTicket`, req)\r\n .pipe(\r\n map((response: any) => response)\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","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({providedIn: 'root' })\r\nexport class ExcelService {\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 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 public 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 { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { BehaviorSubject, Observable, 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 GroupService {\r\n private groupApiUrl='';\r\n private storeApiUrl='';\r\n groupComms = new BehaviorSubject<any>(null);\r\n \r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.groupApiUrl = env.groupApiUrl;\r\n this.storeApiUrl = env.storeApiUrl;\r\n }\r\n });\r\n }\r\n\r\n getGroups(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.groupApiUrl}/list`, {\r\n params: params,\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getGroup(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.groupApiUrl}/get-group`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createGroup(groupBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.groupApiUrl}/create`, groupBody, {\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateGroup(groupBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.groupApiUrl}/update`, groupBody,{\r\n }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStores(req: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.storeApiUrl}/get-stores`, { params: req })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\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","import { ChangeDetectorRef, Component, HostListener, Input, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n\r\n@Component({\r\n selector: \"lib-create-group\",\r\n templateUrl: \"./create-group.component.html\",\r\n styleUrl: \"./create-group.component.scss\",\r\n})\r\nexport class CreateGroupComponent implements OnInit {\r\n @Input() type: string;\r\n @Input() editGroup: any;\r\n\r\n operationType: string;\r\n groupForm: FormGroup;\r\n availableStores: any[];\r\n selectedValuesArray: any[] = [];\r\n group: any;\r\n Opendropdown: boolean;\r\n dataObject: any[] = [\r\n { Description: 'Stores', Stores: []}, \r\n ];\r\n $headerFilters: any;\r\n selectedText: string;\r\n\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n private fb: FormBuilder,\r\n private groupService: GroupService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService\r\n ) {\r\n this.createForm();\r\n this.gs.dataRangeValue.subscribe({\r\n next: (data: any) => {\r\n this.$headerFilters = data;\r\n this.getAvailableStores();\r\n },\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.operationType = this.type;\r\n }\r\n\r\n getGroup() {\r\n this.groupService\r\n .getGroup({\r\n clientId: this.editGroup?.clientId,\r\n groupName: this.editGroup?.groupName,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.group = res.data.result;\r\n this.loadGroup();\r\n } else {\r\n }\r\n },\r\n error: () => {},\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadGroup() {\r\n this.groupForm = this.fb.group({\r\n groupName: [this.group?.groupName, Validators.required],\r\n description: [this.group?.description],\r\n storeList: [this.group?.storeList, Validators.required],\r\n });\r\n this.loadSelectedStores(this.group?.storeList);\r\n if(this.operationType=='view') {\r\n this.groupForm.disable();\r\n }\r\n }\r\n\r\n createForm() {\r\n this.groupForm = this.fb.group({\r\n groupName: [\"\", Validators.required],\r\n description: [\"\"],\r\n storeList: [[], Validators.required],\r\n });\r\n }\r\n\r\n getAvailableStores() {\r\n this.groupService.getStores({ clientId: this.$headerFilters.client }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.availableStores = res.data.result;\r\n this.dataObject[0].Stores = res.data.result;\r\n this.cd.detectChanges();\r\n if (this.editGroup) {\r\n this.getGroup();\r\n } else {\r\n }\r\n } else {\r\n }\r\n },\r\n error: () => { \r\n this.availableStores = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close();\r\n }\r\n editgroup() {\r\n this.operationType = \"edit\";\r\n this.groupForm.enable();\r\n }\r\n\r\n groupSubmit() {\r\n if (this.operationType === \"add\") {\r\n if (this.groupForm.valid) {\r\n let groupValue: any = {...this.groupForm.value,...{clientId: this.$headerFilters.client}};\r\n if(!groupValue.description) {\r\n delete groupValue['description'];\r\n }\r\n this.groupService\r\n .createGroup(groupValue)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"Group added successfully\");\r\n this.activeModal.close();\r\n } else {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to add Group');\r\n }\r\n },\r\n error: () => {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to add Group');\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n } else {\r\n if (this.groupForm.valid) {\r\n let groupValue: any = {...this.groupForm.value,...{clientId: this.$headerFilters.client}};\r\n if(!groupValue.description) {\r\n delete groupValue['description'];\r\n }\r\n this.groupService.updateGroup(groupValue).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"Group updated successfully\");\r\n this.activeModal.close();\r\n } else {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to update Group');\r\n }\r\n },\r\n error: () => {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to update Group');\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n }\r\n }\r\n \r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const\r\n 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 \r\n opendropdown(e: MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\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 toggleCheckbox(event: any, store: any, index: number, subIndex: number) {\r\n const selectedStores = this.dataObject[index].Stores;\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index] || [];\r\n \r\n if (store === 'Select All') {\r\n const checked = event.target.checked;\r\n selectedStores.forEach((item: any) => item.checked = checked);\r\n this.selectedValuesArray[index] = checked ? [...selectedStores] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[index].findIndex((item: any) => item.storeName === store.storeName);\r\n isChecked ? this.selectedValuesArray[index].push(store) : this.selectedValuesArray[index].splice(storeIndex, 1);\r\n this.dataObject[index].Stores[subIndex].checked = isChecked;\r\n }\r\n \r\n const selectAllElement = document.getElementById(`selectall${index}`) as HTMLInputElement;\r\n if (selectAllElement) selectAllElement.checked = selectedStores.every((item: any) => item.checked);\r\n \r\n this.selectedValuesArray[index].forEach((store: any) => {\r\n const checkboxElement = document.getElementById(`option${store.storeName}`) as HTMLInputElement;\r\n if (checkboxElement) checkboxElement.checked = store.checked;\r\n });\r\n \r\n this.selectedText = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n this.groupForm.get('storeList')?.setValue(this.selectedValuesArray[0].map((x:any) => x.storeId));\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 if(stores.includes(store.storeId)) {\r\n store.checked = true;\r\n this.selectedValuesArray[0].push(store);\r\n }\r\n });\r\n this.selectedText = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n}","<div class=\"card 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=\"#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\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 Group</a>\r\n <div class=\"sub-title\">Please add your group 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 Group</a>\r\n <div class=\"sub-title\">Edit your group 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\">View Group</a>\r\n <div class=\"sub-title\">View your group details</div>\r\n </div>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <div *ngIf=\"operationType==='view'\" class=\"col-md-3 text-end px-0\" (click)=\"editgroup()\">\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 <form [formGroup]=\"groupForm\">\r\n <div class=\"row mt-8\">\r\n <div class=\"col-md-12 col-lg-12 mb-5\">\r\n <label for=\"groupName\" class=\"form-label\">Group Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"groupName\"\r\n formControlName=\"groupName\" \r\n [ngClass]=\"{ 'is-invalid': groupForm.get('groupName')?.touched && groupForm.get('groupName')?.hasError('required') }\">\r\n @if (groupForm.get('groupName')?.touched && groupForm.get('groupName')?.hasError('required')) {\r\n <small>Group Name is required</small>\r\n }\r\n </div>\r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of dataObject; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Stores</label>\r\n <input type=\"text\" class=\"form-control disable\" id=\"storeName\" [ngModel]=\"selectedText\" [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"Select Stores\" (click)=\"Dropdown('Stores',i,$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 (change)=\"toggleCheckbox($event,'Select All', i,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 (change)=\"toggleCheckbox($event,store,i,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 class=\"col-md-12 col-lg-12 mb-5\">\r\n <label for=\"description\" class=\"form-label\">Description</label>\r\n <textarea rows=\"5\" class=\"form-control\" id=\"description\" formControlName=\"description\"></textarea>\r\n </div>\r\n </div>\r\n <div *ngIf=\"operationType !== 'view'\" role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button type=\"button\" class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button type=\"submit\" [disabled]=\"!groupForm.valid\" id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\"\r\n (click)=\"groupSubmit()\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, Input } from \"@angular/core\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\n\r\n@Component({\r\n selector: \"lib-group-delete-popup\",\r\n templateUrl: \"./group-delete-popup.component.html\",\r\n styleUrl: \"./group-delete-popup.component.scss\",\r\n})\r\nexport class GroupDeletePopupComponent {\r\n @Input() deleteGroup: any;\r\n\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n private groupService: GroupService,\r\n private ts: ToastService\r\n ) {}\r\n\r\n cancel() {\r\n this.activeModal.close();\r\n }\r\n\r\n onDeleteGroup() {\r\n this.groupService\r\n .updateGroup({\r\n clientId: this.deleteGroup.clientId,\r\n groupName: this.deleteGroup.groupName,\r\n isActive: false,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.activeModal.close();\r\n this.ts.getSuccessToast(\"Group deleted successfully.\");\r\n } else {\r\n this.ts.getErrorToast(\"Unable to Delete Group!\");\r\n }\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Delete Group!\");\r\n },\r\n complete: () => {},\r\n });\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 {{deleteGroup?.groupName}} Group?</a>\r\n <span class=\"sub-title fw-normal mt-2\"> Are you sure you want to delete this group? This action cannot be undone.</span>\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 id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onDeleteGroup()\">Delete</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n</div>","import {\r\n Component,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n} from \"@angular/core\";\r\n// import { ConversionService } from 'tango-app-ui-auth/lib/components/tango-auth-signup/step/services/conversion.service';\r\nimport { CreateGroupComponent } from \"../create-group/create-group.component\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GroupDeletePopupComponent } from \"../group-delete-popup/group-delete-popup.component\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"lib-tango-manage-groups\",\r\n templateUrl: \"./tango-manage-groups.component.html\",\r\n styleUrl: \"./tango-manage-groups.component.scss\",\r\n})\r\nexport class TangoManageGroupsComponent implements OnInit, OnDestroy {\r\n @Output() dataEvent = new EventEmitter<string>();\r\n\r\n Opendropdown: boolean = false;\r\n groups: any[] = [];\r\n groupData: any;\r\n group_req: any;\r\n dataObject: any = [\r\n {\r\n Description: \"Account Status\",\r\n Issues: [\r\n { text: \"issue 1\", id: \"1\" },\r\n { text: \"issue 2\", id: \"2\" },\r\n { text: \"issue 3\", id: \"3\" },\r\n ],\r\n },\r\n {\r\n Description: \"Subscription Plan\",\r\n Issues: [\r\n { text: \"object 1\", id: \"1\" },\r\n { text: \"object 2\", id: \"2\" },\r\n { text: \"object 3\", id: \"3\" },\r\n ],\r\n },\r\n {\r\n Description: \"Processing Type\",\r\n Issues: [\r\n { text: \"select 1\", id: \"1\" },\r\n { text: \"select 2\", id: \"2\" },\r\n { text: \"select 3\", id: \"3\" },\r\n ],\r\n },\r\n {\r\n Description: \"Data Type\",\r\n Issues: [\r\n { text: \"select 1\", id: \"1\" },\r\n { text: \"select 2\", id: \"2\" },\r\n { text: \"select 3\", id: \"3\" },\r\n ],\r\n },\r\n ];\r\n showdropdown: any;\r\n selectedValues: string[] = [];\r\n selectedValuesArray: any[] = [];\r\n loading: boolean;\r\n searchValue: string = \"\";\r\n $headerFilters: any;\r\n private detach = new Subject();\r\n pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n paginationSizes: number[] = [10, 20, 30];\r\n constructor(\r\n private modalService: NgbModal,\r\n private groupService: GroupService,\r\n private cd: ChangeDetectorRef,\r\n public gs: GlobalStateService\r\n ) {}\r\n\r\n ngOnDestroy(): void { \r\n this.detach.next(true);\r\n this.detach.complete();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.detach)).subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n this.$headerFilters = data;\r\n this.group_req = { clientId: this.$headerFilters.client };\r\n this.getGroups();\r\n }\r\n }\r\n })\r\n }\r\n\r\n getGroups() {\r\n this.loading = true;\r\n if(this.group_req.searchValue==\"\" && this.group_req.searchValue!=undefined) {\r\n delete this.group_req['searchValue'];\r\n }\r\n this.groupService.getGroups(this.group_req).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.groupData = res.data;\r\n this.groups = res.data.result;\r\n this.pagination = {\r\n offset: res.data?.offset\r\n ? res?.data.offset\r\n : this.pagination.offset,\r\n limit: res.data?.limit ? res?.data.limit : this.pagination.limit,\r\n totalCount: res.data.count,\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.loading=false;\r\n this.cd.detectChanges();\r\n } else {\r\n this.groups = [];\r\n this.loading=false;\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.cd.detectChanges();\r\n }\r\n this.loading=false;\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.groups = [];\r\n this.loading=false;\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n searchData() {\r\n this.group_req = {\r\n ...this.group_req,\r\n ...{ searchValue: this.searchValue },\r\n };\r\n this.getGroups();\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.group_req.offset = Number(pageOffset);\r\n this.pagination.offset = Number(pageOffset);\r\n this.getGroups();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.group_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.group_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.getGroups();\r\n }\r\n // isLinkActive(link: string): boolean {\r\n // return this.router.isActive(link, true);\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 groupsDetials(val: any) {\r\n const dataToGroup = \"Group Details Value\";\r\n this.dataEvent.emit(dataToGroup);\r\n this.groupService.groupComms.next(val);\r\n }\r\n\r\n toggleCheckbox(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index] || [];\r\n const selectedValues = this.selectedValuesArray[index]; // Retrieve selected values array for the current dropdown index\r\n\r\n if (issue === \"Select All\") {\r\n const currentIssues = this.dataObject[index].Issues.map(\r\n (item: any) => item.text\r\n );\r\n if (selectedValues.length === currentIssues.length) {\r\n // If all items are already selected, deselect all\r\n this.selectedValuesArray[index] = [];\r\n } else {\r\n // Otherwise, select all items\r\n this.selectedValuesArray[index] = [...currentIssues];\r\n }\r\n } else {\r\n if (selectedValues.includes(issue)) {\r\n this.selectedValuesArray[index] = selectedValues.filter(\r\n (item: any) => item !== issue\r\n ); // Deselect the individual item if already selected\r\n } else {\r\n this.selectedValuesArray[index].push(issue); // Select the individual item if not already selected\r\n }\r\n }\r\n\r\n // Update \"Select All\" checkbox status based on selected values\r\n const selectAllId = `selectall${index}`;\r\n const selectAllElement = document.getElementById(\r\n selectAllId\r\n ) as HTMLInputElement;\r\n if (selectAllElement) {\r\n selectAllElement.checked = selectedValues.length === currentIssues.length;\r\n }\r\n\r\n // Update checkboxes based on selected values\r\n currentIssues.forEach((item: string) => {\r\n const isChecked = this.selectedValuesArray[index].includes(item);\r\n const checkboxId = `option${item}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n Reset() {\r\n // this.dataObject = [];\r\n this.Opendropdown = false;\r\n }\r\n\r\n Apply() {\r\n for (let i = 0; i < this.selectedValuesArray.length; i++) {\r\n const selectedValues = this.selectedValuesArray[i];\r\n const issues = this.dataObject[i].Issues;\r\n\r\n if (selectedValues) {\r\n this.selectedValuesArray[i] = selectedValues.map((selectedId: any) => {\r\n const issue = issues.find(\r\n (issueItem: any) => issueItem.text === selectedId\r\n );\r\n return issue ? issue : \"\"; // Get the text corresponding to the id\r\n });\r\n }\r\n }\r\n this.Opendropdown = false;\r\n }\r\n\r\n createGroup(type: any, group?: any) {\r\n const modalRef = this.modalService.open(CreateGroupComponent, {\r\n centered: true,\r\n size: \"md\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.type = type;\r\n if (group) {\r\n modalRef.componentInstance.editGroup = group;\r\n }\r\n modalRef.result.then((res) => {\r\n this.getGroups();\r\n }, (reason) => {\r\n this.getGroups();\r\n });\r\n }\r\n\r\n deleteGroups(data: any, group: any) {\r\n const modalRef = this.modalService.open(GroupDeletePopupComponent, {\r\n centered: true,\r\n size: \"md\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.type = data;\r\n modalRef.componentInstance.deleteGroup = group;\r\n modalRef.result.then((res) => {\r\n this.getGroups();\r\n }, (reason) => {\r\n\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-10\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Groups</span>\r\n <span class=\"text-sub mb-2\">{{groupData?.count || 0}} total groups</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 @if (groups.length) {\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 @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\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=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create Group</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && groups.length\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\" *ngFor=\"let obj of groups\">\r\n <div class=\"border-val mb-7 py-7\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span><a class=\"role-title my-2 cursor-pointer\" (click)=\"groupsDetials(obj)\">{{obj.groupName ||\r\n 'NA'}}</a></span>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"px-5 cursor-pointer\" (click)=\"createGroup('view',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M0.833496 9.99999C0.833496 9.99999 4.16683 3.33333 10.0002 3.33333C15.8335 3.33333 19.1668 9.99999 19.1668 9.99999C19.1668 9.99999 15.8335 16.6667 10.0002 16.6667C4.16683 16.6667 0.833496 9.99999 0.833496 9.99999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 9.99999C12.5002 8.61928 11.3809 7.49999 10.0002 7.49999C8.61945 7.49999 7.50016 8.61928 7.50016 9.99999C7.50016 11.3807 8.61945 12.5 10.0002 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n @if ((gs.userAccess | async)?.manage_stores_isDelete) {\r\n <span class=\"cursor-pointer\" (click)=\"deleteGroups('delete',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 5.00001H4.16667M4.16667 5.00001H17.5M4.16667 5.00001V16.6667C4.16667 17.1087 4.34226 17.5326 4.65482 17.8452C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8452C15.6577 17.5326 15.8333 17.1087 15.8333 16.6667V5.00001H4.16667ZM6.66667 5.00001V3.33334C6.66667 2.89131 6.84226 2.46739 7.15482 2.15483C7.46738 1.84227 7.89131 1.66667 8.33333 1.66667H11.6667C12.1087 1.66667 12.5326 1.84227 12.8452 2.15483C13.1577 2.46739 13.3333 2.89131 13.3333 3.33334V5.00001M8.33333 9.16667V14.1667M11.6667 9.16667V14.1667\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"sub-title fw-semibold my-5\">{{obj.description || 'NA'}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" />\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.storeCount || '--'}} Stores</span>\r\n </div>\r\n <div><span class=\"me-3\"><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?.userCount || '--'}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <ng-container *ngIf=\"loading && !groups.length\" >\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 </ng-container>\r\n <!-- No group Illustration -->\r\n <div *ngIf=\"!loading && !groups?.length\" class=\"d-flex justify-content-center my-20 w-100\">\r\n <div class=\"w-350px d-grid align-items-center text-center\">\r\n <img class=\"mx-auto\" src=\"./assets/tango/Images/storesIllustration.png\" alt=\"\">\r\n\r\n <span class=\"illustcontent\"> Start by creating a group</span>\r\n <span class=\"text-sub\">You can view all your groups here</span>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" class=\"btn btn-primary w-100 mt-10\">\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=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n Create Group\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <lib-group-details></lib-group-details> -->","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\n\r\n@Component({\r\n selector: \"lib-filters-custom\",\r\n templateUrl: \"./filters.component.html\",\r\n styleUrl: \"./filters.component.scss\",\r\n})\r\nexport class FiltersComponent implements OnInit {\r\n @Input() dataObject: any[];\r\n @Output() AppliedFilters = new EventEmitter<any>();\r\n\r\n Opendropdown: boolean = false;\r\n\r\n showdropdown: any;\r\n selectedValues: string[] = [];\r\n selectedValuesArray: any[] = [];\r\n searchValue: any;\r\n backUpArray: any[] = [];\r\n noFilter: boolean = false;\r\n responseArray: any[] = [];\r\n cityIndex: number;\r\n stateIndex: number;\r\n countryIndex: number;\r\n\r\n constructor(\r\n private storesService: StoresService,\r\n private cd: ChangeDetectorRef,\r\n ) {}\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(\".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 ngOnInit() {\r\n this.backUpArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.countryIndex = this.dataObject.findIndex(option => option.Description === \"Country\");\r\n this.stateIndex = this.dataObject.findIndex(option => option.Description === \"State\");\r\n this.cityIndex = this.dataObject.findIndex(option => option.Description === \"City\");\r\n }\r\n\r\n opendropdown(e: MouseEvent) {\r\n e.stopPropagation(); \r\n this.dataObject.forEach((item: any, index: any) => {\r\n this.selectedValuesArray[index] = item.selected.map((x: any) => x.text);\r\n item.Issues.forEach((el: any) => {\r\n const isChecked = item.selected.includes(item.text);\r\n const checkboxId = `option${item.text}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n });\r\n this.cd.detectChanges();\r\n this.Opendropdown = !this.Opendropdown;\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; // Close other dropdowns\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n\r\n toggleCheckboxs(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n const selectedValues = this.selectedValuesArray[index] || [];\r\n\r\n if (issue === \"Select All\") {\r\n const currentIssueTexts = currentIssues.map((item: any) => item.text);\r\n this.selectedValuesArray[index] =\r\n selectedValues.length === currentIssueTexts.length\r\n ? []\r\n : [...currentIssueTexts];\r\n } else {\r\n const updatedSelectedValues = new Set(selectedValues);\r\n if (updatedSelectedValues.has(issue)) {\r\n updatedSelectedValues.delete(issue);\r\n } else {\r\n updatedSelectedValues.add(issue);\r\n }\r\n this.selectedValuesArray[index] = Array.from(updatedSelectedValues);\r\n }\r\n\r\n const selectAllId = `selectall${index}`;\r\n const selectAllElement = document.getElementById(\r\n selectAllId\r\n ) as HTMLInputElement;\r\n if (selectAllElement) {\r\n selectAllElement.checked = selectedValues.length === currentIssues.length;\r\n }\r\n\r\n currentIssues.forEach((item: any) => {\r\n const isChecked = selectedValues.includes(item.text);\r\n const checkboxId = `option${item.text}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n toggleCheckbox(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n const selectedValues = this.selectedValuesArray[index] || [];\r\n if (selectedValues.includes(issue)) {\r\n this.selectedValuesArray[index] = selectedValues.filter(\r\n (item: any) => item !== issue\r\n );\r\n } else {\r\n this.selectedValuesArray[index] = [issue];\r\n }\r\n currentIssues.forEach((item: any) => {\r\n const isChecked = selectedValues.includes(item.text);\r\n const checkboxId = `option${item.text}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n countrySelection(issue: any, i: number) {\r\n if(this.dataObject[i].Description == 'Country') {\r\n if (this.selectedValuesArray[i]?.includes(issue.text)) {\r\n this.getStates(issue.id);\r\n } else {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n }\r\n }\r\n }\r\n\r\n stateSelection(issue: any, i: number) {\r\n if(this.dataObject[i].Description == 'State') {\r\n if (this.selectedValuesArray[i]?.includes(issue.text)) {\r\n const country = this.dataObject[this.countryIndex].Issues.filter((c:any)=>c.text == this.selectedValuesArray[this.countryIndex][0])[0];\r\n if(country) {\r\n this.getCities(country.id,issue.id);\r\n }\r\n } else {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n }\r\n }\r\n }\r\n\r\n getStates(countryCode: string) {\r\n this.storesService.getStates({ country: countryCode }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.dataObject[this.stateIndex].Issues = extractedData;\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n this.getCities(countryCode, extractedData[0].id);\r\n } else {\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n getCities(countryCode: string, stateCode: string) {\r\n this.storesService\r\n .getCities({ country: countryCode, state: stateCode })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.dataObject[this.cityIndex].Issues = extractedData;\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n } else {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n Reset() {\r\n this.selectedValuesArray = [];\r\n this.responseArray.forEach((item: any, index: any) => {\r\n this.responseArray[index].selected = []\r\n });\r\n this.dataObject.forEach((item: any, index: any) => {\r\n this.dataObject[index].selected = []\r\n });\r\n this.backUpArray.forEach((item: any, index: any) => {\r\n this.backUpArray[index].selected = []\r\n });\r\n }\r\n\r\n searchData(event: any, i: any) {\r\n const filteredIssues = this.backUpArray[i].Issues.filter((item: any) =>\r\n new RegExp(event.target.value, \"i\").test(item.text)\r\n );\r\n this.dataObject[i].Issues = filteredIssues;\r\n if (filteredIssues.length) {\r\n this.noFilter = false;\r\n } else {\r\n this.noFilter = true;\r\n }\r\n }\r\n\r\n Apply() {\r\n for (let i = 0; i < this.selectedValuesArray.length; i++) {\r\n const selectedValues = this.selectedValuesArray[i];\r\n const issues = this.dataObject[i].Issues;\r\n\r\n if (selectedValues) {\r\n this.selectedValuesArray[i] = selectedValues.map((selectedId: any) => {\r\n const issue = issues.find(\r\n (issueItem: any) => issueItem.text === selectedId\r\n );\r\n return issue ? issue : \"\"; // Get the text corresponding to the id\r\n });\r\n }\r\n }\r\n this.Opendropdown = false;\r\n this.selectedValuesArray.forEach((item: any, index: any) => {\r\n this.selectedValuesArray[index] = item;\r\n });\r\n this.responseArray.forEach((item: any, index: any) => {\r\n delete item.isOpen;\r\n item.selected = this.selectedValuesArray[index]\r\n ? this.selectedValuesArray[index]\r\n : [];\r\n });\r\n this.AppliedFilters.emit(this.responseArray);\r\n }\r\n}\r\n","<div class=\"position-relative\">\r\n \r\n <button type=\"button\" (click)=\"opendropdown($event)\" \r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n \r\n <div class=\"card p-5 dropdown1 position-absolute\" *ngIf=\"Opendropdown\">\r\n <span class=\"dropdown-title\">Filter Options</span>\r\n <div class=\"w-100 border border-gray mt-3\"></div>\r\n <div class=\"py-3\" *ngFor=\"let item of dataObject; let i = index\">\r\n <div class=\"dropdown form-select position-relative d-flex justify-content-between\" (click)=\"Dropdown(item.Description,i,$event)\">\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ? selectedValuesArray[i]?.length + ' ' + item.Description.split(' ').pop() + ' Selected' : item.Description }}</span> -->\r\n <span class=\"\">{{item.Description}}</span> <span *ngIf=\"selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined && selectedValuesArray[i]?.length !== 0\" class=\"badge badge-light-default\">{{selectedValuesArray[i]?.length}}</span>\r\n </div>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute w-100\">\r\n @if(item.multiDropdown) {\r\n <div class=\"form-check d-flex align-items-center py-3 pt-3 ps-0\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\" [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckboxs('Select All', i)\">\r\n <label class=\"form-check-label px-2\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n \r\n <div class=\"border border-gray mt-3 \"></div>\r\n \r\n <div class=\"mt-3 d-flex align-items-center\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3 mt-2\">\r\n <svg 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 </span>\r\n <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\" class=\"form-control searchinput ps-14 py-2 me-2 mt-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n </div>\r\n \r\n <div *ngFor=\"let issue of item.Issues;let j=index;\" class=\"form-check d-flex align-items-center py-3 pt-3 ps-0 mt-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\" [checked]=\"selectedValuesArray[i]?.includes(issue.text)\"\r\n (change)=\"toggleCheckboxs(issue.text,i)\">\r\n <label class=\"form-check-label px-2\" for=\"option{{issue.text}}\">\r\n {{ issue.text }}\r\n </label>\r\n </div>\r\n <div class=\"mt-5 d-flex justify-content-center\">\r\n <span class=\"form-check-label\" *ngIf=\"!item.Issues && !item.Issues.length\"> No filters available</span>\r\n </div>\r\n } @else {\r\n <div class=\"mt-3 d-flex align-items-center\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3 mt-2\">\r\n <svg 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 </span>\r\n <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\" class=\"form-control searchinput ps-14 py-2 me-2 mt-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n </div>\r\n \r\n <div *ngFor=\"let issue of item.Issues;let j=index;\" class=\"form-check d-flex align-items-center py-3 pt-3 ps-0 mt-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\" [checked]=\"selectedValuesArray[i]?.includes(issue.text)\"\r\n (change)=\"toggleCheckbox(issue.text,i);countrySelection(issue,i);stateSelection(issue,i);\">\r\n <label class=\"form-check-label px-2\" for=\"option{{issue.text}}\">\r\n {{ issue.text }}\r\n </label>\r\n </div>\r\n <div *ngIf=\"!item.Issues.length\" class=\"mt-5 d-flex justify-content-center\">\r\n <span class=\"form-check-label\" > No filters available</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n \r\n <div role=\"group\" class=\"d-flex justify-content-between\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n","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 { Router } from \"@angular/router\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from \"rxjs\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\n\r\n@Component({\r\n selector: \"lib-group-details\",\r\n templateUrl: \"./group-details.component.html\",\r\n styleUrl: \"./group-details.component.scss\",\r\n})\r\nexport class GroupDetailsComponent implements OnInit, OnDestroy {\r\n // Table\r\n filterOptions: any[];\r\n searchValue: any;\r\n storeList: any[] = [];\r\n storeList_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 columns: any[];\r\n paginationSizes: number[] = [10, 20, 30];\r\n receivedData: string = \"stores\";\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private detach = new Subject();\r\n\r\n @Output() dataEvent = new EventEmitter<string>();\r\n group: any;\r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private storesService: StoresService,\r\n private changeDetector: ChangeDetectorRef,\r\n private groupService: GroupService,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private router: Router,\r\n ) {\r\n this.groupService.groupComms.subscribe({\r\n next: (group: any) => {\r\n this.group = group;\r\n },\r\n });\r\n this.initSearch();\r\n }\r\n\r\n backToGroup() {\r\n const dataToGroup = \"groups\";\r\n this.dataEvent.emit(dataToGroup);\r\n }\r\n\r\n initSearch() {\r\n this.searchInput.valueChanges\r\n .pipe(debounceTime(1000), distinctUntilChanged())\r\n .subscribe((e) => {\r\n this.storeList_req.searchValue = e;\r\n this.loadTable();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.detach.next(true);\r\n this.detach.complete();\r\n }\r\n\r\n receiveGroupData(data: string) {\r\n this.receivedData = data;\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Stores\");\r\n this.pageInfo.setDescription(\"To optimize and improve existing algorithm\");\r\n this.pageInfo.setBreadcrumbs([\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: false },\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: true },\r\n ]);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = [\r\n {\r\n Description: \"Completeness\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"25%\", id: \"25\" },\r\n { text: \"50%\", id: \"50\" },\r\n { text: \"75%\", id: \"75\" },\r\n { text: \"100%\", id: \"100\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Status\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Live\", id: \"live\" },\r\n { text: \"Onboarded\", id: \"onboarded\" },\r\n { text: \"Paired\", id: \"paired\" },\r\n { text: \"Installation Failed\", id: \"installationfailed\" },\r\n { text: \"Infra Issue\", id: \"infra\" },\r\n { text: \"Deactivated\", id: \"deactivated\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Issue\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Application Issue\", id: \"application\" },\r\n { text: \"Camera Issue\", id: \"camera\" },\r\n { text: \"Internet Issue\", id: \"internet\" },\r\n { text: \"Store Operation\", id: \"store\" },\r\n { text: \"System Issue\", id: \"system\" },\r\n ],\r\n selected: [],\r\n },\r\n // {\r\n // Description: \"Issue Types\",\r\n // multiDropdown: true,\r\n // Issues: [\r\n // { text: \"Pending from Client\", id: \"pendingclient\" },\r\n // { text: \"Pending from Tango\", id: \"pendingtango\" },\r\n // ],\r\n // selected: []\r\n // },\r\n {\r\n Description: \"Country\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"State\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"City\",\r\n multiDropdown: true,\r\n Issues: [],\r\n selected: [],\r\n },\r\n ];\r\n this.columns = [\r\n {\r\n column: \"storeId\",\r\n direction: 1,\r\n },\r\n {\r\n column: \"city\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"spocContact\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"downTime\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"status\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"statusDetail\",\r\n direction: 0,\r\n },\r\n ];\r\n this.gs.dataRangeValue.pipe(takeUntil(this.detach)).subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.$headerFilters = data;\r\n this.getCountries();\r\n this.storeList_req = {\r\n fromDate: this.$headerFilters.date?.startDate\r\n ? this.$headerFilters.date.startDate\r\n : new Date()\r\n .toISOString()\r\n .split(\"T\")[0],\r\n toDate: this.$headerFilters.date?.endDate\r\n ? this.$headerFilters.date.endDate\r\n : new Date()\r\n .toISOString()\r\n .split(\"T\")[0],\r\n clientId: [this.$headerFilters.client],\r\n offset: 1,\r\n limit: 10,\r\n sortColumName: \"storeId\",\r\n sortBy: 1,\r\n searchValue: \"\",\r\n export: false,\r\n groupName: this.group.groupName\r\n };\r\n this.loadTable();\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: () => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n\r\n this.setPageData();\r\n }\r\n\r\n searchStore() {\r\n this.loadTable();\r\n }\r\n\r\n Selecttabs(value: any) {\r\n this.receivedData = value;\r\n }\r\n\r\n applyFilter(appliedFilters: any) {\r\n let issuesObject: any = {\r\n completeness: [],\r\n status: [],\r\n issue: [],\r\n country: [],\r\n state: [],\r\n city: [],\r\n };\r\n appliedFilters.forEach((option: any, index: number) => {\r\n this.filterOptions[index].selected = option.selected;\r\n const key = option.Description.toLowerCase();\r\n if (key === \"country\" || key === \"state\" || key === \"city\") {\r\n issuesObject[key] = option.selected.map((x: any) => x.text);\r\n } else {\r\n issuesObject[key] = option.selected.map((x: any) => x.id);\r\n }\r\n });\r\n this.changeDetector.detectChanges();\r\n this.storeList_req = { ...this.storeList_req, ...issuesObject };\r\n this.loadTable();\r\n }\r\n\r\n getCountries() {\r\n const countryIndex: number = this.filterOptions.findIndex(\r\n (option) => option.Description === \"Country\"\r\n );\r\n this.storesService.getCountries().subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.filterOptions[countryIndex].Issues = extractedData;\r\n } else {\r\n this.filterOptions[countryIndex].Issues = [];\r\n }\r\n },\r\n error: () => {\r\n this.filterOptions[countryIndex].Issues = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.storesService.getStoreList(this.storeList_req).subscribe({\r\n next: (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.storeList = res.data.result;\r\n this.pagination = {\r\n offset: res.data?.offset\r\n ? res?.data.offset\r\n : this.pagination.offset,\r\n limit: res.data?.limit ? res?.data.limit : this.pagination.limit,\r\n totalCount: res.data.count,\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.storeList = [];\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: () => {\r\n this.storeList = [];\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 complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n this.storeList_req.offset = 1;\r\n this.storeList_req.limit = 10000;\r\n this.storeList_req.export = true;\r\n this.storesService\r\n .getStoreListExport(this.storeList_req)\r\n .subscribe((res: any) => {\r\n if (res) {\r\n this.excelService.saveAsExcelFile(res, \"storesList\");\r\n }\r\n });\r\n }\r\n\r\n navigateToStore(storeId: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = storeId;\r\n // this.gs.dataRangeValue.next(data);\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`manage/stores/${storeId}/settings`]);\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.storeList_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.storeList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.storeList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.loadTable();\r\n }\r\n\r\n isLinkActive(link: string): boolean {\r\n return this.router.isActive(link, true);\r\n }\r\n\r\n onSort(column: string) {\r\n this.columns.forEach((el: any, i: number) => {\r\n if (el.column == column) {\r\n this.storeList_req.sortColumName = column;\r\n if (this.columns[i].direction == 0) {\r\n this.columns[i].direction = 1;\r\n this.storeList_req.sortBy = 1;\r\n } else if (this.columns[i].direction == 1) {\r\n this.columns[i].direction = -1;\r\n this.storeList_req.sortBy = -1;\r\n } else if (this.columns[i].direction == -1) {\r\n this.columns[i].direction = 0;\r\n this.storeList_req.sortBy = -1;\r\n this.storeList_req.sortColumName = \"storeId\";\r\n }\r\n } else {\r\n this.columns[i].direction = 0;\r\n }\r\n });\r\n this.loadTable();\r\n }\r\n\r\n colDirection(column: string): number {\r\n return this.columns.filter((el) => el.column == column)[0].direction;\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 goToEdgeApp(store: any) {\r\n this.router.navigate([\"/manage/stores/edge-app/edge-email-journey\"], {\r\n queryParams: { store: store.store },\r\n });\r\n }\r\n\r\n deactivateStore(store: any) {}\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <div class=\"d-flex justify-content-left align-items-center\">\r\n <div class=\"backArrow d-flex justify-content-center align-items-center me-5 ml-0\">\r\n <button (click)=\"backToGroup()\"\r\n class=\"btn btn-default mx-2 btn-outline-default rounded-3 text-nowrap\"><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 <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label\">{{group?.groupName}}</span>\r\n <span class=\"text-sub mb-2\">{{ pagination.totalCount ? pagination.totalCount : '--'}} stores in this group</span>\r\n </h3>\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\" [formControl]=\"searchInput\" class=\"form-control ps-14 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- filter Start -->\r\n <lib-filters-custom [dataObject]=\"filterOptions\"\r\n (AppliedFilters)=\"applyFilter($event)\"></lib-filters-custom>\r\n <!-- filter End -->\r\n @if ((gs.userAccess | async)?.manage_stores_isDownload) { \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 </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"!loading && !noData\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead class=\"cursor-pointer\">\r\n <tr>\r\n <!-- <th>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </th> -->\r\n <th (click)=\"onSort('storeId')\">Store Info\r\n <span *ngIf=\"colDirection('storeId')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('storeId')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('city')\">Location\r\n <span *ngIf=\"colDirection('city')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('city')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('spocContact')\">SPOC Contact <span>\r\n <span *ngIf=\"colDirection('spocContact')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('spocContact')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('downTime')\">Downtime <span>\r\n <span *ngIf=\"colDirection('downTime')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('downTime')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('status')\">Status <span>\r\n <span *ngIf=\"colDirection('status')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('status')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('statusDetail')\">Status Detail <span>\r\n <span *ngIf=\"colDirection('statusDetail')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('statusDetail')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let store of storeList;let i=index;\">\r\n <tr>\r\n <!-- <td>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </td> -->\r\n <td class=\"cursor-pointer\" (click)=\"navigateToStore(store?.storeId);\"> \r\n <div class=\"table-title\">\r\n <span class=\"txt-light-primary\"> \r\n {{store?.storeName}}\r\n </span>\r\n </div>\r\n <div class=\"table-sub storeId\">ID : {{store?.storeId}}\r\n <span class=\"my-1 mx-1\">\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4\" cy=\"4\" r=\"3\" fill=\"#12B76A\" />\r\n </svg>\r\n {{store?.progress ? store?.progress : 20}}%\r\n <div class=\"h-5px w-100 bg-light mt-2\">\r\n <div class=\"bg-success rounded h-5px\" role=\"progressbar\" [ngStyle]=\"{ width: (store?.progress ? store?.progress : 20) + '%' }\"\r\n aria-valuemin=\"20\" aria-valuemax=\"100\"></div>\r\n </div>\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"w-200px\">\r\n @if (store?.city) {\r\n <div class=\"table-sub\">{{store?.city}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n @if (store?.country && store?.state) {\r\n <div class=\"table-sub\">{{store?.state}},{{store?.country}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n </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 {{store?.spocEmail.slice(0,2) | uppercase }} \r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"ms-2\">\r\n <div class=\"table-title\">{{store?.spocEmail || 'NA'}}</div>\r\n <div class=\"table-sub\">{{store?.spocContact || 'NA'}}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"fw-semibold\">{{store?.downTime}}</td>\r\n <td><span class=\"badge badge-light-primary\">{{store?.status || 'NA'}}</span></td>\r\n <td>\r\n <div class=\"table-title\">{{store?.statusDetail || 'NA'}}</div>\r\n <!-- <div class=\"table-sub\">Pending from Client</div> -->\r\n </td>\r\n <td>\r\n <button type=\"button\" (click)=\"goToEdgeApp(store)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>Config</span>\r\n </button>\r\n <span class=\"dropdown\">\r\n <button class=\"options-class\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M18.0001 18.8334C18.4603 18.8334 18.8334 18.4603 18.8334 18C18.8334 17.5398 18.4603 17.1667 18.0001 17.1667C17.5398 17.1667 17.1667 17.5398 17.1667 18C17.1667 18.4603 17.5398 18.8334 18.0001 18.8334Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 13C18.4603 13 18.8334 12.6269 18.8334 12.1667C18.8334 11.7065 18.4603 11.3334 18.0001 11.3334C17.5398 11.3334 17.1667 11.7065 17.1667 12.1667C17.1667 12.6269 17.5398 13 18.0001 13Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 24.6667C18.4603 24.6667 18.8334 24.2936 18.8334 23.8334C18.8334 23.3731 18.4603 23 18.0001 23C17.5398 23 17.1667 23.3731 17.1667 23.8334C17.1667 24.2936 17.5398 24.6667 18.0001 24.6667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li (click)=\"navigateToStore(store?.storeId);\"><button class=\"dropdown-item\"\r\n type=\"button\">Edit Store</button></li>\r\n <li><button class=\"dropdown-item\" (click)=\"deactivateStore(store)\"\r\n type=\"button\">Deactivate</button></li>\r\n </ul>\r\n </span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [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 </ng-container>\r\n <ng-container *ngIf=\"loading && !noData\">\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 </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\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>\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { PageInfoService } from \"tango-app-ui-global\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { Subject, debounceTime, distinctUntilChanged, filter, takeUntil } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nexport interface pagination {\r\n limit: number;\r\n offset: number;\r\n totalCount: number;\r\n}\r\n\r\n@Component({\r\n selector: \"lib-tango-manage-stores\",\r\n templateUrl: \"./tango-manage-stores.component.html\",\r\n styleUrl: \"./tango-manage-stores.component.scss\",\r\n})\r\nexport class TangoManageStoresComponent implements OnInit, OnDestroy {\r\n // Table\r\n filterOptions: any[];\r\n searchValue: any;\r\n storeList: any[] = [];\r\n storeList_req: any;\r\n pagination: pagination = {\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 columns: any[];\r\n paginationSizes: number[] = [10, 20, 30];\r\n receivedData: string = \"stores\";\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private detach = new Subject();\r\n user: any;\r\n\r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private storesService: StoresService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private router: Router,\r\n private ts: ToastService\r\n ) {\r\n this.initSearch();\r\n \r\n }\r\n\r\n initSearch() {\r\n this.user = JSON.parse(localStorage.getItem('user-info') || '{}')\r\n this.searchInput.valueChanges\r\n .pipe(debounceTime(1000), distinctUntilChanged())\r\n .subscribe((e) => {\r\n this.storeList_req.searchValue = e;\r\n this.loadTable();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.detach.next(true);\r\n this.detach.complete();\r\n }\r\n\r\n receiveGroupData(data: string) {\r\n this.receivedData = data;\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Stores\");\r\n this.pageInfo.setDescription(\"To optimize and improve existing algorithm\");\r\n this.pageInfo.setBreadcrumbs([\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: false },\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: true },\r\n ]);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = [\r\n {\r\n Description: \"Completeness\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"20%\", id: \"20\" },\r\n { text: \"40%\", id: \"40\" },\r\n { text: \"60%\", id: \"60\" },\r\n { text: \"80%\", id: \"80\" },\r\n { text: \"100%\", id: \"100\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Status\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Live\", id: \"live\" },\r\n { text: \"Onboarded\", id: \"onboarded\" },\r\n { text: \"Paired\", id: \"paired\" },\r\n { text: \"Installation Failed\", id: \"installationfailed\" },\r\n { text: \"Infra Issue\", id: \"infra\" },\r\n { text: \"Deactivated\", id: \"deactivated\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Issue\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Application Issue\", id: \"application\" },\r\n { text: \"Camera Issue\", id: \"camera\" },\r\n { text: \"Internet Issue\", id: \"internet\" },\r\n { text: \"Store Operation\", id: \"store\" },\r\n { text: \"System Issue\", id: \"system\" },\r\n ],\r\n selected: [],\r\n },\r\n // {\r\n // Description: \"Issue Types\",\r\n // multiDropdown: true,\r\n // Issues: [\r\n // { text: \"Pending from Client\", id: \"pendingclient\" },\r\n // { text: \"Pending from Tango\", id: \"pendingtango\" },\r\n // ],\r\n // selected: []\r\n // },\r\n {\r\n Description: \"Country\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"State\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"City\",\r\n multiDropdown: true,\r\n Issues: [],\r\n selected: [],\r\n },\r\n ];\r\n this.columns = [\r\n {\r\n column: \"storeId\",\r\n direction: 1,\r\n },\r\n {\r\n column: \"city\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"spocContact\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"downTime\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"status\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"statusDetail\",\r\n direction: 0,\r\n },\r\n ];\r\n this.gs.dataRangeValue.pipe(takeUntil(this.detach)).subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.$headerFilters = data;\r\n this.getCountries();\r\n this.storeList_req = {\r\n // fromDate: this.$headerFilters.date?.startDate\r\n // ? this.$headerFilters.date.startDate\r\n // : new Date()\r\n // .toISOString()\r\n // .split(\"T\")[0],\r\n // toDate: this.$headerFilters.date?.endDate\r\n // ? this.$headerFilters.date.endDate\r\n // : new Date()\r\n // .toISOString()\r\n // .split(\"T\")[0],\r\n clientId: [this.$headerFilters.client],\r\n offset: 1,\r\n limit: 10,\r\n sortColumName: \"storeId\",\r\n sortBy: -1,\r\n searchValue: \"\",\r\n export: false,\r\n };\r\n this.loadTable();\r\n } \r\n },\r\n error: () => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n const isStoresActive = this.router.isActive(\"/manage/stores\", true);\r\n const isGroupsActive = this.router.isActive(\r\n \"/manage/stores/groups\",\r\n true\r\n );\r\n if (isStoresActive) {\r\n }\r\n if (isGroupsActive) {\r\n }\r\n });\r\n\r\n this.setPageData();\r\n }\r\n\r\n searchStore() {\r\n this.loadTable();\r\n }\r\n\r\n Selecttabs(value: any) {\r\n this.receivedData = value;\r\n }\r\n\r\n applyFilter(appliedFilters: any) {\r\n let issuesObject: any = {\r\n completeness: [],\r\n status: [],\r\n issue: [],\r\n country: [],\r\n state: [],\r\n city: [],\r\n };\r\n appliedFilters.forEach((option: any, index: number) => {\r\n this.filterOptions[index].selected = option.selected;\r\n const key = option.Description.toLowerCase();\r\n if (key === \"country\" || key === \"state\" || key === \"city\") {\r\n issuesObject[key] = option.selected.map((x: any) => x.text);\r\n } else {\r\n issuesObject[key] = option.selected.map((x: any) => x.id);\r\n }\r\n });\r\n this.changeDetector.detectChanges();\r\n this.storeList_req = { ...this.storeList_req, ...issuesObject };\r\n this.loadTable();\r\n }\r\n\r\n getCountries() {\r\n const countryIndex: number = this.filterOptions.findIndex(\r\n (option) => option.Description === \"Country\"\r\n );\r\n this.storesService.getCountries().subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.filterOptions[countryIndex].Issues = extractedData;\r\n } else {\r\n this.filterOptions[countryIndex].Issues = [];\r\n }\r\n },\r\n error: () => {\r\n this.filterOptions[countryIndex].Issues = [];\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.storesService.getStoreList(this.storeList_req).subscribe({\r\n next: (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.storeList = res.data.result;\r\n this.pagination = {\r\n offset: res.data?.offset\r\n ? res?.data.offset\r\n : this.pagination.offset,\r\n limit: res.data?.limit ? res?.data.limit : this.pagination.limit,\r\n totalCount: res.data.count,\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.storeList = [];\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: () => {\r\n this.storeList = [];\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 complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n let limit: number = this.storeList_req.limit;\r\n this.storeList_req.offset = 1;\r\n this.storeList_req.limit = 10000;\r\n this.storeList_req.export = true;\r\n this.storesService.getStoreListExport(this.storeList_req).subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n this.excelService.saveAsExcelFile(res, \"storesList\");\r\n } else {\r\n }\r\n },\r\n error: () => {},\r\n });\r\n this.storeList_req.limit = limit;\r\n this.storeList_req.export = false;\r\n }\r\n\r\n navigateToStore(storeId: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = storeId;\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`manage/stores/settings`],{ \r\n queryParams: { storeId: storeId }\r\n });\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.storeList_req.offset = Number(pageOffset);\r\n this.pagination.offset = Number(pageOffset);\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.storeList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.storeList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.loadTable();\r\n }\r\n\r\n isLinkActive(link: string): boolean {\r\n return this.router.isActive(link, true);\r\n }\r\n\r\n onSort(column: string) {\r\n this.columns.forEach((el: any, i: number) => {\r\n if (el.column == column) {\r\n this.storeList_req.sortColumName = column;\r\n if (this.columns[i].direction == 0) {\r\n this.columns[i].direction = 1;\r\n this.storeList_req.sortBy = 1;\r\n } else if (this.columns[i].direction == 1) {\r\n this.columns[i].direction = -1;\r\n this.storeList_req.sortBy = -1;\r\n } else if (this.columns[i].direction == -1) {\r\n this.columns[i].direction = 0;\r\n this.storeList_req.sortBy = -1;\r\n this.storeList_req.sortColumName = \"storeId\";\r\n }\r\n } else {\r\n this.columns[i].direction = 0;\r\n }\r\n });\r\n this.loadTable();\r\n }\r\n\r\n colDirection(column: string): number {\r\n return this.columns.filter((el) => el.column == column)[0].direction;\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 goToEdgeApp(store: any) {\r\n this.router.navigate([\"/manage/stores/edge-app/edge-email-journey\"], {\r\n queryParams: { storeId: store.storeId,ticketId:store.ticketId},\r\n });\r\n }\r\n goToEdgeAppconfig(store: any) {\r\n this.router.navigate([\"/manage/stores/edge-app/edge-installation\"], {\r\n queryParams: { storeId: store.storeId,ticketId:store.ticketId},\r\n });\r\n }\r\n goToStore(store: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = store.storeId;\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`/manage/stores/infrastructure`], {queryParams: { storeId: store.storeId }});\r\n }\r\n goToStoreInfra(store: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = store.storeId;\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`/manage/stores/infra-ticket`], {queryParams: { storeId: store.storeId }});\r\n }\r\n\r\n updateStoreStatus(store: any) {\r\n this.storesService.updateStore(store.storeId, {status: store.status, storeName: store.storeName, clientId: this.$headerFilters.client}).pipe(takeUntil(this.detach)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200 && res.status === \"success\") {\r\n this.ts.getSuccessToast(\"Store Status Updated Successfully!\");\r\n this.loadTable();\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update Store Status!\");\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err.error.error);\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-5\">\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 class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('stores')\">\r\n <a [ngClass]=\"receivedData === 'stores'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Stores\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('groups')\">\r\n <a [ngClass]=\"receivedData === 'groups' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Groups\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"\" *ngIf=\"receivedData === 'stores'\">\r\n <div 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 <span class=\"card-label mb-2\">Stores</span>\r\n <span class=\"text-sub mb-2\">{{ pagination.totalCount ? pagination.totalCount : '--'}} total\r\n stores</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\" [formControl]=\"searchInput\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n <!-- filter Start -->\r\n <lib-filters-custom [dataObject]=\"filterOptions\" (AppliedFilters)=\"applyFilter($event)\"></lib-filters-custom>\r\n <!-- filter End -->\r\n @if ((gs.userAccess | async)?.manage_stores_isDownload) {\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\">\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.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>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n }\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button routerLink=\"/manage/stores/addition-method\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\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=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Add Store</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n @if(!loading && !noData) {\r\n <ng-container>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead class=\"cursor-pointer\">\r\n <tr>\r\n <!-- <th>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </th> -->\r\n <th (click)=\"onSort('storeId')\">Store Info\r\n <span *ngIf=\"colDirection('storeId')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('storeId')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('city')\">Location\r\n <span *ngIf=\"colDirection('city')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('city')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('spocContact')\">SPOC Contact <span>\r\n <span *ngIf=\"colDirection('spocContact')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('spocContact')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('downTime')\">Downtime <span>\r\n <span *ngIf=\"colDirection('downTime')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('downTime')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('status')\">Status <span>\r\n <span *ngIf=\"colDirection('status')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('status')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('statusDetail')\">Status Detail <span>\r\n <span *ngIf=\"colDirection('statusDetail')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('statusDetail')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let store of storeList;let i=index;\">\r\n <tr>\r\n <!-- <td>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </td> -->\r\n <td class=\"cursor-pointer\" (click)=\"navigateToStore(store?.storeId);\">\r\n <div class=\"table-title\">\r\n <span class=\"txt-light-primary\">\r\n {{store?.storeName}}\r\n </span>\r\n </div>\r\n <div class=\"table-sub\">ID : {{store?.storeId}}\r\n <span class=\"my-1 mx-1\">\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4\" cy=\"4\" r=\"3\" fill=\"#12B76A\" />\r\n </svg>\r\n {{store?.progress ? store?.progress : 20}}%\r\n <div class=\"h-5px w-100 bg-light mt-2\">\r\n <div class=\"bg-success rounded h-5px\" role=\"progressbar\"\r\n [ngStyle]=\"{ width: (store?.progress ? store?.progress : 20) + '%' }\"\r\n aria-valuemin=\"20\" aria-valuemax=\"100\"></div>\r\n </div>\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"w-200px\">\r\n @if (store?.city) {\r\n <div class=\"table-sub\">{{store?.city}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n @if (store?.country && store?.state) {\r\n <div class=\"table-sub\">{{store?.state}},{{store?.country}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n </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 {{store?.spocEmail.slice(0,2) | uppercase }}\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"ms-2\">\r\n <div class=\"table-title\">{{store?.spocEmail || 'NA'}}</div>\r\n <div class=\"table-sub\">{{store?.spocContact || 'NA'}}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"fw-semibold\">{{store?.downTime}}</td>\r\n <td><span class=\"badge badge-light-primary\">\r\n @if(store?.status=='onboareded') {\r\n Onboarded\r\n } @else if (store.status==='installationfailed') {\r\n Installation Failed\r\n } @else {\r\n {{store?.status | titlecase}}\r\n }\r\n </span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{store?.statusDetail || 'NA'}}</div>\r\n <!-- <div class=\"table-sub\">Pending from Client</div> -->\r\n </td>\r\n <td> \r\n <button *ngIf=\"store.status==='Live'\" type=\"button\" (click)=\"goToStore(store)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>View</span>\r\n </button> \r\n <!-- @if (store.status!=='Live') {\r\n <button type=\"button\" disabled=\"true\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>View</span>\r\n </button>\r\n } -->\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button *ngIf=\"store.status==='onboareded'\" type=\"button\" (click)=\"goToEdgeApp(store)\" [disabled]=\"user.userType === 'tango'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>Pair</span>\r\n </button>\r\n <button *ngIf=\"store.status==='paired'|| store.status==='installationfailed'\" type=\"button\"\r\n (click)=\"goToEdgeAppconfig(store)\" [disabled]=\"user.userType === 'tango'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>Config</span>\r\n </button>\r\n <button *ngIf=\"store.status==='Infra Issue'\" type=\"button\" (click)=\"goToStoreInfra(store)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>infra</span>\r\n </button>\r\n <span class=\"dropdown\">\r\n <button class=\"options-class\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M18.0001 18.8334C18.4603 18.8334 18.8334 18.4603 18.8334 18C18.8334 17.5398 18.4603 17.1667 18.0001 17.1667C17.5398 17.1667 17.1667 17.5398 17.1667 18C17.1667 18.4603 17.5398 18.8334 18.0001 18.8334Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 13C18.4603 13 18.8334 12.6269 18.8334 12.1667C18.8334 11.7065 18.4603 11.3334 18.0001 11.3334C17.5398 11.3334 17.1667 11.7065 17.1667 12.1667C17.1667 12.6269 17.5398 13 18.0001 13Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 24.6667C18.4603 24.6667 18.8334 24.2936 18.8334 23.8334C18.8334 23.3731 18.4603 23 18.0001 23C17.5398 23 17.1667 23.3731 17.1667 23.8334C17.1667 24.2936 17.5398 24.6667 18.0001 24.6667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li (click)=\"navigateToStore(store?.storeId);\"><button class=\"dropdown-item\" type=\"button\">Edit\r\n Store</button></li>\r\n @if(store?.status != 'active') {\r\n <li><button class=\"dropdown-item\" (click)=\"updateStoreStatus(store)\" type=\"button\">Deactivate</button></li>\r\n } @else {\r\n <li><button class=\"dropdown-item\" (click)=\"updateStoreStatus(store)\" type=\"button\">Activate</button></li>\r\n }\r\n </ul>\r\n </span>\r\n }\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </ng-container>\r\n } @else if (loading && !noData) {\r\n <ng-container>\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 </ng-container>\r\n } @else if (noData && !loading) {\r\n <ng-container>\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 }\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"receivedData === 'groups'\">\r\n <lib-tango-manage-groups (dataEvent)=\"receiveGroupData($event)\"></lib-tango-manage-groups>\r\n <!-- <lib-group-details *ngIf=\"\"></lib-group-details> -->\r\n <!-- <router-outlet></router-outlet> -->\r\n</div>\r\n\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Group Details 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-group-details (dataEvent)=\"receiveGroupData($event)\"></lib-group-details>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport Swal from \"sweetalert2\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { StoreBulkItem } from \"../../interfaces/store.interface\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { Router } from \"@angular/router\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-stores\",\r\n templateUrl: \"./add-stores.component.html\",\r\n styleUrl: \"./add-stores.component.scss\",\r\n})\r\nexport class AddStoresComponent {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{10}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n $headerFilters: any;\r\n\r\n constructor(private storeService: StoresService,private ts: ToastService,private router: Router) {\r\n let data:any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.$headerFilters = data;\r\n }\r\n\r\n onUpload(e: any) {\r\n let data: StoreBulkItem[];\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] != \"StoreData\") {\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 let promises = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].StoreName, \"store name\", i));\r\n errMsgs.push(this.validateField(data[i].StoreType, \"store type\", i));\r\n errMsgs.push(this.validateField(data[i].SpocName, \"spoc name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].BusinessType, \"business type\", i)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].SpocEmail,\r\n \"spoc email\",\r\n i,\r\n this.emailRegex\r\n )\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].SpocContact,\r\n \"spoc contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n errMsgs.push(this.validateField(data[i].TimeZone, \"timezone\", i));\r\n // errMsgs.push(\r\n // this.validateField(data[i].CameraCount, \"camera count\", i)\r\n // );\r\n // errMsgs.push(this.validateField(data[i].Latitude, \"latitude\", i));\r\n // errMsgs.push(this.validateField(data[i].Longitude, \"longitude\", i));\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 if(!data[i].Latitude) {\r\n data[i].Latitude = '0';\r\n }\r\n\r\n if(!data[i].Longitude) {\r\n data[i].Longitude = '0';\r\n }\r\n\r\n const promise = this.storeService\r\n .getAddress(Number(data[i].Latitude), Number(data[i].Longitude))\r\n .then((placeData: any) => {\r\n let storeProfile: any = {\r\n address: \"\",\r\n country: \"\",\r\n state: \"\",\r\n city: \"\",\r\n pincode: \"\",\r\n };\r\n if(placeData.address_components) {\r\n for (const component of placeData.address_components) {\r\n const types = component.types;\r\n if (types.includes(\"locality\")) {\r\n storeProfile.city = component.long_name;\r\n } else if (types.includes(\"administrative_area_level_1\")) {\r\n storeProfile.state = component.long_name;\r\n } else if (types.includes(\"country\")) {\r\n storeProfile.country = component.long_name;\r\n } else if (types.includes(\"postal_code\")) {\r\n storeProfile.pincode = component.long_name;\r\n } else if (\r\n types.includes(\"premise\") ||\r\n types.includes(\"sublocality_level_2\") ||\r\n types.includes(\"sublocality_level_1\")\r\n ) {\r\n if (component.long_name) {\r\n storeProfile.address += component.long_name + \",\";\r\n }\r\n }\r\n }\r\n if (storeProfile.address) {\r\n storeProfile.address = storeProfile.address.slice(0, -1);\r\n }\r\n }\r\n data[i][\"storeProfile\"] = storeProfile;\r\n processedArray.push({\r\n storeName: data[i].StoreName,\r\n storeType: { type: data[i].StoreType },\r\n // edge: { camDetails: { cameras: data[i].CameraCount } },\r\n spocDetails: {\r\n name: data[i].SpocName,\r\n email: data[i].SpocEmail,\r\n contact: data[i].SpocContact.toString(),\r\n },\r\n storeProfile: {\r\n ...data[i].storeProfile,\r\n ...{ timeZone: data[i].TimeZone },\r\n },\r\n businessType: data[i].BusinessType,\r\n });\r\n })\r\n .catch((error) => {\r\n this.ts.getErrorToast(\r\n `Please Upload the File with Valid latitude and longitude in row ${\r\n i + 1\r\n }`\r\n );\r\n });\r\n promises.push(promise);\r\n }\r\n\r\n Promise.all(promises)\r\n .then(() => {\r\n this.storeService\r\n .storeBulkUpload({\r\n stores: processedArray,\r\n clientId: this.$headerFilters?.client,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"Stores have been uploaded Successfully!\");\r\n if(res.data.stores && res.data.stores.length) {\r\n let bulkTicketsBody: any = res.data.stores.map((storeId:any)=>{\r\n return {\r\n storeId: storeId,\r\n Date: new Date().toISOString().split(\"T\")[0],\r\n issueType: \"installation\",\r\n };\r\n });\r\n this.storeService.bulkInfraTicket(bulkTicketsBody).subscribe({\r\n next:(res:any)=>{\r\n if(res && res.code) {\r\n this.ts.getSuccessToast('Store Installation Tickets created successfully!');\r\n this.router.navigate([\"/manage/stores\"]);\r\n }\r\n },\r\n error:(err:any)=>{\r\n this.ts.getErrorToast(err.error.error);\r\n }\r\n });\r\n }\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 })\r\n .catch((error) => {\r\n this.ts.getErrorToast(\"Unable to create stores!\");\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 ${\r\n row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-body d-flex flex-center flex-column p-9\">\r\n <div class=\"mb-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 <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Add stores </a>\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>Use the template to upload multiple stores at once.</li>\r\n <li>Download the template here -\r\n <a href=\"../../assets/files/storesUploadTemplate.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>Add your data to the Template File</li>\r\n <li>Upload it below for processing</li>\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\" 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 />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline btn-primary bg-primary btn-outline-default rounded-3 w-50 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\">\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 <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> \r\n <span class=\"text-white mx-2\">Add Multiple Stores</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-2\">Or </span> <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" routerLink=\"/manage/stores/add-single-store\"\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-50 p-4 mt-3\">\r\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1.18015 3.80378L1.1269 3.88695C0.568863 4.874 1.16469 6.12143 2.2363 6.26452C2.33339 6.27639 2.42373 6.28267 2.512 6.28267C3.09015 6.28267 3.60132 6.03465 3.95759 5.64792L4.51093 5.0473L5.06238 5.64965C5.41432 6.03407 5.92433 6.28267 6.50639 6.28267C7.08583 6.28267 7.59877 6.03372 7.95039 5.64965L8.50358 5.04541L9.05676 5.64965C9.40839 6.03372 9.92133 6.28267 10.5008 6.28267C11.0802 6.28267 11.5932 6.03372 11.9448 5.64965L12.498 5.04541L13.0511 5.64965C13.4028 6.03372 13.9157 6.28267 14.4952 6.28267C14.5805 6.28267 14.6736 6.27638 14.77 6.26462C15.8652 6.1153 16.463 4.80103 15.8243 3.80428C15.8242 3.80423 15.8242 3.80417 15.8242 3.80411L14.066 1.0627L14.066 1.0627L14.0651 1.06123C14.0499 1.0374 14.0124 1.01184 13.9652 1.01184H3.03581C2.98866 1.01184 2.95117 1.0374 2.93597 1.06124L2.93535 1.0622L1.18015 3.80378ZM14.1516 8.73706V11.869V12.619H13.4016H3.59943H2.84943V11.869V8.73753C2.7392 8.74573 2.62768 8.74994 2.51507 8.74994C2.47276 8.74994 2.43074 8.74931 2.389 8.74809V11.869V13.8035C2.389 14.4469 2.9229 14.988 3.59943 14.988H13.4016C14.0781 14.988 14.612 14.4469 14.612 13.8035V11.869V8.74827C14.5722 8.74937 14.5322 8.74994 14.4921 8.74994C14.3777 8.74994 14.2641 8.74559 14.1516 8.73706Z\" stroke=\"#344054\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span class=\"fw-bold fs-4 mx-2\">\r\n Add Single\r\n Store</span></label>\r\n </div>\r\n \r\n </div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormBuilder, FormArray, Validators, FormGroup, AbstractControl, ValidationErrors } from \"@angular/forms\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { StoreResponse } from \"../../interfaces/store.interface\";\r\nimport { Router } from \"@angular/router\";\r\nimport * as moment from 'moment-timezone';\r\nimport { NgxGpAutocompleteDirective } from \"@angular-magic/ngx-gp-autocomplete/lib/ngx-gp-autocomplete.directive\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-stores-form\",\r\n templateUrl: \"./add-stores-form.component.html\",\r\n styleUrl: \"./add-stores-form.component.scss\",\r\n})\r\nexport class AddStoresFormComponent implements OnInit {\r\n @ViewChild(\"ngxPlaces\") placesRef: NgxGpAutocompleteDirective;\r\n\r\n select = \"store_info\";\r\n storeForm: FormGroup;\r\n storeId: string;\r\n timezones: any[];\r\n $headerFilters: any;\r\n\r\n public handleAddressChange(place: google.maps.places.PlaceResult | any) {\r\n if (place.geometry) {\r\n let country = \"\", city = \"\", state = \"\", pincode = \"\";\r\n place.address_components.forEach((component: any) => {\r\n if (component.types.includes(\"country\")) {\r\n country = component.long_name;\r\n } else if (component.types.includes(\"locality\")) {\r\n city = component.long_name;\r\n } else if (component.types.includes(\"administrative_area_level_1\")) {\r\n state = component.long_name;\r\n } else if (component.types.includes(\"postal_code\")) {\r\n pincode = component.long_name;\r\n }\r\n });\r\n this.storeForm.get('address')?.setValue(place.formatted_address);\r\n this.storeForm.get(\"country\")?.setValue(country);\r\n this.storeForm.get(\"city\")?.setValue(city);\r\n this.storeForm.get(\"state\")?.setValue(state);\r\n this.storeForm.get(\"pincode\")?.setValue(pincode);\r\n }\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private storesService: StoresService,\r\n private ts: ToastService,\r\n private router: Router\r\n ) {\r\n let data:any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.$headerFilters = data;\r\n this.getAllTimezones();\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n settingvalue(label: any) {\r\n if (label == \"store_info\") {\r\n this.select = \"store_info\";\r\n } else if (label == \"config\") {\r\n this.select = \"config\";\r\n } else if (label == \"store_loc\") {\r\n this.select = \"store_loc\";\r\n } else if (label == \"contact\") {\r\n this.select = \"contact\";\r\n } else if (label == \"review\") {\r\n this.select = \"review\";\r\n }\r\n }\r\n\r\n createForm() {\r\n this.storeForm = this.fb.group(\r\n {\r\n storeName: [\"\", Validators.required],\r\n clientId: [this.$headerFilters?.client, Validators.required],\r\n businessType: [\"COCO\", Validators.required],\r\n storeType_type: [\"High Street\", Validators.required],\r\n storeType_name: [\"\"],\r\n storeCode: [\"\"],\r\n address: [\"\", Validators.required],\r\n country: [\"\", Validators.required],\r\n state: [\"\", Validators.required],\r\n city: [\"\", Validators.required],\r\n pincode: [\"\", Validators.required],\r\n timeZone: [\"Asia/Kolkata\", Validators.required],\r\n open: [\"10:00\", Validators.required],\r\n close: [\"20:00\", Validators.required],\r\n // cameras: [0, Validators.required],\r\n spocDetails: this.fb.array([this.createSpocDetail()]),\r\n storeConnectionId: [\"\"],\r\n },\r\n { validators: this.timeRangeValidator }\r\n );\r\n }\r\n\r\n timeRangeValidator(control: AbstractControl): ValidationErrors | null {\r\n const openTime = control.get(\"open\")?.value;\r\n const closeTime = control.get(\"close\")?.value;\r\n if (openTime && closeTime && openTime >= closeTime) {\r\n return { invalidTimeRange: true };\r\n } \r\n return null;\r\n }\r\n\r\n createSpocDetail(): FormGroup {\r\n return this.fb.group({\r\n name: [\"\", Validators.required],\r\n email: [\r\n \"\",\r\n [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n Validators.minLength(3),\r\n ],\r\n ],\r\n contact: [\r\n \"\",\r\n [\r\n Validators.required,\r\n Validators.maxLength(13),\r\n Validators.minLength(10),\r\n ],\r\n ],\r\n designation: [\"\"],\r\n });\r\n }\r\n\r\n getspocDetailsControls() {\r\n return (this.storeForm.get(\"spocDetails\") as FormArray).controls;\r\n }\r\n\r\n getspocDetailsValues(i: number) {\r\n return (this.storeForm.get(\"spocDetails\") as FormArray).at(i).value;\r\n }\r\n\r\n getStoreProfile(): FormGroup {\r\n return this.storeForm.get(\"storeProfile\") as FormGroup;\r\n }\r\n\r\n goToStoreInfo(): void {\r\n this.select = \"store_info\";\r\n }\r\n\r\n goToConfiguration(): void {\r\n this.select = \"config\";\r\n }\r\n\r\n goToContact(): void {\r\n this.select = \"contact\";\r\n }\r\n\r\n goToReview(): void {\r\n this.select = \"review\";\r\n }\r\n\r\n addSpocDetail() {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).push(\r\n this.createSpocDetail()\r\n );\r\n }\r\n\r\n addAltSpoc() {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).push(\r\n this.createSpocDetail()\r\n );\r\n }\r\n\r\n delAltSpoc() {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).removeAt(1);\r\n }\r\n\r\n removeSpocDetail(index: number) {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).removeAt(index);\r\n }\r\n\r\n onSubmit() {\r\n if (this.storeForm.valid) {\r\n let store: StoreResponse = {\r\n storeName: this.storeForm.value.storeName,\r\n clientId: this.storeForm.value.clientId,\r\n businessType: this.storeForm.value.businessType,\r\n storeType: {\r\n type: this.storeForm.value.storeType_type,\r\n name: this.storeForm.value?.storeType_name,\r\n },\r\n storeProfile: {\r\n storeCode: this.storeForm.value?.storeCode,\r\n address: this.storeForm.value?.address,\r\n country: this.storeForm.value?.country,\r\n state: this.storeForm.value?.state,\r\n city: this.storeForm.value?.city,\r\n pincode: this.storeForm.value?.pincode,\r\n timeZone: this.storeForm.value?.timeZone,\r\n open: this.storeForm.value?.open,\r\n close: this.storeForm.value?.close,\r\n },\r\n // edge: {\r\n // camDetails: {\r\n // cameras: this.storeForm.value?.cameras,\r\n // },\r\n // },\r\n spocDetails: [\r\n {\r\n name: this.storeForm.value?.spocDetails[0].name,\r\n email: this.storeForm.value?.spocDetails[0].email,\r\n contact: this.storeForm.value?.spocDetails[0].contact,\r\n designation: this.storeForm.value?.spocDetails[0].designation,\r\n },\r\n ],\r\n storeConnectionId: this.storeForm.value?.storeConnectionId,\r\n };\r\n if (this.storeForm.value.spocDetails.length > 1) {\r\n for(let i=1;i<this.storeForm.value.spocDetails.length;i++) {\r\n store.spocDetails.push({\r\n name: this.storeForm.value?.spocDetails[i].name,\r\n email: this.storeForm.value?.spocDetails[i].email,\r\n contact: this.storeForm.value?.spocDetails[i].contact,\r\n designation: this.storeForm.value?.spocDetails[i].designation,\r\n });\r\n }\r\n }\r\n\r\n this.storesService.createStore(store).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200 && res.status === \"success\") {\r\n this.ts.getSuccessToast(\"Store Created Successfully!\");\r\n if (res.data.store && res.data.store.storeId) {\r\n this.storesService\r\n .createInfraTicket({\r\n storeId: res.data.store.storeId,\r\n Date: new Date().toISOString().split(\"T\")[0],\r\n issueType: \"installation\",\r\n })\r\n .subscribe({\r\n next: (res: any) => {},\r\n error: () => {},\r\n });\r\n }\r\n this.router.navigate([\"/manage/stores\"]);\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create store!\");\r\n }\r\n \r\n },\r\n error: (error: any) => {\r\n this.ts.getErrorToast(error?.error?.error ?error?.error?.error: \"Unable to create Store!\");\r\n }\r\n });\r\n } else {\r\n }\r\n }\r\n\r\n navigateToAddStore() {\r\n this.router.navigate([\"/manage/stores/addition-method\"]);\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 getAllTimezones() {\r\n this.timezones=moment.tz.names();\r\n }\r\n}\r\n","<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\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=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.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_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container>\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : 'NA'}}\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div> -->\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { take, map } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\nexport const storeEditGuard: CanActivateFn = (route, state) => {\r\n const gs = inject(GlobalStateService)\r\n const router = inject(Router)\r\n \r\n return gs.userAccess.pipe(take(1), map((e)=>{\r\n if(e && !e?.manage_stores_isEdit){\r\n router.navigate(['/manage/stores']);\r\n return false\r\n }\r\n return true;\r\n })); \r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TangoManageStoresComponent } from './components/tango-manage-stores/tango-manage-stores.component';\r\nimport { AddStoresComponent } from './components/add-stores/add-stores.component';\r\nimport { AddStoresFormComponent } from './components/add-stores-form/add-stores-form.component';\r\nimport { storeEditGuard } from './guards/store-edit.guard';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'edge-app',\r\n loadChildren: () => import('./route-wrappers/edge-wrapper.module').then((m) => m.TangoEdgeAppWrapperModule),\r\n // canActivate:[storeEditGuard]\r\n },\r\n {\r\n path:'',\r\n component:TangoManageStoresComponent,\r\n },\r\n {\r\n path:'addition-method',\r\n component:AddStoresComponent,\r\n canActivate: [storeEditGuard]\r\n },\r\n {\r\n path:'add-single-store',\r\n component:AddStoresFormComponent,\r\n canActivate: [storeEditGuard]\r\n },\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoManageStoresRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TangoManageStoresRoutingModule } from './tango-manage-stores-routing.module';\r\nimport { TangoManageStoresComponent } from './components/tango-manage-stores/tango-manage-stores.component';\r\nimport { AddStoresComponent } from './components/add-stores/add-stores.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\r\nimport { AddStoresFormComponent } from './components/add-stores-form/add-stores-form.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxGpAutocompleteModule } from \"@angular-magic/ngx-gp-autocomplete\";\r\nimport { Loader } from '@googlemaps/js-api-loader';\r\nimport { TangoManageGroupsComponent } from './components/tango-manage-groups/tango-manage-groups.component';\r\nimport { GroupDetailsComponent } from './components/group-details/group-details.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { CreateGroupComponent } from './components/create-group/create-group.component';\r\nimport { GroupDeletePopupComponent } from './components/group-delete-popup/group-delete-popup.component';\r\nimport { FiltersComponent } from './utils/filters/filters.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoManageStoresComponent,\r\n AddStoresComponent,\r\n AddStoresFormComponent,\r\n TangoManageGroupsComponent,\r\n GroupDetailsComponent,\r\n CreateGroupComponent,\r\n GroupDeletePopupComponent,\r\n FiltersComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoManageStoresRoutingModule,\r\n NgxMaterialTimepickerModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n NgxGpAutocompleteModule,\r\n CommonSharedModule\r\n ],\r\n providers: [\r\n {\r\n provide: Loader,\r\n useValue: new Loader({\r\n apiKey: 'AIzaSyDlOezgwQO0JviD0aizrCuN1FY9tcWfR3o',\r\n libraries: ['places']\r\n })\r\n },\r\n ],\r\n})\r\nexport class TangoManageStoresModule { }\r\n","/*\r\n * Public API Surface of tango-manage-stores\r\n */\r\n\r\nexport * from './lib/tango-manage-stores.module';\r\n\r\nexport * from './lib/components/tango-manage-stores/tango-manage-stores.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3.GroupService","i4","i5","i2.GroupService","i3","i6","i1.StoresService","i2.StoresService","i4.ExcelService","i7","i8","i9.FiltersComponent","i3.ExcelService","i8.TangoManageGroupsComponent","i9.GroupDetailsComponent","i10.FiltersComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tango-app-ui-manage-stores.mjs","sources":["../../../projects/tango-manage-stores/src/lib/services/stores.service.ts","../../../projects/tango-manage-stores/src/lib/services/excel.service.ts","../../../projects/tango-manage-stores/src/lib/services/group.service.ts","../../../projects/tango-manage-stores/src/lib/components/create-group/create-group.component.ts","../../../projects/tango-manage-stores/src/lib/components/create-group/create-group.component.html","../../../projects/tango-manage-stores/src/lib/components/group-delete-popup/group-delete-popup.component.ts","../../../projects/tango-manage-stores/src/lib/components/group-delete-popup/group-delete-popup.component.html","../../../projects/tango-manage-stores/src/lib/components/tango-manage-groups/tango-manage-groups.component.ts","../../../projects/tango-manage-stores/src/lib/components/tango-manage-groups/tango-manage-groups.component.html","../../../projects/tango-manage-stores/src/lib/utils/filters/filters.component.ts","../../../projects/tango-manage-stores/src/lib/utils/filters/filters.component.html","../../../projects/tango-manage-stores/src/lib/components/group-details/group-details.component.ts","../../../projects/tango-manage-stores/src/lib/components/group-details/group-details.component.html","../../../projects/tango-manage-stores/src/lib/components/tango-manage-stores/tango-manage-stores.component.ts","../../../projects/tango-manage-stores/src/lib/components/tango-manage-stores/tango-manage-stores.component.html","../../../projects/tango-manage-stores/src/lib/components/add-stores/add-stores.component.ts","../../../projects/tango-manage-stores/src/lib/components/add-stores/add-stores.component.html","../../../projects/tango-manage-stores/src/lib/components/add-stores-form/add-stores-form.component.ts","../../../projects/tango-manage-stores/src/lib/components/add-stores-form/add-stores-form.component.html","../../../projects/tango-manage-stores/src/lib/guards/store-edit.guard.ts","../../../projects/tango-manage-stores/src/lib/tango-manage-stores-routing.module.ts","../../../projects/tango-manage-stores/src/lib/tango-manage-stores.module.ts","../../../projects/tango-manage-stores/src/public-api.ts","../../../projects/tango-manage-stores/src/tango-app-ui-manage-stores.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, catchError, map, throwError } from \"rxjs\";\r\nimport { Store, StoreResponse } from \"../interfaces/store.interface\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class StoresService {\r\n private storeApiUrl = \"\";\r\n // private userInfraApiUrl = \"\";\r\n private middlewareApiUrl = \"\";\r\n private ticketsApiUrl = \"\"; \r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.storeApiUrl = env.storeApiUrl;\r\n // this.userInfraApiUrl = env.userInfraApiUrl;\r\n this.middlewareApiUrl = env.middlewareApiUrl;\r\n this.ticketsApiUrl = env.ticketsApiUrl;\r\n }\r\n });\r\n }\r\n\r\n getStoreList(req: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.storeApiUrl}/storeInfraList`, req)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStoreListExport(req: any): Observable<any> {\r\n return this.http\r\n .post(`${this.storeApiUrl}/storeInfraList`, req, {\r\n responseType: \"arraybuffer\",\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStore(storeId: string): Observable<any> {\r\n return this.http.get<any>(`${this.storeApiUrl}/get-store/${storeId}`).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createStore(storeBody: StoreResponse): Observable<Store> {\r\n return this.http\r\n .post<Store>(`${this.storeApiUrl}/create-store`, storeBody)\r\n .pipe(\r\n map((response: any) => response)\r\n \r\n );\r\n }\r\n \r\n updateStore(storeId:string,storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.storeApiUrl}/update-store/${storeId}`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n storeBulkUpload(storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.storeApiUrl}/storeBulkUpload`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n getCountries(params?: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.middlewareApiUrl}/get-countries`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStates(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.middlewareApiUrl}/get-country-states`, {\r\n params: params,\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getCities(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.middlewareApiUrl}/get-state-cities`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAddress(latitude: number, longitude: number) {\r\n return fetch(\r\n `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}&key=AIzaSyDlOezgwQO0JviD0aizrCuN1FY9tcWfR3o`\r\n )\r\n .then((res) => {\r\n // if (!res.ok) {\r\n // throw new Error(\"Network response was not ok\");\r\n // }\r\n return res.json();\r\n })\r\n .then((data) => {\r\n // if (data.status === \"OK\") {\r\n return data.results[0];\r\n // } else {\r\n // throw new Error(data.status);\r\n // }\r\n });\r\n }\r\n\r\n createInfraTicket(req: any): Observable<any> {\r\n return this.http\r\n .post(`${this.ticketsApiUrl}/infra/createTicket`, req)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n bulkInfraTicket(req: any): Observable<any> {\r\n return this.http\r\n .post(`${this.ticketsApiUrl}/infra/bulkcreateTicket`, req)\r\n .pipe(\r\n map((response: any) => response)\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","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({providedIn: 'root' })\r\nexport class ExcelService {\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 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 public 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 { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { BehaviorSubject, Observable, 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 GroupService {\r\n private groupApiUrl='';\r\n private storeApiUrl='';\r\n groupComms = new BehaviorSubject<any>(null);\r\n \r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.groupApiUrl = env.groupApiUrl;\r\n this.storeApiUrl = env.storeApiUrl;\r\n }\r\n });\r\n }\r\n\r\n getGroups(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.groupApiUrl}/list`, {\r\n params: params,\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getGroup(params: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.groupApiUrl}/get-group`, { params: params })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createGroup(groupBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.groupApiUrl}/create`, groupBody, {\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n updateGroup(groupBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.groupApiUrl}/update`, groupBody,{\r\n }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getStores(req: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.storeApiUrl}/get-stores`, { params: req })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\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","import { ChangeDetectorRef, Component, HostListener, Input, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n\r\n@Component({\r\n selector: \"lib-create-group\",\r\n templateUrl: \"./create-group.component.html\",\r\n styleUrl: \"./create-group.component.scss\",\r\n})\r\nexport class CreateGroupComponent implements OnInit {\r\n @Input() type: string;\r\n @Input() editGroup: any;\r\n\r\n operationType: string;\r\n groupForm: FormGroup;\r\n availableStores: any[];\r\n selectedValuesArray: any[] = [];\r\n group: any;\r\n Opendropdown: boolean;\r\n dataObject: any[] = [\r\n { Description: 'Stores', Stores: []}, \r\n ];\r\n $headerFilters: any;\r\n selectedText: string;\r\n\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n private fb: FormBuilder,\r\n private groupService: GroupService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService\r\n ) {\r\n this.createForm();\r\n this.gs.dataRangeValue.subscribe({\r\n next: (data: any) => {\r\n this.$headerFilters = data;\r\n this.getAvailableStores();\r\n },\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.operationType = this.type;\r\n }\r\n\r\n getGroup() {\r\n this.groupService\r\n .getGroup({\r\n clientId: this.editGroup?.clientId,\r\n groupName: this.editGroup?.groupName,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.group = res.data.result;\r\n this.loadGroup();\r\n } else {\r\n }\r\n },\r\n error: () => {},\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadGroup() {\r\n this.groupForm = this.fb.group({\r\n groupName: [this.group?.groupName, Validators.required],\r\n description: [this.group?.description],\r\n storeList: [this.group?.storeList, Validators.required],\r\n });\r\n this.loadSelectedStores(this.group?.storeList);\r\n if(this.operationType=='view') {\r\n this.groupForm.disable();\r\n }\r\n }\r\n\r\n createForm() {\r\n this.groupForm = this.fb.group({\r\n groupName: [\"\", Validators.required],\r\n description: [\"\"],\r\n storeList: [[], Validators.required],\r\n });\r\n }\r\n\r\n getAvailableStores() {\r\n this.groupService.getStores({ clientId: this.$headerFilters.client }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.availableStores = res.data.result;\r\n this.dataObject[0].Stores = res.data.result;\r\n this.cd.detectChanges();\r\n if (this.editGroup) {\r\n this.getGroup();\r\n } else {\r\n }\r\n } else {\r\n }\r\n },\r\n error: () => { \r\n this.availableStores = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close();\r\n }\r\n editgroup() {\r\n this.operationType = \"edit\";\r\n this.groupForm.enable();\r\n }\r\n\r\n groupSubmit() {\r\n if (this.operationType === \"add\") {\r\n if (this.groupForm.valid) {\r\n let groupValue: any = {...this.groupForm.value,...{clientId: this.$headerFilters.client}};\r\n if(!groupValue.description) {\r\n delete groupValue['description'];\r\n }\r\n this.groupService\r\n .createGroup(groupValue)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"Group added successfully\");\r\n this.activeModal.close();\r\n } else {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to add Group');\r\n }\r\n },\r\n error: () => {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to add Group');\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n } else {\r\n if (this.groupForm.valid) {\r\n let groupValue: any = {...this.groupForm.value,...{clientId: this.$headerFilters.client}};\r\n if(!groupValue.description) {\r\n delete groupValue['description'];\r\n }\r\n this.groupService.updateGroup(groupValue).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"Group updated successfully\");\r\n this.activeModal.close();\r\n } else {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to update Group');\r\n }\r\n },\r\n error: () => {\r\n this.activeModal.close();\r\n this.ts.getErrorToast('Unable to update Group');\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n }\r\n }\r\n \r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const\r\n 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 \r\n opendropdown(e: MouseEvent) {\r\n e.stopPropagation();\r\n this.Opendropdown = !this.Opendropdown;\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 toggleCheckbox(event: any, store: any, index: number, subIndex: number) {\r\n const selectedStores = this.dataObject[index].Stores;\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index] || [];\r\n \r\n if (store === 'Select All') {\r\n const checked = event.target.checked;\r\n selectedStores.forEach((item: any) => item.checked = checked);\r\n this.selectedValuesArray[index] = checked ? [...selectedStores] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[index].findIndex((item: any) => item.storeName === store.storeName);\r\n isChecked ? this.selectedValuesArray[index].push(store) : this.selectedValuesArray[index].splice(storeIndex, 1);\r\n this.dataObject[index].Stores[subIndex].checked = isChecked;\r\n }\r\n \r\n const selectAllElement = document.getElementById(`selectall${index}`) as HTMLInputElement;\r\n if (selectAllElement) selectAllElement.checked = selectedStores.every((item: any) => item.checked);\r\n \r\n this.selectedValuesArray[index].forEach((store: any) => {\r\n const checkboxElement = document.getElementById(`option${store.storeName}`) as HTMLInputElement;\r\n if (checkboxElement) checkboxElement.checked = store.checked;\r\n });\r\n \r\n this.selectedText = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n this.groupForm.get('storeList')?.setValue(this.selectedValuesArray[0].map((x:any) => x.storeId));\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 if(stores.includes(store.storeId)) {\r\n store.checked = true;\r\n this.selectedValuesArray[0].push(store);\r\n }\r\n });\r\n this.selectedText = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n}","<div class=\"card 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=\"#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\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 Group</a>\r\n <div class=\"sub-title\">Please add your group 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 Group</a>\r\n <div class=\"sub-title\">Edit your group 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\">View Group</a>\r\n <div class=\"sub-title\">View your group details</div>\r\n </div>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <div *ngIf=\"operationType==='view'\" class=\"col-md-3 text-end px-0\" (click)=\"editgroup()\">\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 <form [formGroup]=\"groupForm\">\r\n <div class=\"row mt-8\">\r\n <div class=\"col-md-12 col-lg-12 mb-5\">\r\n <label for=\"groupName\" class=\"form-label\">Group Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"groupName\"\r\n formControlName=\"groupName\" \r\n [ngClass]=\"{ 'is-invalid': groupForm.get('groupName')?.touched && groupForm.get('groupName')?.hasError('required') }\">\r\n @if (groupForm.get('groupName')?.touched && groupForm.get('groupName')?.hasError('required')) {\r\n <small>Group Name is required</small>\r\n }\r\n </div>\r\n <div class=\"my-5 dropdown1 cursor-pointer h-700\" *ngFor=\"let item of dataObject; let i = index\">\r\n <label for=\"storeList\" class=\"form-label\">Select Stores</label>\r\n <input type=\"text\" class=\"form-control disable\" id=\"storeName\" [ngModel]=\"selectedText\" [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"Select Stores\" (click)=\"Dropdown('Stores',i,$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 (change)=\"toggleCheckbox($event,'Select All', i,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 (change)=\"toggleCheckbox($event,store,i,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 class=\"col-md-12 col-lg-12 mb-5\">\r\n <label for=\"description\" class=\"form-label\">Description</label>\r\n <textarea rows=\"5\" class=\"form-control\" id=\"description\" formControlName=\"description\"></textarea>\r\n </div>\r\n </div>\r\n <div *ngIf=\"operationType !== 'view'\" role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button type=\"button\" class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button type=\"submit\" [disabled]=\"!groupForm.valid\" id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\"\r\n (click)=\"groupSubmit()\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, Input } from \"@angular/core\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\n\r\n@Component({\r\n selector: \"lib-group-delete-popup\",\r\n templateUrl: \"./group-delete-popup.component.html\",\r\n styleUrl: \"./group-delete-popup.component.scss\",\r\n})\r\nexport class GroupDeletePopupComponent {\r\n @Input() deleteGroup: any;\r\n\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n private groupService: GroupService,\r\n private ts: ToastService\r\n ) {}\r\n\r\n cancel() {\r\n this.activeModal.close();\r\n }\r\n\r\n onDeleteGroup() {\r\n this.groupService\r\n .updateGroup({\r\n clientId: this.deleteGroup.clientId,\r\n groupName: this.deleteGroup.groupName,\r\n isActive: false,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.activeModal.close();\r\n this.ts.getSuccessToast(\"Group deleted successfully.\");\r\n } else {\r\n this.ts.getErrorToast(\"Unable to Delete Group!\");\r\n }\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Delete Group!\");\r\n },\r\n complete: () => {},\r\n });\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 {{deleteGroup?.groupName}} Group?</a>\r\n <span class=\"sub-title fw-normal mt-2\"> Are you sure you want to delete this group? This action cannot be undone.</span>\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 id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onDeleteGroup()\">Delete</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n</div>","import {\r\n Component,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n} from \"@angular/core\";\r\n// import { ConversionService } from 'tango-app-ui-auth/lib/components/tango-auth-signup/step/services/conversion.service';\r\nimport { CreateGroupComponent } from \"../create-group/create-group.component\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GroupDeletePopupComponent } from \"../group-delete-popup/group-delete-popup.component\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"lib-tango-manage-groups\",\r\n templateUrl: \"./tango-manage-groups.component.html\",\r\n styleUrl: \"./tango-manage-groups.component.scss\",\r\n})\r\nexport class TangoManageGroupsComponent implements OnInit, OnDestroy {\r\n @Output() dataEvent = new EventEmitter<string>();\r\n\r\n Opendropdown: boolean = false;\r\n groups: any[] = [];\r\n groupData: any;\r\n group_req: any;\r\n dataObject: any = [\r\n {\r\n Description: \"Account Status\",\r\n Issues: [\r\n { text: \"issue 1\", id: \"1\" },\r\n { text: \"issue 2\", id: \"2\" },\r\n { text: \"issue 3\", id: \"3\" },\r\n ],\r\n },\r\n {\r\n Description: \"Subscription Plan\",\r\n Issues: [\r\n { text: \"object 1\", id: \"1\" },\r\n { text: \"object 2\", id: \"2\" },\r\n { text: \"object 3\", id: \"3\" },\r\n ],\r\n },\r\n {\r\n Description: \"Processing Type\",\r\n Issues: [\r\n { text: \"select 1\", id: \"1\" },\r\n { text: \"select 2\", id: \"2\" },\r\n { text: \"select 3\", id: \"3\" },\r\n ],\r\n },\r\n {\r\n Description: \"Data Type\",\r\n Issues: [\r\n { text: \"select 1\", id: \"1\" },\r\n { text: \"select 2\", id: \"2\" },\r\n { text: \"select 3\", id: \"3\" },\r\n ],\r\n },\r\n ];\r\n showdropdown: any;\r\n selectedValues: string[] = [];\r\n selectedValuesArray: any[] = [];\r\n loading: boolean;\r\n searchValue: string = \"\";\r\n $headerFilters: any;\r\n private detach = new Subject();\r\n pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n paginationSizes: number[] = [10, 20, 30];\r\n constructor(\r\n private modalService: NgbModal,\r\n private groupService: GroupService,\r\n private cd: ChangeDetectorRef,\r\n public gs: GlobalStateService\r\n ) {}\r\n\r\n ngOnDestroy(): void { \r\n this.detach.next(true);\r\n this.detach.complete();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.detach)).subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n this.$headerFilters = data;\r\n this.group_req = { clientId: this.$headerFilters.client };\r\n this.getGroups();\r\n }\r\n }\r\n })\r\n }\r\n\r\n getGroups() {\r\n this.loading = true;\r\n if(this.group_req.searchValue==\"\" && this.group_req.searchValue!=undefined) {\r\n delete this.group_req['searchValue'];\r\n }\r\n this.groupService.getGroups(this.group_req).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.groupData = res.data;\r\n this.groups = res.data.result;\r\n this.pagination = {\r\n offset: res.data?.offset\r\n ? res?.data.offset\r\n : this.pagination.offset,\r\n limit: res.data?.limit ? res?.data.limit : this.pagination.limit,\r\n totalCount: res.data.count,\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.loading=false;\r\n this.cd.detectChanges();\r\n } else {\r\n this.groups = [];\r\n this.loading=false;\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.cd.detectChanges();\r\n }\r\n this.loading=false;\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.groups = [];\r\n this.loading=false;\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n searchData() {\r\n this.group_req = {\r\n ...this.group_req,\r\n ...{ searchValue: this.searchValue },\r\n };\r\n this.getGroups();\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.group_req.offset = Number(pageOffset);\r\n this.pagination.offset = Number(pageOffset);\r\n this.getGroups();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.group_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.group_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.getGroups();\r\n }\r\n // isLinkActive(link: string): boolean {\r\n // return this.router.isActive(link, true);\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 groupsDetials(val: any) {\r\n const dataToGroup = \"Group Details Value\";\r\n this.dataEvent.emit(dataToGroup);\r\n this.groupService.groupComms.next(val);\r\n }\r\n\r\n toggleCheckbox(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n this.selectedValuesArray[index] = this.selectedValuesArray[index] || [];\r\n const selectedValues = this.selectedValuesArray[index]; // Retrieve selected values array for the current dropdown index\r\n\r\n if (issue === \"Select All\") {\r\n const currentIssues = this.dataObject[index].Issues.map(\r\n (item: any) => item.text\r\n );\r\n if (selectedValues.length === currentIssues.length) {\r\n // If all items are already selected, deselect all\r\n this.selectedValuesArray[index] = [];\r\n } else {\r\n // Otherwise, select all items\r\n this.selectedValuesArray[index] = [...currentIssues];\r\n }\r\n } else {\r\n if (selectedValues.includes(issue)) {\r\n this.selectedValuesArray[index] = selectedValues.filter(\r\n (item: any) => item !== issue\r\n ); // Deselect the individual item if already selected\r\n } else {\r\n this.selectedValuesArray[index].push(issue); // Select the individual item if not already selected\r\n }\r\n }\r\n\r\n // Update \"Select All\" checkbox status based on selected values\r\n const selectAllId = `selectall${index}`;\r\n const selectAllElement = document.getElementById(\r\n selectAllId\r\n ) as HTMLInputElement;\r\n if (selectAllElement) {\r\n selectAllElement.checked = selectedValues.length === currentIssues.length;\r\n }\r\n\r\n // Update checkboxes based on selected values\r\n currentIssues.forEach((item: string) => {\r\n const isChecked = this.selectedValuesArray[index].includes(item);\r\n const checkboxId = `option${item}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n Reset() {\r\n // this.dataObject = [];\r\n this.Opendropdown = false;\r\n }\r\n\r\n Apply() {\r\n for (let i = 0; i < this.selectedValuesArray.length; i++) {\r\n const selectedValues = this.selectedValuesArray[i];\r\n const issues = this.dataObject[i].Issues;\r\n\r\n if (selectedValues) {\r\n this.selectedValuesArray[i] = selectedValues.map((selectedId: any) => {\r\n const issue = issues.find(\r\n (issueItem: any) => issueItem.text === selectedId\r\n );\r\n return issue ? issue : \"\"; // Get the text corresponding to the id\r\n });\r\n }\r\n }\r\n this.Opendropdown = false;\r\n }\r\n\r\n createGroup(type: any, group?: any) {\r\n const modalRef = this.modalService.open(CreateGroupComponent, {\r\n centered: true,\r\n size: \"md\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.type = type;\r\n if (group) {\r\n modalRef.componentInstance.editGroup = group;\r\n }\r\n modalRef.result.then((res) => {\r\n this.getGroups();\r\n }, (reason) => {\r\n this.getGroups();\r\n });\r\n }\r\n\r\n deleteGroups(data: any, group: any) {\r\n const modalRef = this.modalService.open(GroupDeletePopupComponent, {\r\n centered: true,\r\n size: \"md\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.type = data;\r\n modalRef.componentInstance.deleteGroup = group;\r\n modalRef.result.then((res) => {\r\n this.getGroups();\r\n }, (reason) => {\r\n\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-10\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Groups</span>\r\n <span class=\"text-sub mb-2\">{{groupData?.count || 0}} total groups</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 @if (groups.length) {\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 @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\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=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create Group</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && groups.length\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\" *ngFor=\"let obj of groups\">\r\n <div class=\"border-val mb-7 py-7\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span><a class=\"role-title my-2 cursor-pointer\" (click)=\"groupsDetials(obj)\">{{obj.groupName ||\r\n 'NA'}}</a></span>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"px-5 cursor-pointer\" (click)=\"createGroup('view',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M0.833496 9.99999C0.833496 9.99999 4.16683 3.33333 10.0002 3.33333C15.8335 3.33333 19.1668 9.99999 19.1668 9.99999C19.1668 9.99999 15.8335 16.6667 10.0002 16.6667C4.16683 16.6667 0.833496 9.99999 0.833496 9.99999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 9.99999C12.5002 8.61928 11.3809 7.49999 10.0002 7.49999C8.61945 7.49999 7.50016 8.61928 7.50016 9.99999C7.50016 11.3807 8.61945 12.5 10.0002 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n @if ((gs.userAccess | async)?.manage_stores_isDelete) {\r\n <span class=\"cursor-pointer\" (click)=\"deleteGroups('delete',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 5.00001H4.16667M4.16667 5.00001H17.5M4.16667 5.00001V16.6667C4.16667 17.1087 4.34226 17.5326 4.65482 17.8452C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8452C15.6577 17.5326 15.8333 17.1087 15.8333 16.6667V5.00001H4.16667ZM6.66667 5.00001V3.33334C6.66667 2.89131 6.84226 2.46739 7.15482 2.15483C7.46738 1.84227 7.89131 1.66667 8.33333 1.66667H11.6667C12.1087 1.66667 12.5326 1.84227 12.8452 2.15483C13.1577 2.46739 13.3333 2.89131 13.3333 3.33334V5.00001M8.33333 9.16667V14.1667M11.6667 9.16667V14.1667\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"sub-title fw-semibold my-5\">{{obj.description || 'NA'}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" />\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.storeCount || '--'}} Stores</span>\r\n </div>\r\n <div><span class=\"me-3\"><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?.userCount || '--'}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <ng-container *ngIf=\"loading && !groups.length\" >\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 </ng-container>\r\n <!-- No group Illustration -->\r\n <div *ngIf=\"!loading && !groups?.length\" class=\"d-flex justify-content-center my-20 w-100\">\r\n <div class=\"w-350px d-grid align-items-center text-center\">\r\n <img class=\"mx-auto\" src=\"./assets/tango/Images/storesIllustration.png\" alt=\"\">\r\n\r\n <span class=\"illustcontent\"> Start by creating a group</span>\r\n <span class=\"text-sub\">You can view all your groups here</span>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" class=\"btn btn-primary w-100 mt-10\">\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=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n Create Group\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <lib-group-details></lib-group-details> -->","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\n\r\n@Component({\r\n selector: \"lib-filters-custom\",\r\n templateUrl: \"./filters.component.html\",\r\n styleUrl: \"./filters.component.scss\",\r\n})\r\nexport class FiltersComponent implements OnInit {\r\n @Input() dataObject: any[];\r\n @Output() AppliedFilters = new EventEmitter<any>();\r\n\r\n Opendropdown: boolean = false;\r\n\r\n showdropdown: any;\r\n selectedValues: string[] = [];\r\n selectedValuesArray: any[] = [];\r\n searchValue: any;\r\n backUpArray: any[] = [];\r\n noFilter: boolean = false;\r\n responseArray: any[] = [];\r\n cityIndex: number;\r\n stateIndex: number;\r\n countryIndex: number;\r\n\r\n constructor(\r\n private storesService: StoresService,\r\n private cd: ChangeDetectorRef,\r\n ) {}\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(\".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 ngOnInit() {\r\n this.backUpArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.responseArray = JSON.parse(JSON.stringify(this.dataObject));\r\n this.countryIndex = this.dataObject.findIndex(option => option.Description === \"Country\");\r\n this.stateIndex = this.dataObject.findIndex(option => option.Description === \"State\");\r\n this.cityIndex = this.dataObject.findIndex(option => option.Description === \"City\");\r\n }\r\n\r\n opendropdown(e: MouseEvent) {\r\n e.stopPropagation(); \r\n this.dataObject.forEach((item: any, index: any) => {\r\n this.selectedValuesArray[index] = item.selected.map((x: any) => x.text);\r\n item.Issues.forEach((el: any) => {\r\n const isChecked = item.selected.includes(item.text);\r\n const checkboxId = `option${item.text}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n });\r\n this.cd.detectChanges();\r\n this.Opendropdown = !this.Opendropdown;\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; // Close other dropdowns\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n\r\n toggleCheckboxs(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n const selectedValues = this.selectedValuesArray[index] || [];\r\n\r\n if (issue === \"Select All\") {\r\n const currentIssueTexts = currentIssues.map((item: any) => item.text);\r\n this.selectedValuesArray[index] =\r\n selectedValues.length === currentIssueTexts.length\r\n ? []\r\n : [...currentIssueTexts];\r\n } else {\r\n const updatedSelectedValues = new Set(selectedValues);\r\n if (updatedSelectedValues.has(issue)) {\r\n updatedSelectedValues.delete(issue);\r\n } else {\r\n updatedSelectedValues.add(issue);\r\n }\r\n this.selectedValuesArray[index] = Array.from(updatedSelectedValues);\r\n }\r\n\r\n const selectAllId = `selectall${index}`;\r\n const selectAllElement = document.getElementById(\r\n selectAllId\r\n ) as HTMLInputElement;\r\n if (selectAllElement) {\r\n selectAllElement.checked = selectedValues.length === currentIssues.length;\r\n }\r\n\r\n currentIssues.forEach((item: any) => {\r\n const isChecked = selectedValues.includes(item.text);\r\n const checkboxId = `option${item.text}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n toggleCheckbox(issue: string, index: number) {\r\n const currentIssues = this.dataObject[index].Issues;\r\n const selectedValues = this.selectedValuesArray[index] || [];\r\n if (selectedValues.includes(issue)) {\r\n this.selectedValuesArray[index] = selectedValues.filter(\r\n (item: any) => item !== issue\r\n );\r\n } else {\r\n this.selectedValuesArray[index] = [issue];\r\n }\r\n currentIssues.forEach((item: any) => {\r\n const isChecked = selectedValues.includes(item.text);\r\n const checkboxId = `option${item.text}`;\r\n const checkboxElement = document.getElementById(\r\n checkboxId\r\n ) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.checked = isChecked;\r\n }\r\n });\r\n }\r\n\r\n countrySelection(issue: any, i: number) {\r\n if(this.dataObject[i].Description == 'Country') {\r\n if (this.selectedValuesArray[i]?.includes(issue.text)) {\r\n this.getStates(issue.id);\r\n } else {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n }\r\n }\r\n }\r\n\r\n stateSelection(issue: any, i: number) {\r\n if(this.dataObject[i].Description == 'State') {\r\n if (this.selectedValuesArray[i]?.includes(issue.text)) {\r\n const country = this.dataObject[this.countryIndex].Issues.filter((c:any)=>c.text == this.selectedValuesArray[this.countryIndex][0])[0];\r\n if(country) {\r\n this.getCities(country.id,issue.id);\r\n }\r\n } else {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n }\r\n }\r\n }\r\n\r\n getStates(countryCode: string) {\r\n this.storesService.getStates({ country: countryCode }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.dataObject[this.stateIndex].Issues = extractedData;\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n this.getCities(countryCode, extractedData[0].id);\r\n } else {\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[this.stateIndex].Issues = [];\r\n this.selectedValuesArray[this.stateIndex] = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n getCities(countryCode: string, stateCode: string) {\r\n this.storesService\r\n .getCities({ country: countryCode, state: stateCode })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.dataObject[this.cityIndex].Issues = extractedData;\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n } else {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[this.cityIndex].Issues = [];\r\n this.selectedValuesArray[this.cityIndex] = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n Reset() {\r\n this.selectedValuesArray = [];\r\n this.responseArray.forEach((item: any, index: any) => {\r\n this.responseArray[index].selected = []\r\n });\r\n this.dataObject.forEach((item: any, index: any) => {\r\n this.dataObject[index].selected = []\r\n });\r\n this.backUpArray.forEach((item: any, index: any) => {\r\n this.backUpArray[index].selected = []\r\n });\r\n }\r\n\r\n searchData(event: any, i: any) {\r\n const filteredIssues = this.backUpArray[i].Issues.filter((item: any) =>\r\n new RegExp(event.target.value, \"i\").test(item.text)\r\n );\r\n this.dataObject[i].Issues = filteredIssues;\r\n if (filteredIssues.length) {\r\n this.noFilter = false;\r\n } else {\r\n this.noFilter = true;\r\n }\r\n }\r\n\r\n Apply() {\r\n for (let i = 0; i < this.selectedValuesArray.length; i++) {\r\n const selectedValues = this.selectedValuesArray[i];\r\n const issues = this.dataObject[i].Issues;\r\n\r\n if (selectedValues) {\r\n this.selectedValuesArray[i] = selectedValues.map((selectedId: any) => {\r\n const issue = issues.find(\r\n (issueItem: any) => issueItem.text === selectedId\r\n );\r\n return issue ? issue : \"\"; // Get the text corresponding to the id\r\n });\r\n }\r\n }\r\n this.Opendropdown = false;\r\n this.selectedValuesArray.forEach((item: any, index: any) => {\r\n this.selectedValuesArray[index] = item;\r\n });\r\n this.responseArray.forEach((item: any, index: any) => {\r\n delete item.isOpen;\r\n item.selected = this.selectedValuesArray[index]\r\n ? this.selectedValuesArray[index]\r\n : [];\r\n });\r\n this.AppliedFilters.emit(this.responseArray);\r\n }\r\n}\r\n","<div class=\"position-relative\">\r\n \r\n <button type=\"button\" (click)=\"opendropdown($event)\" \r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span> </button>\r\n \r\n <div class=\"card p-5 dropdown1 position-absolute\" *ngIf=\"Opendropdown\">\r\n <span class=\"dropdown-title\">Filter Options</span>\r\n <div class=\"w-100 border border-gray mt-3\"></div>\r\n <div class=\"py-3\" *ngFor=\"let item of dataObject; let i = index\">\r\n <div class=\"dropdown form-select position-relative d-flex justify-content-between\" (click)=\"Dropdown(item.Description,i,$event)\">\r\n <!-- <span class=\"\">{{ selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined ? selectedValuesArray[i]?.length + ' ' + item.Description.split(' ').pop() + ' Selected' : item.Description }}</span> -->\r\n <span class=\"\">{{item.Description}}</span> <span *ngIf=\"selectedValuesArray[i]?.length !== null && selectedValuesArray[i]?.length !== undefined && selectedValuesArray[i]?.length !== 0\" class=\"badge badge-light-default\">{{selectedValuesArray[i]?.length}}</span>\r\n </div>\r\n <div *ngIf=\"item.isOpen\" class=\"dropdown-content position-absolute w-100\">\r\n @if(item.multiDropdown) {\r\n <div class=\"form-check d-flex align-items-center py-3 pt-3 ps-0\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"Select All\" id=\"selectall{{i}}\" [checked]=\"selectedValuesArray[i]?.length === item.Issues.length\"\r\n (change)=\"toggleCheckboxs('Select All', i)\">\r\n <label class=\"form-check-label px-2\" for=\"selectall{{i}}\">\r\n Select All\r\n </label>\r\n </div>\r\n \r\n <div class=\"border border-gray mt-3 \"></div>\r\n \r\n <div class=\"mt-3 d-flex align-items-center\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3 mt-2\">\r\n <svg 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 </span>\r\n <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\" class=\"form-control searchinput ps-14 py-2 me-2 mt-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n </div>\r\n \r\n <div *ngFor=\"let issue of item.Issues;let j=index;\" class=\"form-check d-flex align-items-center py-3 pt-3 ps-0 mt-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\" [checked]=\"selectedValuesArray[i]?.includes(issue.text)\"\r\n (change)=\"toggleCheckboxs(issue.text,i)\">\r\n <label class=\"form-check-label px-2\" for=\"option{{issue.text}}\">\r\n {{ issue.text }}\r\n </label>\r\n </div>\r\n <div class=\"mt-5 d-flex justify-content-center\">\r\n <span class=\"form-check-label\" *ngIf=\"!item.Issues && !item.Issues.length\"> No filters available</span>\r\n </div>\r\n } @else {\r\n <div class=\"mt-3 d-flex align-items-center\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3 mt-2\">\r\n <svg 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 </span>\r\n <input type=\"text\" [(ngModel)]=\"searchValue\" (input)=\"searchData($event,i)\" class=\"form-control searchinput ps-14 py-2 me-2 mt-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n </div>\r\n \r\n <div *ngFor=\"let issue of item.Issues;let j=index;\" class=\"form-check d-flex align-items-center py-3 pt-3 ps-0 mt-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [value]=\"issue.text\" id=\"option{{issue.text}}\" [checked]=\"selectedValuesArray[i]?.includes(issue.text)\"\r\n (change)=\"toggleCheckbox(issue.text,i);countrySelection(issue,i);stateSelection(issue,i);\">\r\n <label class=\"form-check-label px-2\" for=\"option{{issue.text}}\">\r\n {{ issue.text }}\r\n </label>\r\n </div>\r\n <div *ngIf=\"!item.Issues.length\" class=\"mt-5 d-flex justify-content-center\">\r\n <span class=\"form-check-label\" > No filters available</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n \r\n <div role=\"group\" class=\"d-flex justify-content-between\">\r\n <button class=\"btn btn-outline w-100 me-2\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-100 ms-2\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n","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 { Router } from \"@angular/router\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { GroupService } from \"../../services/group.service\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from \"rxjs\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\n\r\n@Component({\r\n selector: \"lib-group-details\",\r\n templateUrl: \"./group-details.component.html\",\r\n styleUrl: \"./group-details.component.scss\",\r\n})\r\nexport class GroupDetailsComponent implements OnInit, OnDestroy {\r\n // Table\r\n filterOptions: any[];\r\n searchValue: any;\r\n storeList: any[] = [];\r\n storeList_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 columns: any[];\r\n paginationSizes: number[] = [10, 20, 30];\r\n receivedData: string = \"stores\";\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private detach = new Subject();\r\n\r\n @Output() dataEvent = new EventEmitter<string>();\r\n group: any;\r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private storesService: StoresService,\r\n private changeDetector: ChangeDetectorRef,\r\n private groupService: GroupService,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private router: Router,\r\n ) {\r\n this.groupService.groupComms.subscribe({\r\n next: (group: any) => {\r\n this.group = group;\r\n },\r\n });\r\n this.initSearch();\r\n }\r\n\r\n backToGroup() {\r\n const dataToGroup = \"groups\";\r\n this.dataEvent.emit(dataToGroup);\r\n }\r\n\r\n initSearch() {\r\n this.searchInput.valueChanges\r\n .pipe(debounceTime(1000), distinctUntilChanged())\r\n .subscribe((e) => {\r\n this.storeList_req.searchValue = e;\r\n this.loadTable();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.detach.next(true);\r\n this.detach.complete();\r\n }\r\n\r\n receiveGroupData(data: string) {\r\n this.receivedData = data;\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Stores\");\r\n this.pageInfo.setDescription(\"To optimize and improve existing algorithm\");\r\n this.pageInfo.setBreadcrumbs([\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: false },\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: true },\r\n ]);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = [\r\n {\r\n Description: \"Completeness\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"25%\", id: \"25\" },\r\n { text: \"50%\", id: \"50\" },\r\n { text: \"75%\", id: \"75\" },\r\n { text: \"100%\", id: \"100\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Status\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Live\", id: \"live\" },\r\n { text: \"Onboarded\", id: \"onboarded\" },\r\n { text: \"Paired\", id: \"paired\" },\r\n { text: \"Installation Failed\", id: \"installationfailed\" },\r\n { text: \"Infra Issue\", id: \"infra\" },\r\n { text: \"Deactivated\", id: \"deactivated\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Issue\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Application Issue\", id: \"application\" },\r\n { text: \"Camera Issue\", id: \"camera\" },\r\n { text: \"Internet Issue\", id: \"internet\" },\r\n { text: \"Store Operation\", id: \"store\" },\r\n { text: \"System Issue\", id: \"system\" },\r\n ],\r\n selected: [],\r\n },\r\n // {\r\n // Description: \"Issue Types\",\r\n // multiDropdown: true,\r\n // Issues: [\r\n // { text: \"Pending from Client\", id: \"pendingclient\" },\r\n // { text: \"Pending from Tango\", id: \"pendingtango\" },\r\n // ],\r\n // selected: []\r\n // },\r\n {\r\n Description: \"Country\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"State\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"City\",\r\n multiDropdown: true,\r\n Issues: [],\r\n selected: [],\r\n },\r\n ];\r\n this.columns = [\r\n {\r\n column: \"storeId\",\r\n direction: 1,\r\n },\r\n {\r\n column: \"city\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"spocContact\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"downTime\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"status\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"statusDetail\",\r\n direction: 0,\r\n },\r\n ];\r\n this.gs.dataRangeValue.pipe(takeUntil(this.detach)).subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.$headerFilters = data;\r\n this.getCountries();\r\n this.storeList_req = {\r\n // fromDate: this.$headerFilters.date?.startDate\r\n // ? this.$headerFilters.date.startDate\r\n // : new Date()\r\n // .toISOString()\r\n // .split(\"T\")[0],\r\n // toDate: this.$headerFilters.date?.endDate\r\n // ? this.$headerFilters.date.endDate\r\n // : new Date()\r\n // .toISOString()\r\n // .split(\"T\")[0],\r\n clientId: [this.$headerFilters.client],\r\n offset: 1,\r\n limit: 10,\r\n sortColumName: \"storeId\",\r\n sortBy: 1,\r\n searchValue: \"\",\r\n export: false,\r\n groupName: this.group.groupName\r\n };\r\n this.loadTable();\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: () => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n\r\n this.setPageData();\r\n }\r\n\r\n searchStore() {\r\n this.loadTable();\r\n }\r\n\r\n Selecttabs(value: any) {\r\n this.receivedData = value;\r\n }\r\n\r\n applyFilter(appliedFilters: any) {\r\n let issuesObject: any = {\r\n completeness: [],\r\n status: [],\r\n issue: [],\r\n country: [],\r\n state: [],\r\n city: [],\r\n };\r\n appliedFilters.forEach((option: any, index: number) => {\r\n this.filterOptions[index].selected = option.selected;\r\n const key = option.Description.toLowerCase();\r\n if (key === \"country\" || key === \"state\" || key === \"city\") {\r\n issuesObject[key] = option.selected.map((x: any) => x.text);\r\n } else {\r\n issuesObject[key] = option.selected.map((x: any) => x.id);\r\n }\r\n });\r\n this.changeDetector.detectChanges();\r\n this.storeList_req = { ...this.storeList_req, ...issuesObject };\r\n this.loadTable();\r\n }\r\n\r\n getCountries() {\r\n const countryIndex: number = this.filterOptions.findIndex(\r\n (option) => option.Description === \"Country\"\r\n );\r\n this.storesService.getCountries().subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.filterOptions[countryIndex].Issues = extractedData;\r\n } else {\r\n this.filterOptions[countryIndex].Issues = [];\r\n }\r\n },\r\n error: () => {\r\n this.filterOptions[countryIndex].Issues = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.storesService.getStoreList(this.storeList_req).subscribe({\r\n next: (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.storeList = res.data.result;\r\n this.pagination = {\r\n offset: res.data?.offset\r\n ? res?.data.offset\r\n : this.pagination.offset,\r\n limit: res.data?.limit ? res?.data.limit : this.pagination.limit,\r\n totalCount: res.data.count,\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.storeList = [];\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: () => {\r\n this.storeList = [];\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 complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n this.storeList_req.offset = 1;\r\n this.storeList_req.limit = 10000;\r\n this.storeList_req.export = true;\r\n this.storesService\r\n .getStoreListExport(this.storeList_req)\r\n .subscribe((res: any) => {\r\n if (res) {\r\n this.excelService.saveAsExcelFile(res, \"storesList\");\r\n }\r\n });\r\n }\r\n\r\n navigateToStore(storeId: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = storeId;\r\n // this.gs.dataRangeValue.next(data);\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`manage/stores/${storeId}/settings`]);\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.storeList_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.storeList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.storeList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.loadTable();\r\n }\r\n\r\n isLinkActive(link: string): boolean {\r\n return this.router.isActive(link, true);\r\n }\r\n\r\n onSort(column: string) {\r\n this.columns.forEach((el: any, i: number) => {\r\n if (el.column == column) {\r\n this.storeList_req.sortColumName = column;\r\n if (this.columns[i].direction == 0) {\r\n this.columns[i].direction = 1;\r\n this.storeList_req.sortBy = 1;\r\n } else if (this.columns[i].direction == 1) {\r\n this.columns[i].direction = -1;\r\n this.storeList_req.sortBy = -1;\r\n } else if (this.columns[i].direction == -1) {\r\n this.columns[i].direction = 0;\r\n this.storeList_req.sortBy = -1;\r\n this.storeList_req.sortColumName = \"storeId\";\r\n }\r\n } else {\r\n this.columns[i].direction = 0;\r\n }\r\n });\r\n this.loadTable();\r\n }\r\n\r\n colDirection(column: string): number {\r\n return this.columns.filter((el) => el.column == column)[0].direction;\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 goToEdgeApp(store: any) {\r\n this.router.navigate([\"/manage/stores/edge-app/edge-email-journey\"], {\r\n queryParams: { store: store.store },\r\n });\r\n }\r\n\r\n deactivateStore(store: any) {}\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <div class=\"d-flex justify-content-left align-items-center\">\r\n <div class=\"backArrow d-flex justify-content-center align-items-center me-5 ml-0\">\r\n <button (click)=\"backToGroup()\"\r\n class=\"btn btn-default mx-2 btn-outline-default rounded-3 text-nowrap\"><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 <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label\">{{group?.groupName}}</span>\r\n <span class=\"text-sub mb-2\">{{ pagination.totalCount ? pagination.totalCount : '--'}} stores in this group</span>\r\n </h3>\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\" [formControl]=\"searchInput\" class=\"form-control ps-14 me-2\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- filter Start -->\r\n <lib-filters-custom [dataObject]=\"filterOptions\"\r\n (AppliedFilters)=\"applyFilter($event)\"></lib-filters-custom>\r\n <!-- filter End -->\r\n @if ((gs.userAccess | async)?.manage_stores_isDownload) { \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 </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"!loading && !noData\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead class=\"cursor-pointer\">\r\n <tr>\r\n <!-- <th>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </th> -->\r\n <th (click)=\"onSort('storeId')\">Store Info\r\n <span *ngIf=\"colDirection('storeId')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('storeId')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('city')\">Location\r\n <span *ngIf=\"colDirection('city')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('city')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('spocContact')\">SPOC Contact <span>\r\n <span *ngIf=\"colDirection('spocContact')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('spocContact')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('downTime')\">Downtime <span>\r\n <span *ngIf=\"colDirection('downTime')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('downTime')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('status')\">Status <span>\r\n <span *ngIf=\"colDirection('status')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('status')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('statusDetail')\">Status Detail <span>\r\n <span *ngIf=\"colDirection('statusDetail')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('statusDetail')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let store of storeList;let i=index;\">\r\n <tr>\r\n <!-- <td>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </td> -->\r\n <td class=\"cursor-pointer\" (click)=\"navigateToStore(store?.storeId);\"> \r\n <div class=\"table-title\">\r\n <span class=\"txt-light-primary\"> \r\n {{store?.storeName}}\r\n </span>\r\n </div>\r\n <div class=\"table-sub storeId\">ID : {{store?.storeId}}\r\n <span class=\"my-1 mx-1\">\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4\" cy=\"4\" r=\"3\" fill=\"#12B76A\" />\r\n </svg>\r\n {{store?.progress ? store?.progress : 20}}%\r\n <div class=\"h-5px w-100 bg-light mt-2\">\r\n <div class=\"bg-success rounded h-5px\" role=\"progressbar\" [ngStyle]=\"{ width: (store?.progress ? store?.progress : 20) + '%' }\"\r\n aria-valuemin=\"20\" aria-valuemax=\"100\"></div>\r\n </div>\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"w-200px\">\r\n @if (store?.city) {\r\n <div class=\"table-sub\">{{store?.city}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n @if (store?.country && store?.state) {\r\n <div class=\"table-sub\">{{store?.state}},{{store?.country}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n </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 {{store?.spocEmail.slice(0,2) | uppercase }} \r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"ms-2\">\r\n <div class=\"table-title\">{{store?.spocEmail || 'NA'}}</div>\r\n <div class=\"table-sub\">{{store?.spocContact || 'NA'}}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"fw-semibold\">{{store?.downTime}}</td>\r\n <td><span class=\"badge badge-light-primary\">{{store?.status || 'NA'}}</span></td>\r\n <td>\r\n <div class=\"table-title\">{{store?.statusDetail || 'NA'}}</div>\r\n <!-- <div class=\"table-sub\">Pending from Client</div> -->\r\n </td>\r\n <td>\r\n <button type=\"button\" (click)=\"goToEdgeApp(store)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>Config</span>\r\n </button>\r\n <span class=\"dropdown\">\r\n <button class=\"options-class\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M18.0001 18.8334C18.4603 18.8334 18.8334 18.4603 18.8334 18C18.8334 17.5398 18.4603 17.1667 18.0001 17.1667C17.5398 17.1667 17.1667 17.5398 17.1667 18C17.1667 18.4603 17.5398 18.8334 18.0001 18.8334Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 13C18.4603 13 18.8334 12.6269 18.8334 12.1667C18.8334 11.7065 18.4603 11.3334 18.0001 11.3334C17.5398 11.3334 17.1667 11.7065 17.1667 12.1667C17.1667 12.6269 17.5398 13 18.0001 13Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 24.6667C18.4603 24.6667 18.8334 24.2936 18.8334 23.8334C18.8334 23.3731 18.4603 23 18.0001 23C17.5398 23 17.1667 23.3731 17.1667 23.8334C17.1667 24.2936 17.5398 24.6667 18.0001 24.6667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li (click)=\"navigateToStore(store?.storeId);\"><button class=\"dropdown-item\"\r\n type=\"button\">Edit Store</button></li>\r\n <li><button class=\"dropdown-item\" (click)=\"deactivateStore(store)\"\r\n type=\"button\">Deactivate</button></li>\r\n </ul>\r\n </span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [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 </ng-container>\r\n <ng-container *ngIf=\"loading && !noData\">\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 </ng-container>\r\n <ng-container *ngIf=\"noData && !loading\">\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>\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { PageInfoService } from \"tango-app-ui-global\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { Subject, debounceTime, distinctUntilChanged, filter, takeUntil } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nexport interface pagination {\r\n limit: number;\r\n offset: number;\r\n totalCount: number;\r\n}\r\n\r\n@Component({\r\n selector: \"lib-tango-manage-stores\",\r\n templateUrl: \"./tango-manage-stores.component.html\",\r\n styleUrl: \"./tango-manage-stores.component.scss\",\r\n})\r\nexport class TangoManageStoresComponent implements OnInit, OnDestroy {\r\n // Table\r\n filterOptions: any[];\r\n searchValue: any;\r\n storeList: any[] = [];\r\n storeList_req: any;\r\n pagination: pagination = {\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 columns: any[];\r\n paginationSizes: number[] = [10, 20, 30];\r\n receivedData: string = \"stores\";\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private detach = new Subject();\r\n user: any;\r\n\r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private storesService: StoresService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private router: Router,\r\n private ts: ToastService\r\n ) {\r\n this.initSearch();\r\n \r\n }\r\n\r\n initSearch() {\r\n this.user = JSON.parse(localStorage.getItem('user-info') || '{}')\r\n this.searchInput.valueChanges\r\n .pipe(debounceTime(1000), distinctUntilChanged())\r\n .subscribe((e) => {\r\n this.storeList_req.searchValue = e;\r\n this.loadTable();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.detach.next(true);\r\n this.detach.complete();\r\n }\r\n\r\n receiveGroupData(data: string) {\r\n this.receivedData = data;\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Stores\");\r\n this.pageInfo.setDescription(\"To optimize and improve existing algorithm\");\r\n this.pageInfo.setBreadcrumbs([\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: false },\r\n { title: \"Manage\", path: \"/manage\", isActive: false, isSeparator: true },\r\n ]);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = [\r\n {\r\n Description: \"Completeness\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"20%\", id: \"20\" },\r\n { text: \"40%\", id: \"40\" },\r\n { text: \"60%\", id: \"60\" },\r\n { text: \"80%\", id: \"80\" },\r\n { text: \"100%\", id: \"100\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Status\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Live\", id: \"live\" },\r\n { text: \"Onboarded\", id: \"onboarded\" },\r\n { text: \"Paired\", id: \"paired\" },\r\n { text: \"Installation Failed\", id: \"installationfailed\" },\r\n { text: \"Infra Issue\", id: \"infra\" },\r\n { text: \"Deactivated\", id: \"deactivated\" },\r\n ],\r\n selected: [],\r\n },\r\n {\r\n Description: \"Issue\",\r\n multiDropdown: true,\r\n Issues: [\r\n { text: \"Application Issue\", id: \"application\" },\r\n { text: \"Camera Issue\", id: \"camera\" },\r\n { text: \"Internet Issue\", id: \"internet\" },\r\n { text: \"Store Operation\", id: \"store\" },\r\n { text: \"System Issue\", id: \"system\" },\r\n ],\r\n selected: [],\r\n },\r\n // {\r\n // Description: \"Issue Types\",\r\n // multiDropdown: true,\r\n // Issues: [\r\n // { text: \"Pending from Client\", id: \"pendingclient\" },\r\n // { text: \"Pending from Tango\", id: \"pendingtango\" },\r\n // ],\r\n // selected: []\r\n // },\r\n {\r\n Description: \"Country\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"State\",\r\n multiDropdown: false,\r\n Issues: [],\r\n selected: [],\r\n },\r\n {\r\n Description: \"City\",\r\n multiDropdown: true,\r\n Issues: [],\r\n selected: [],\r\n },\r\n ];\r\n this.columns = [\r\n {\r\n column: \"storeId\",\r\n direction: 1,\r\n },\r\n {\r\n column: \"city\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"spocContact\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"downTime\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"status\",\r\n direction: 0,\r\n },\r\n {\r\n column: \"statusDetail\",\r\n direction: 0,\r\n },\r\n ];\r\n this.gs.dataRangeValue.pipe(takeUntil(this.detach)).subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.$headerFilters = data;\r\n this.getCountries();\r\n this.storeList_req = {\r\n // fromDate: this.$headerFilters.date?.startDate\r\n // ? this.$headerFilters.date.startDate\r\n // : new Date()\r\n // .toISOString()\r\n // .split(\"T\")[0],\r\n // toDate: this.$headerFilters.date?.endDate\r\n // ? this.$headerFilters.date.endDate\r\n // : new Date()\r\n // .toISOString()\r\n // .split(\"T\")[0],\r\n clientId: [this.$headerFilters.client],\r\n offset: 1,\r\n limit: 10,\r\n sortColumName: \"storeId\",\r\n sortBy: -1,\r\n searchValue: \"\",\r\n export: false,\r\n };\r\n this.loadTable();\r\n } \r\n },\r\n error: () => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n const isStoresActive = this.router.isActive(\"/manage/stores\", true);\r\n const isGroupsActive = this.router.isActive(\r\n \"/manage/stores/groups\",\r\n true\r\n );\r\n if (isStoresActive) {\r\n }\r\n if (isGroupsActive) {\r\n }\r\n });\r\n\r\n this.setPageData();\r\n }\r\n\r\n searchStore() {\r\n this.loadTable();\r\n }\r\n\r\n Selecttabs(value: any) {\r\n this.receivedData = value;\r\n }\r\n\r\n applyFilter(appliedFilters: any) {\r\n let issuesObject: any = {\r\n completeness: [],\r\n status: [],\r\n issue: [],\r\n country: [],\r\n state: [],\r\n city: [],\r\n };\r\n appliedFilters.forEach((option: any, index: number) => {\r\n this.filterOptions[index].selected = option.selected;\r\n const key = option.Description.toLowerCase();\r\n if (key === \"country\" || key === \"state\" || key === \"city\") {\r\n issuesObject[key] = option.selected.map((x: any) => x.text);\r\n } else {\r\n issuesObject[key] = option.selected.map((x: any) => x.id);\r\n }\r\n });\r\n this.changeDetector.detectChanges();\r\n this.storeList_req = { ...this.storeList_req, ...issuesObject };\r\n this.loadTable();\r\n }\r\n\r\n getCountries() {\r\n const countryIndex: number = this.filterOptions.findIndex(\r\n (option) => option.Description === \"Country\"\r\n );\r\n this.storesService.getCountries().subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n let extractedData = [];\r\n for (const item of res.data) {\r\n extractedData.push({\r\n text: item.name,\r\n id: item.isoCode,\r\n });\r\n }\r\n this.filterOptions[countryIndex].Issues = extractedData;\r\n } else {\r\n this.filterOptions[countryIndex].Issues = [];\r\n }\r\n },\r\n error: () => {\r\n this.filterOptions[countryIndex].Issues = [];\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.storesService.getStoreList(this.storeList_req).subscribe({\r\n next: (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.storeList = res.data.result;\r\n this.pagination = {\r\n offset: res.data?.offset\r\n ? res?.data.offset\r\n : this.pagination.offset,\r\n limit: res.data?.limit ? res?.data.limit : this.pagination.limit,\r\n totalCount: res.data.count,\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.storeList = [];\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: () => {\r\n this.storeList = [];\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 complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n let limit: number = this.storeList_req.limit;\r\n this.storeList_req.offset = 1;\r\n this.storeList_req.limit = 10000;\r\n this.storeList_req.export = true;\r\n this.storesService.getStoreListExport(this.storeList_req).subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n this.excelService.saveAsExcelFile(res, \"storesList\");\r\n } else {\r\n }\r\n },\r\n error: () => {},\r\n });\r\n this.storeList_req.limit = limit;\r\n this.storeList_req.export = false;\r\n }\r\n\r\n navigateToStore(storeId: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = storeId;\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`manage/stores/settings`],{ \r\n queryParams: { storeId: storeId }\r\n });\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.storeList_req.offset = Number(pageOffset);\r\n this.pagination.offset = Number(pageOffset);\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.storeList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.storeList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.loadTable();\r\n }\r\n\r\n isLinkActive(link: string): boolean {\r\n return this.router.isActive(link, true);\r\n }\r\n\r\n onSort(column: string) {\r\n this.columns.forEach((el: any, i: number) => {\r\n if (el.column == column) {\r\n this.storeList_req.sortColumName = column;\r\n if (this.columns[i].direction == 0) {\r\n this.columns[i].direction = 1;\r\n this.storeList_req.sortBy = 1;\r\n } else if (this.columns[i].direction == 1) {\r\n this.columns[i].direction = -1;\r\n this.storeList_req.sortBy = -1;\r\n } else if (this.columns[i].direction == -1) {\r\n this.columns[i].direction = 0;\r\n this.storeList_req.sortBy = -1;\r\n this.storeList_req.sortColumName = \"storeId\";\r\n }\r\n } else {\r\n this.columns[i].direction = 0;\r\n }\r\n });\r\n this.loadTable();\r\n }\r\n\r\n colDirection(column: string): number {\r\n return this.columns.filter((el) => el.column == column)[0].direction;\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 goToEdgeApp(store: any) {\r\n this.router.navigate([\"/manage/stores/edge-app/edge-email-journey\"], {\r\n queryParams: { storeId: store.storeId,ticketId:store.ticketId},\r\n });\r\n }\r\n goToEdgeAppconfig(store: any) {\r\n this.router.navigate([\"/manage/stores/edge-app/edge-installation\"], {\r\n queryParams: { storeId: store.storeId,ticketId:store.ticketId},\r\n });\r\n }\r\n goToStore(store: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = store.storeId;\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`/manage/stores/infrastructure`], {queryParams: { storeId: store.storeId }});\r\n }\r\n goToStoreInfra(store: any) {\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.store = store.storeId;\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n this.router.navigate([`/manage/stores/infra-ticket`], {queryParams: { storeId: store.storeId }});\r\n }\r\n\r\n updateStoreStatus(store: any) {\r\n this.storesService.updateStore(store.storeId, {status: store.status, storeName: store.storeName, clientId: this.$headerFilters.client}).pipe(takeUntil(this.detach)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200 && res.status === \"success\") {\r\n this.ts.getSuccessToast(\"Store Status Updated Successfully!\");\r\n this.loadTable();\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update Store Status!\");\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err.error.error);\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-5\">\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 class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('stores')\">\r\n <a [ngClass]=\"receivedData === 'stores'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Stores\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('groups')\">\r\n <a [ngClass]=\"receivedData === 'groups' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Groups\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"\" *ngIf=\"receivedData === 'stores'\">\r\n <div 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 <span class=\"card-label mb-2\">Stores</span>\r\n <span class=\"text-sub mb-2\">{{ pagination.totalCount ? pagination.totalCount : '--'}} total\r\n stores</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\" [formControl]=\"searchInput\" class=\"form-control ps-14 me-2\"\r\n placeholder=\"Search\" autocomplete=\"off\" />\r\n <!-- filter Start -->\r\n <!-- <lib-filters-custom [dataObject]=\"filterOptions\" (AppliedFilters)=\"applyFilter($event)\"></lib-filters-custom> -->\r\n <!-- filter End -->\r\n @if ((gs.userAccess | async)?.manage_stores_isDownload) {\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\">\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.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>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n }\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button routerLink=\"/manage/stores/addition-method\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\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=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Add Store</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n @if(!loading && !noData) {\r\n <ng-container>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead class=\"cursor-pointer\">\r\n <tr>\r\n <!-- <th>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </th> -->\r\n <th (click)=\"onSort('storeId')\">Store Info\r\n <span *ngIf=\"colDirection('storeId')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('storeId')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('city')\">Location\r\n <span *ngIf=\"colDirection('city')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('city')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </th>\r\n <th (click)=\"onSort('spocContact')\">SPOC Contact <span>\r\n <span *ngIf=\"colDirection('spocContact')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('spocContact')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('downTime')\">Downtime <span>\r\n <span *ngIf=\"colDirection('downTime')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('downTime')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('status')\">Status <span>\r\n <span *ngIf=\"colDirection('status')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('status')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th (click)=\"onSort('statusDetail')\">Status Detail <span>\r\n <span *ngIf=\"colDirection('statusDetail')===-1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"colDirection('statusDetail')===1\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n stroke=\"#667085\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span> </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let store of storeList;let i=index;\">\r\n <tr>\r\n <!-- <td>\r\n <form class=\"form\">\r\n <div class=\"form-group\">\r\n <div class=\"checkbox-inline\">\r\n <label class=\"checkbox\">\r\n <input type=\"checkbox\" checked=\"checked\" name=\"Checkboxes1\">\r\n </label>\r\n </div>\r\n </div>\r\n </form>\r\n </td> -->\r\n <td class=\"cursor-pointer\" (click)=\"navigateToStore(store?.storeId);\">\r\n <div class=\"table-title\">\r\n <span class=\"txt-light-primary\">\r\n {{store?.storeName}}\r\n </span>\r\n </div>\r\n <div class=\"table-sub\">ID : {{store?.storeId}}\r\n <span class=\"my-1 mx-1\">\r\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4\" cy=\"4\" r=\"3\" fill=\"#12B76A\" />\r\n </svg>\r\n {{store?.progress ? store?.progress : 20}}%\r\n <div class=\"h-5px w-100 bg-light mt-2\">\r\n <div class=\"bg-success rounded h-5px\" role=\"progressbar\"\r\n [ngStyle]=\"{ width: (store?.progress ? store?.progress : 20) + '%' }\"\r\n aria-valuemin=\"20\" aria-valuemax=\"100\"></div>\r\n </div>\r\n </span>\r\n </div>\r\n </td>\r\n <td class=\"w-200px\">\r\n @if (store?.city) {\r\n <div class=\"table-sub\">{{store?.city}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n @if (store?.country && store?.state) {\r\n <div class=\"table-sub\">{{store?.state}},{{store?.country}}</div>\r\n } @else {\r\n <div class=\"table-sub\">NA</div>\r\n }\r\n </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 {{store?.spocEmail.slice(0,2) | uppercase }}\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"ms-2\">\r\n <div class=\"table-title\">{{store?.spocEmail || 'NA'}}</div>\r\n <div class=\"table-sub\">{{store?.spocContact || 'NA'}}</div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"fw-semibold\">{{store?.downTime}}</td>\r\n <td><span class=\"badge badge-light-primary\">\r\n @if(store?.status=='onboareded') {\r\n Onboarded\r\n } @else if (store.status==='installationfailed') {\r\n Installation Failed\r\n } @else {\r\n {{store?.status | titlecase}}\r\n }\r\n </span>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">{{store?.statusDetail || 'NA'}}</div>\r\n <!-- <div class=\"table-sub\">Pending from Client</div> -->\r\n </td>\r\n <td> \r\n <button *ngIf=\"store.status==='Live'\" type=\"button\" (click)=\"goToStore(store)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>View</span>\r\n </button> \r\n <!-- @if (store.status!=='Live') {\r\n <button type=\"button\" disabled=\"true\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>View</span>\r\n </button>\r\n } -->\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button *ngIf=\"store.status==='onboareded'\" type=\"button\" (click)=\"goToEdgeApp(store)\" [disabled]=\"user.userType === 'tango'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>Pair</span>\r\n </button>\r\n <button *ngIf=\"store.status==='paired'|| store.status==='installationfailed'\" type=\"button\"\r\n (click)=\"goToEdgeAppconfig(store)\" [disabled]=\"user.userType === 'tango'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>Config</span>\r\n </button>\r\n <button *ngIf=\"store.status==='Infra Issue'\" type=\"button\" (click)=\"goToStoreInfra(store)\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span>infra</span>\r\n </button>\r\n <span class=\"dropdown\">\r\n <button class=\"options-class\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M18.0001 18.8334C18.4603 18.8334 18.8334 18.4603 18.8334 18C18.8334 17.5398 18.4603 17.1667 18.0001 17.1667C17.5398 17.1667 17.1667 17.5398 17.1667 18C17.1667 18.4603 17.5398 18.8334 18.0001 18.8334Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 13C18.4603 13 18.8334 12.6269 18.8334 12.1667C18.8334 11.7065 18.4603 11.3334 18.0001 11.3334C17.5398 11.3334 17.1667 11.7065 17.1667 12.1667C17.1667 12.6269 17.5398 13 18.0001 13Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.0001 24.6667C18.4603 24.6667 18.8334 24.2936 18.8334 23.8334C18.8334 23.3731 18.4603 23 18.0001 23C17.5398 23 17.1667 23.3731 17.1667 23.8334C17.1667 24.2936 17.5398 24.6667 18.0001 24.6667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li (click)=\"navigateToStore(store?.storeId);\"><button class=\"dropdown-item\" type=\"button\">Edit\r\n Store</button></li>\r\n @if(store?.storeStatus != 'active') {\r\n <li><button class=\"dropdown-item\" (click)=\"updateStoreStatus(store)\" type=\"button\">Deactivate</button></li>\r\n } @else {\r\n <li><button class=\"dropdown-item\" (click)=\"updateStoreStatus(store)\" type=\"button\">Activate</button></li>\r\n }\r\n </ul>\r\n </span>\r\n }\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </ng-container>\r\n } @else if (loading && !noData) {\r\n <ng-container>\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 </ng-container>\r\n } @else if (noData && !loading) {\r\n <ng-container>\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 }\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"receivedData === 'groups'\">\r\n <lib-tango-manage-groups (dataEvent)=\"receiveGroupData($event)\"></lib-tango-manage-groups>\r\n <!-- <lib-group-details *ngIf=\"\"></lib-group-details> -->\r\n <!-- <router-outlet></router-outlet> -->\r\n</div>\r\n\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Group Details 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-group-details (dataEvent)=\"receiveGroupData($event)\"></lib-group-details>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\nimport Swal from \"sweetalert2\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { StoreBulkItem } from \"../../interfaces/store.interface\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { Router } from \"@angular/router\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-stores\",\r\n templateUrl: \"./add-stores.component.html\",\r\n styleUrl: \"./add-stores.component.scss\",\r\n})\r\nexport class AddStoresComponent {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{10}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n $headerFilters: any;\r\n\r\n constructor(private storeService: StoresService,private ts: ToastService,private router: Router) {\r\n let data:any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.$headerFilters = data;\r\n }\r\n\r\n onUpload(e: any) {\r\n let data: StoreBulkItem[];\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] != \"StoreData\") {\r\n this.ts.getErrorToast(\"Please Upload the Valid File\");\r\n return;\r\n } else {\r\n data = utils.sheet_to_json(ws);\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 let promises = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].StoreName, \"store name\", i));\r\n errMsgs.push(this.validateField(data[i].StoreType, \"store type\", i));\r\n errMsgs.push(this.validateField(data[i].SpocName, \"spoc name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].BusinessType, \"business type\", i)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].SpocEmail,\r\n \"spoc email\",\r\n i,\r\n this.emailRegex\r\n )\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].SpocContact,\r\n \"spoc contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n errMsgs.push(this.validateField(data[i].TimeZone, \"timezone\", i));\r\n // errMsgs.push(\r\n // this.validateField(data[i].CameraCount, \"camera count\", i)\r\n // );\r\n // errMsgs.push(this.validateField(data[i].Latitude, \"latitude\", i));\r\n // errMsgs.push(this.validateField(data[i].Longitude, \"longitude\", i));\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 if(!data[i].Latitude) {\r\n data[i].Latitude = '0';\r\n }\r\n\r\n if(!data[i].Longitude) {\r\n data[i].Longitude = '0';\r\n }\r\n\r\n const promise = this.storeService\r\n .getAddress(Number(data[i].Latitude), Number(data[i].Longitude))\r\n .then((placeData: any) => {\r\n let storeProfile: any = {\r\n address: \"\",\r\n country: \"\",\r\n state: \"\",\r\n city: \"\",\r\n pincode: \"\",\r\n };\r\n // if(placeData.address_components) {\r\n // for (const component of placeData.address_components) {\r\n // const types = component.types;\r\n // if (types.includes(\"locality\")) {\r\n // storeProfile.city = component.long_name;\r\n // } else if (types.includes(\"administrative_area_level_1\")) {\r\n // storeProfile.state = component.long_name;\r\n // } else if (types.includes(\"country\")) {\r\n // storeProfile.country = component.long_name;\r\n // } else if (types.includes(\"postal_code\")) {\r\n // storeProfile.pincode = component.long_name;\r\n // } else if (\r\n // types.includes(\"premise\") ||\r\n // types.includes(\"sublocality_level_2\") ||\r\n // types.includes(\"sublocality_level_1\")\r\n // ) {\r\n // if (component.long_name) {\r\n // storeProfile.address += component.long_name + \",\";\r\n // }\r\n // }\r\n // }\r\n // if (storeProfile.address) {\r\n // storeProfile.address = storeProfile.address.slice(0, -1);\r\n // }\r\n // }\r\n data[i][\"storeProfile\"] = storeProfile;\r\n processedArray.push({\r\n storeName: data[i].StoreName,\r\n storeType: { type: data[i].StoreType },\r\n // edge: { camDetails: { cameras: data[i].CameraCount } },\r\n spocDetails: {\r\n name: data[i].SpocName,\r\n email: data[i].SpocEmail,\r\n contact: data[i].SpocContact.toString(),\r\n },\r\n storeProfile: {\r\n ...data[i].storeProfile,\r\n ...{ timeZone: data[i].TimeZone },\r\n },\r\n businessType: data[i].BusinessType,\r\n });\r\n })\r\n // .catch((error) => {\r\n // this.ts.getErrorToast(\r\n // `Please Upload the File with Valid latitude and longitude in row ${\r\n // i + 1\r\n // }`\r\n // );\r\n // });\r\n promises.push(promise);\r\n }\r\n Promise.all(promises)\r\n .then(() => {\r\n this.storeService\r\n .storeBulkUpload({\r\n stores: processedArray,\r\n clientId: this.$headerFilters?.client,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"Stores have been uploaded Successfully!\");\r\n if(res.data.stores && res.data.stores.length) {\r\n let bulkTicketsBody: any = res.data.stores.map((storeId:any)=>{\r\n return {\r\n storeId: storeId,\r\n Date: new Date().toISOString().split(\"T\")[0],\r\n issueType: \"installation\",\r\n };\r\n });\r\n this.storeService.bulkInfraTicket(bulkTicketsBody).subscribe({\r\n next:(res:any)=>{\r\n if(res && res.code) {\r\n this.ts.getSuccessToast('Store Installation Tickets created successfully!');\r\n this.router.navigate([\"/manage/stores\"]);\r\n }\r\n },\r\n error:(err:any)=>{\r\n this.ts.getErrorToast(err.error.error);\r\n }\r\n });\r\n }\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 })\r\n // .catch((error) => {\r\n // this.ts.getErrorToast(\"Unable to create stores!\");\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 ${\r\n row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-body d-flex flex-center flex-column p-9\">\r\n <div class=\"mb-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 <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Add stores </a>\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>Use the template to upload multiple stores at once.</li>\r\n <li>Download the template here -\r\n <a href=\"../../assets/files/storesUploadTemplate.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>Add your data to the Template File</li>\r\n <li>Upload it below for processing</li>\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\" 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 />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline btn-primary bg-primary btn-outline-default rounded-3 w-50 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\">\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 <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> \r\n <span class=\"text-white mx-2\">Add Multiple Stores</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-2\">Or </span> <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" routerLink=\"/manage/stores/add-single-store\"\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-50 p-4 mt-3\">\r\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1.18015 3.80378L1.1269 3.88695C0.568863 4.874 1.16469 6.12143 2.2363 6.26452C2.33339 6.27639 2.42373 6.28267 2.512 6.28267C3.09015 6.28267 3.60132 6.03465 3.95759 5.64792L4.51093 5.0473L5.06238 5.64965C5.41432 6.03407 5.92433 6.28267 6.50639 6.28267C7.08583 6.28267 7.59877 6.03372 7.95039 5.64965L8.50358 5.04541L9.05676 5.64965C9.40839 6.03372 9.92133 6.28267 10.5008 6.28267C11.0802 6.28267 11.5932 6.03372 11.9448 5.64965L12.498 5.04541L13.0511 5.64965C13.4028 6.03372 13.9157 6.28267 14.4952 6.28267C14.5805 6.28267 14.6736 6.27638 14.77 6.26462C15.8652 6.1153 16.463 4.80103 15.8243 3.80428C15.8242 3.80423 15.8242 3.80417 15.8242 3.80411L14.066 1.0627L14.066 1.0627L14.0651 1.06123C14.0499 1.0374 14.0124 1.01184 13.9652 1.01184H3.03581C2.98866 1.01184 2.95117 1.0374 2.93597 1.06124L2.93535 1.0622L1.18015 3.80378ZM14.1516 8.73706V11.869V12.619H13.4016H3.59943H2.84943V11.869V8.73753C2.7392 8.74573 2.62768 8.74994 2.51507 8.74994C2.47276 8.74994 2.43074 8.74931 2.389 8.74809V11.869V13.8035C2.389 14.4469 2.9229 14.988 3.59943 14.988H13.4016C14.0781 14.988 14.612 14.4469 14.612 13.8035V11.869V8.74827C14.5722 8.74937 14.5322 8.74994 14.4921 8.74994C14.3777 8.74994 14.2641 8.74559 14.1516 8.73706Z\" stroke=\"#344054\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span class=\"fw-bold fs-4 mx-2\">\r\n Add Single\r\n Store</span></label>\r\n </div>\r\n \r\n </div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormBuilder, FormArray, Validators, FormGroup, AbstractControl, ValidationErrors } from \"@angular/forms\";\r\nimport { StoresService } from \"../../services/stores.service\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { StoreResponse } from \"../../interfaces/store.interface\";\r\nimport { Router } from \"@angular/router\";\r\nimport * as moment from 'moment-timezone';\r\nimport { NgxGpAutocompleteDirective } from \"@angular-magic/ngx-gp-autocomplete/lib/ngx-gp-autocomplete.directive\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-stores-form\",\r\n templateUrl: \"./add-stores-form.component.html\",\r\n styleUrl: \"./add-stores-form.component.scss\",\r\n})\r\nexport class AddStoresFormComponent implements OnInit {\r\n @ViewChild(\"ngxPlaces\") placesRef: NgxGpAutocompleteDirective;\r\n\r\n select = \"store_info\";\r\n storeForm: FormGroup;\r\n storeId: string;\r\n timezones: any[];\r\n $headerFilters: any;\r\n\r\n public handleAddressChange(place: google.maps.places.PlaceResult | any) {\r\n if (place.geometry) {\r\n let country = \"\", city = \"\", state = \"\", pincode = \"\";\r\n place.address_components.forEach((component: any) => {\r\n if (component.types.includes(\"country\")) {\r\n country = component.long_name;\r\n } else if (component.types.includes(\"locality\")) {\r\n city = component.long_name;\r\n } else if (component.types.includes(\"administrative_area_level_1\")) {\r\n state = component.long_name;\r\n } else if (component.types.includes(\"postal_code\")) {\r\n pincode = component.long_name;\r\n }\r\n });\r\n this.storeForm.get('address')?.setValue(place.formatted_address);\r\n this.storeForm.get(\"country\")?.setValue(country);\r\n this.storeForm.get(\"city\")?.setValue(city);\r\n this.storeForm.get(\"state\")?.setValue(state);\r\n this.storeForm.get(\"pincode\")?.setValue(pincode);\r\n }\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private storesService: StoresService,\r\n private ts: ToastService,\r\n private router: Router\r\n ) {\r\n let data:any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.$headerFilters = data;\r\n this.getAllTimezones();\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n settingvalue(label: any) {\r\n if (label == \"store_info\") {\r\n this.select = \"store_info\";\r\n } else if (label == \"config\") {\r\n this.select = \"config\";\r\n } else if (label == \"store_loc\") {\r\n this.select = \"store_loc\";\r\n } else if (label == \"contact\") {\r\n this.select = \"contact\";\r\n } else if (label == \"review\") {\r\n this.select = \"review\";\r\n }\r\n }\r\n\r\n createForm() {\r\n this.storeForm = this.fb.group(\r\n {\r\n storeName: [\"\", Validators.required],\r\n clientId: [this.$headerFilters?.client, Validators.required],\r\n businessType: [\"COCO\", Validators.required],\r\n storeType_type: [\"High Street\", Validators.required],\r\n storeType_name: [\"\"],\r\n storeCode: [\"\"],\r\n address: [\"\", Validators.required],\r\n country: [\"\", Validators.required],\r\n state: [\"\", Validators.required],\r\n city: [\"\", Validators.required],\r\n pincode: [\"\", Validators.required],\r\n timeZone: [\"Asia/Kolkata\", Validators.required],\r\n open: [\"10:00\", Validators.required],\r\n close: [\"20:00\", Validators.required],\r\n // cameras: [0, Validators.required],\r\n spocDetails: this.fb.array([this.createSpocDetail()]),\r\n storeConnectionId: [\"\"],\r\n },\r\n { validators: this.timeRangeValidator }\r\n );\r\n }\r\n\r\n timeRangeValidator(control: AbstractControl): ValidationErrors | null {\r\n const openTime = control.get(\"open\")?.value;\r\n const closeTime = control.get(\"close\")?.value;\r\n if (openTime && closeTime && openTime >= closeTime) {\r\n return { invalidTimeRange: true };\r\n } \r\n return null;\r\n }\r\n\r\n createSpocDetail(): FormGroup {\r\n return this.fb.group({\r\n name: [\"\", Validators.required],\r\n email: [\r\n \"\",\r\n [\r\n Validators.required,\r\n Validators.email,\r\n Validators.maxLength(100),\r\n Validators.minLength(3),\r\n ],\r\n ],\r\n contact: [\r\n \"\",\r\n [\r\n Validators.required,\r\n Validators.maxLength(13),\r\n Validators.minLength(10),\r\n ],\r\n ],\r\n designation: [\"\"],\r\n });\r\n }\r\n\r\n getspocDetailsControls() {\r\n return (this.storeForm.get(\"spocDetails\") as FormArray).controls;\r\n }\r\n\r\n getspocDetailsValues(i: number) {\r\n return (this.storeForm.get(\"spocDetails\") as FormArray).at(i).value;\r\n }\r\n\r\n getStoreProfile(): FormGroup {\r\n return this.storeForm.get(\"storeProfile\") as FormGroup;\r\n }\r\n\r\n goToStoreInfo(): void {\r\n this.select = \"store_info\";\r\n }\r\n\r\n goToConfiguration(): void {\r\n this.select = \"config\";\r\n }\r\n\r\n goToContact(): void {\r\n this.select = \"contact\";\r\n }\r\n\r\n goToReview(): void {\r\n this.select = \"review\";\r\n }\r\n\r\n addSpocDetail() {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).push(\r\n this.createSpocDetail()\r\n );\r\n }\r\n\r\n addAltSpoc() {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).push(\r\n this.createSpocDetail()\r\n );\r\n }\r\n\r\n delAltSpoc() {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).removeAt(1);\r\n }\r\n\r\n removeSpocDetail(index: number) {\r\n (this.storeForm.get(\"spocDetails\") as FormArray).removeAt(index);\r\n }\r\n\r\n onSubmit() {\r\n if (this.storeForm.valid) {\r\n let store: StoreResponse = {\r\n storeName: this.storeForm.value.storeName,\r\n clientId: this.storeForm.value.clientId,\r\n businessType: this.storeForm.value.businessType,\r\n storeType: {\r\n type: this.storeForm.value.storeType_type,\r\n name: this.storeForm.value?.storeType_name,\r\n },\r\n storeProfile: {\r\n storeCode: this.storeForm.value?.storeCode,\r\n address: this.storeForm.value?.address,\r\n country: this.storeForm.value?.country,\r\n state: this.storeForm.value?.state,\r\n city: this.storeForm.value?.city,\r\n pincode: this.storeForm.value?.pincode,\r\n timeZone: this.storeForm.value?.timeZone,\r\n open: this.storeForm.value?.open,\r\n close: this.storeForm.value?.close,\r\n },\r\n // edge: {\r\n // camDetails: {\r\n // cameras: this.storeForm.value?.cameras,\r\n // },\r\n // },\r\n spocDetails: [\r\n {\r\n name: this.storeForm.value?.spocDetails[0].name,\r\n email: this.storeForm.value?.spocDetails[0].email,\r\n contact: this.storeForm.value?.spocDetails[0].contact,\r\n designation: this.storeForm.value?.spocDetails[0].designation,\r\n },\r\n ],\r\n storeConnectionId: this.storeForm.value?.storeConnectionId,\r\n };\r\n if (this.storeForm.value.spocDetails.length > 1) {\r\n for(let i=1;i<this.storeForm.value.spocDetails.length;i++) {\r\n store.spocDetails.push({\r\n name: this.storeForm.value?.spocDetails[i].name,\r\n email: this.storeForm.value?.spocDetails[i].email,\r\n contact: this.storeForm.value?.spocDetails[i].contact,\r\n designation: this.storeForm.value?.spocDetails[i].designation,\r\n });\r\n }\r\n }\r\n\r\n this.storesService.createStore(store).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200 && res.status === \"success\") {\r\n this.ts.getSuccessToast(\"Store Created Successfully!\");\r\n if (res.data.store && res.data.store.storeId) {\r\n this.storesService\r\n .createInfraTicket({\r\n storeId: res.data.store.storeId,\r\n Date: new Date().toISOString().split(\"T\")[0],\r\n issueType: \"installation\",\r\n })\r\n .subscribe({\r\n next: (res: any) => {},\r\n error: () => {},\r\n });\r\n }\r\n this.router.navigate([\"/manage/stores\"]);\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create store!\");\r\n }\r\n \r\n },\r\n error: (error: any) => {\r\n this.ts.getErrorToast(error?.error?.error ?error?.error?.error: \"Unable to create Store!\");\r\n }\r\n });\r\n } else {\r\n }\r\n }\r\n\r\n navigateToAddStore() {\r\n this.router.navigate([\"/manage/stores/addition-method\"]);\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 getAllTimezones() {\r\n this.timezones=moment.tz.names();\r\n }\r\n}\r\n","<div class=\"row mt-3 mb-6\">\r\n <div class=\"col-md-3 col-lg-3 col-xl-3 col-xxl-3\" id=\"left-container\">\r\n <div class=\"card card-flush h-100 mb-0\">\r\n <!--begin::Aside content-->\r\n <div class=\"card-body\">\r\n <div\r\n class=\"menu menu-column menu-rounded menu-state-bg menu-state-title-primary menu-state-icon-primary menu-state-bullet-primary\">\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'store_info' }\"\r\n (click)=\"settingvalue('store_info')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path stroke=\"currentColor\"\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Store Info</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Inbox-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'config' }\"\r\n (click)=\"settingvalue('config')\">\r\n <span class=\"menu-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1017_22270)\">\r\n <path\r\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M19.4 15C19.2669 15.3016 19.2272 15.6362 19.286 15.9606C19.3448 16.285 19.4995 16.5843 19.73 16.82L19.79 16.88C19.976 17.0657 20.1235 17.2863 20.2241 17.5291C20.3248 17.7719 20.3766 18.0322 20.3766 18.295C20.3766 18.5578 20.3248 18.8181 20.2241 19.0609C20.1235 19.3037 19.976 19.5243 19.79 19.71C19.6043 19.896 19.3837 20.0435 19.1409 20.1441C18.8981 20.2448 18.6378 20.2966 18.375 20.2966C18.1122 20.2966 17.8519 20.2448 17.6091 20.1441C17.3663 20.0435 17.1457 19.896 16.96 19.71L16.9 19.65C16.6643 19.4195 16.365 19.2648 16.0406 19.206C15.7162 19.1472 15.3816 19.1869 15.08 19.32C14.7842 19.4468 14.532 19.6572 14.3543 19.9255C14.1766 20.1938 14.0813 20.5082 14.08 20.83V21C14.08 21.5304 13.8693 22.0391 13.4942 22.4142C13.1191 22.7893 12.6104 23 12.08 23C11.5496 23 11.0409 22.7893 10.6658 22.4142C10.2907 22.0391 10.08 21.5304 10.08 21V20.91C10.0723 20.579 9.96512 20.258 9.77251 19.9887C9.5799 19.7194 9.31074 19.5143 9 19.4C8.69838 19.2669 8.36381 19.2272 8.03941 19.286C7.71502 19.3448 7.41568 19.4995 7.18 19.73L7.12 19.79C6.93425 19.976 6.71368 20.1235 6.47088 20.2241C6.22808 20.3248 5.96783 20.3766 5.705 20.3766C5.44217 20.3766 5.18192 20.3248 4.93912 20.2241C4.69632 20.1235 4.47575 19.976 4.29 19.79C4.10405 19.6043 3.95653 19.3837 3.85588 19.1409C3.75523 18.8981 3.70343 18.6378 3.70343 18.375C3.70343 18.1122 3.75523 17.8519 3.85588 17.6091C3.95653 17.3663 4.10405 17.1457 4.29 16.96L4.35 16.9C4.58054 16.6643 4.73519 16.365 4.794 16.0406C4.85282 15.7162 4.81312 15.3816 4.68 15.08C4.55324 14.7842 4.34276 14.532 4.07447 14.3543C3.80618 14.1766 3.49179 14.0813 3.17 14.08H3C2.46957 14.08 1.96086 13.8693 1.58579 13.4942C1.21071 13.1191 1 12.6104 1 12.08C1 11.5496 1.21071 11.0409 1.58579 10.6658C1.96086 10.2907 2.46957 10.08 3 10.08H3.09C3.42099 10.0723 3.742 9.96512 4.0113 9.77251C4.28059 9.5799 4.48572 9.31074 4.6 9C4.73312 8.69838 4.77282 8.36381 4.714 8.03941C4.65519 7.71502 4.50054 7.41568 4.27 7.18L4.21 7.12C4.02405 6.93425 3.87653 6.71368 3.77588 6.47088C3.67523 6.22808 3.62343 5.96783 3.62343 5.705C3.62343 5.44217 3.67523 5.18192 3.77588 4.93912C3.87653 4.69632 4.02405 4.47575 4.21 4.29C4.39575 4.10405 4.61632 3.95653 4.85912 3.85588C5.10192 3.75523 5.36217 3.70343 5.625 3.70343C5.88783 3.70343 6.14808 3.75523 6.39088 3.85588C6.63368 3.95653 6.85425 4.10405 7.04 4.29L7.1 4.35C7.33568 4.58054 7.63502 4.73519 7.95941 4.794C8.28381 4.85282 8.61838 4.81312 8.92 4.68H9C9.29577 4.55324 9.54802 4.34276 9.72569 4.07447C9.90337 3.80618 9.99872 3.49179 10 3.17V3C10 2.46957 10.2107 1.96086 10.5858 1.58579C10.9609 1.21071 11.4696 1 12 1C12.5304 1 13.0391 1.21071 13.4142 1.58579C13.7893 1.96086 14 2.46957 14 3V3.09C14.0013 3.41179 14.0966 3.72618 14.2743 3.99447C14.452 4.26276 14.7042 4.47324 15 4.6C15.3016 4.73312 15.6362 4.77282 15.9606 4.714C16.285 4.65519 16.5843 4.50054 16.82 4.27L16.88 4.21C17.0657 4.02405 17.2863 3.87653 17.5291 3.77588C17.7719 3.67523 18.0322 3.62343 18.295 3.62343C18.5578 3.62343 18.8181 3.67523 19.0609 3.77588C19.3037 3.87653 19.5243 4.02405 19.71 4.21C19.896 4.39575 20.0435 4.61632 20.1441 4.85912C20.2448 5.10192 20.2966 5.36217 20.2966 5.625C20.2966 5.88783 20.2448 6.14808 20.1441 6.39088C20.0435 6.63368 19.896 6.85425 19.71 7.04L19.65 7.1C19.4195 7.33568 19.2648 7.63502 19.206 7.95941C19.1472 8.28381 19.1869 8.61838 19.32 8.92V9C19.4468 9.29577 19.6572 9.54802 19.9255 9.72569C20.1938 9.90337 20.5082 9.99872 20.83 10H21C21.5304 10 22.0391 10.2107 22.4142 10.5858C22.7893 10.9609 23 11.4696 23 12C23 12.5304 22.7893 13.0391 22.4142 13.4142C22.0391 13.7893 21.5304 14 21 14H20.91C20.5882 14.0013 20.2738 14.0966 20.0055 14.2743C19.7372 14.452 19.5268 14.7042 19.4 15Z\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1017_22270\">\r\n <rect width=\"24\" height=\"24\" fill=\"currentColor\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"menu-title fw-bold \">Store Configuration</span>\r\n </span>\r\n <!--end::Inbox-->\r\n </div>\r\n\r\n <!--end::Menu item-->\r\n\r\n\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Draft-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'contact' }\"\r\n (click)=\"settingvalue('contact')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\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=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Contact Details</span>\r\n </span>\r\n <!--end::Draft-->\r\n </div>\r\n <!--end::Menu item-->\r\n <!--begin::Menu item-->\r\n <div class=\"menu-item my-3\">\r\n <!--begin::Trash-->\r\n <span class=\"menu-link\" [ngClass]=\"{ 'active': select === 'review'}\"\r\n (click)=\"settingvalue('review')\">\r\n <span class=\"menu-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M6 1C5.20435 1 4.44129 1.31607 3.87868 1.87868C3.31607 2.44129 3 3.20435 3 4V20C3 20.7957 3.31607 21.5587 3.87868 22.1213C4.44129 22.6839 5.20435 23 6 23H12H18C18.7957 23 19.5587 22.6839 20.1213 22.1213C20.6839 21.5587 21 20.7957 21 20V16.4208L19 18.4208V20C19 20.2652 18.8946 20.5196 18.7071 20.7071C18.5196 20.8946 18.2652 21 18 21H16.4208L15.3286 22.0922L12 23L12.5455 21H6C5.73478 21 5.48043 20.8946 5.29289 20.7071C5.10536 20.5196 5 20.2652 5 20V4C5 3.73478 5.10536 3.48043 5.29289 3.29289C5.48043 3.10536 5.73478 3 6 3H12V9C12 9.55228 12.4477 10 13 10H19V13.5792L21 11.5792V9C21 8.73478 20.8946 8.48043 20.7071 8.29289L13.7071 1.29289C13.5196 1.10536 13.2652 1 13 1H6ZM17.5858 8L14 4.41421V8H17.5858Z\"\r\n fill=\"currentColor\" />\r\n <path\r\n d=\"M20.0779 11.5014C20.2369 11.3424 20.4256 11.2163 20.6333 11.1303C20.8409 11.0443 21.0635 11 21.2883 11C21.5131 11 21.7357 11.0443 21.9434 11.1303C22.151 11.2163 22.3397 11.3424 22.4987 11.5014C22.6576 11.6603 22.7837 11.849 22.8698 12.0567C22.9558 12.2644 23.0001 12.487 23.0001 12.7117C23.0001 12.9365 22.9558 13.1591 22.8698 13.3668C22.7837 13.5745 22.6576 13.7632 22.4987 13.9221L15.3286 22.0923L12 23.0001L12.9078 19.6715L20.0779 11.5014Z\"\r\n stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"menu-title fw-bold \">Review & Submit</span>\r\n </span>\r\n <!--end::Trash-->\r\n </div>\r\n <!--end::Menu item-->\r\n\r\n\r\n </div>\r\n </div>\r\n <!--end::Menu-->\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 col-lg-9 col-xl-9 col-xxl-9\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-bottom-0\">\r\n <h1\r\n class=\"page-heading d-flex text-dark fw-bold fs-2 flex-column justify-content-center my-0 sub-head\">\r\n <span *ngIf=\"select === 'store_info'\">Enter Your Store Details</span>\r\n <span *ngIf=\"select === 'config'\">Enter Your Store Configuration</span>\r\n <span *ngIf=\"select === 'contact'\">Enter Primary SPOC details</span>\r\n <span *ngIf=\"select === 'review'\">Review & submit</span>\r\n </h1>\r\n <div [hidden]=\"select !== 'contact'\" class=\"card-toolbar\">\r\n <button (click)=\"addAltSpoc()\" class=\"btn btn-light-primary1 btn-sm\"><svg class=\"me-2\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" fill=\"none\">\r\n <path\r\n d=\"M2.7 3.5C2.7 2.57174 3.07928 1.6815 3.75442 1.02513C4.42955 0.368749 5.34522 0 6.3 0C7.25478 0 8.17045 0.368749 8.84558 1.02513C9.52072 1.6815 9.9 2.57174 9.9 3.5C9.9 4.42826 9.52072 5.3185 8.84558 5.97487C8.17045 6.63125 7.25478 7 6.3 7C5.34522 7 4.42955 6.63125 3.75442 5.97487C3.07928 5.3185 2.7 4.42826 2.7 3.5ZM0 13.1879C0 10.4945 2.24437 8.3125 5.01469 8.3125H7.58531C10.3556 8.3125 12.6 10.4945 12.6 13.1879C12.6 13.6363 12.2259 14 11.7647 14H0.835312C0.374063 14 0 13.6363 0 13.1879ZM14.175 8.53125V6.78125H12.375C12.0009 6.78125 11.7 6.48867 11.7 6.125C11.7 5.76133 12.0009 5.46875 12.375 5.46875H14.175V3.71875C14.175 3.35508 14.4759 3.0625 14.85 3.0625C15.2241 3.0625 15.525 3.35508 15.525 3.71875V5.46875H17.325C17.6991 5.46875 18 5.76133 18 6.125C18 6.48867 17.6991 6.78125 17.325 6.78125H15.525V8.53125C15.525 8.89492 15.2241 9.1875 14.85 9.1875C14.4759 9.1875 14.175 8.89492 14.175 8.53125Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>Add Alternate SPOC</button>\r\n </div>\r\n </div>\r\n <div class=\"card-body pt-1\">\r\n <form [formGroup]=\"storeForm\">\r\n <!-- Store Info Start -->\r\n <div [hidden]=\"select !== 'store_info'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeName\" class=\"form-label\">Store Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeName\" formControlName=\"storeName\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeName')?.invalid && storeForm.get('storeName')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeName')?.touched && storeForm.get('storeName')?.hasError('required')\">\r\n Store Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeCode\" class=\"form-label\">Store Code / Ref Code (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"storeCode\" formControlName=\"storeCode\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"businessType\" class=\"form-label\">Business Type</label>\r\n <select class=\"form-select\" id=\"businessType\" formControlName=\"businessType\">\r\n <option value=\"COCO\">COCO</option>\r\n <option value=\"COFO\">COFO</option>\r\n <option value=\"FOFO\">FOFO</option>\r\n <option value=\"FOCO\">FOCO</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 mb-5\">\r\n <label for=\"storeType\" class=\"form-label\">Store Type</label>\r\n <select class=\"form-select\" id=\"storeType\" formControlName=\"storeType_type\">\r\n <option value=\"High Street\">High Street</option>\r\n <option value=\"Mall Store\">Mall Store</option>\r\n <option value=\"Kiosk\">Kiosk</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 mb-5\" *ngIf=\"storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label for=\"mallName\" class=\"form-label\">Enter Mall Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"mallName\" formControlName=\"storeType_name\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('storeType_name')?.invalid && storeForm.get('storeType_name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('storeType_name')?.touched && storeForm.get('storeType_name')?.hasError('required')\">\r\n Mall Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"address\" class=\"form-label\">Address Line</label>\r\n <input type=\"text\" class=\"form-control\" id=\"address\" formControlName=\"address\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('address')?.invalid && storeForm.get('address')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('address')?.touched && storeForm.get('address')?.hasError('required')\">\r\n Address is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"country\" class=\"form-label\">Country</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"country\" formControlName=\"country\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('country')?.invalid && storeForm.get('country')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('country')?.touched && storeForm.get('country')?.hasError('required')\">\r\n Country is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"state\" class=\"form-label\">State</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"state\" formControlName=\"state\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('state')?.invalid && storeForm.get('state')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('state')?.touched && storeForm.get('state')?.hasError('required')\">\r\n State is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"city\" class=\"form-label\">City / Town</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"city\" formControlName=\"city\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('city')?.invalid && storeForm.get('city')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('city')?.touched && storeForm.get('city')?.hasError('required')\">\r\n City is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"pincode\" class=\"form-label\">Pin / Zip Code</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"pincode\" formControlName=\"pincode\" maxlength=\"6\" minlength=\"6\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('pincode')?.invalid && storeForm.get('pincode')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('pincode')?.touched && storeForm.get('pincode')?.hasError('required')\">\r\n Pincode is required.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\"\r\n (click)=\"goToConfiguration()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Info End -->\r\n\r\n <!-- Store Configuration Start -->\r\n <div [hidden]=\"select !== 'config'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"timeZone\" class=\"form-label\">Time Zone</label>\r\n <!-- <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"timeZone\" formControlName=\"timeZone\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('timeZone')?.invalid && storeForm.get('timeZone')?.touched}\"> -->\r\n <select class=\"form-select\" id=\"timeZone\" formControlName=\"timeZone\">\r\n <option *ngFor=\"let timezone of timezones\" [value]=\"timezone\">{{ timezone }}</option>\r\n </select>\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('timeZone')?.touched && storeForm.get('timeZone')?.hasError('required')\">\r\n Time Zone is required.\r\n </small>\r\n </div>\r\n <!-- <div class=\"col-md-6 mb-5\">\r\n <label for=\"noOfCameras\" class=\"form-label\">No of Cameras</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"noOfCameras\" formControlName=\"cameras\" (keypress)=\"omit_special_char($event)\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('cameras')?.invalid && storeForm.get('cameras')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('cameras')?.touched && storeForm.get('cameras')?.hasError('required')\">\r\n No of Cameras is required.\r\n </small>\r\n </div> -->\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeOpenTime\" class=\"form-label\">Store Open Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeOpenTime\" formControlName=\"open\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('open')?.invalid && storeForm.get('open')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('open')?.touched && storeForm.get('open')?.hasError('required')\">\r\n Store Open Time is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"storeCloseTime\" class=\"form-label\">Store Close Time</label>\r\n <input autocomplete=\"off\" type=\"time\" class=\"form-control\" id=\"storeCloseTime\" formControlName=\"close\"\r\n [ngClass]=\"{ 'is-invalid':storeForm.get('close')?.invalid && storeForm.get('close')?.touched || storeForm.hasError('invalidTimeRange')}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"storeForm.get('close')?.touched && storeForm.get('close')?.hasError('required')\">\r\n Store Close Time is required.\r\n </small>\r\n <small class=\"my-2\" *ngIf=\"storeForm.hasError('invalidTimeRange') && (storeForm.get('open')?.touched || storeForm.get('close')?.touched)\">\r\n Opening time must be before closing time.\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row mt-20\">\r\n <div class=\"col-12 text-end mt-15\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToContact()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Configuration End -->\r\n\r\n <!-- Store Contact Start -->\r\n <div [hidden]=\"select !== 'contact'\">\r\n <div class=\"row\">\r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spocDetail of getspocDetailsControls(); let i = index\" [formGroupName]=\"i\">\r\n <div *ngIf=\"i!==0\" class=\"d-flex justify-content-between align-items-center my-6\">\r\n <ng-container >\r\n <span class=\"fw-bold fs-4\">Alternate SPOC {{i}}</span>\r\n <span (click)=\"delAltSpoc()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2250_30650)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M12.5 13.9998H14.1667M14.1667 13.9998H27.5M14.1667 13.9998V25.6665C14.1667 26.1085 14.3423 26.5325 14.6548 26.845C14.9674 27.1576 15.3913 27.3332 15.8333 27.3332H24.1667C24.6087 27.3332 25.0326 27.1576 25.3452 26.845C25.6577 26.5325 25.8333 26.1085 25.8333 25.6665V13.9998H14.1667ZM16.6667 13.9998V12.3332C16.6667 11.8911 16.8423 11.4672 17.1548 11.1547C17.4674 10.8421 17.8913 10.6665 18.3333 10.6665H21.6667C22.1087 10.6665 22.5326 10.8421 22.8452 11.1547C23.1577 11.4672 23.3333 11.8911 23.3333 12.3332V13.9998M18.3333 18.1665V23.1665M21.6667 18.1665V23.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_2250_30650\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2250_30650\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2250_30650\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactName\" class=\"form-label\">Name</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactName\" formControlName=\"name\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('name')?.invalid && spocDetail.get('name')?.touched}\">\r\n <small class=\"invalid-feedback\"\r\n *ngIf=\"spocDetail.get('name')?.touched && spocDetail.get('name')?.hasError('required')\">\r\n Name is required.\r\n </small>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactEmail\" class=\"form-label\">Email</label>\r\n <input autocomplete=\"off\" type=\"email\" class=\"form-control\" id=\"contactEmail\" formControlName=\"email\"\r\n pattern=\"^([a-zA-Z0-9_\\-\\.]+)@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-zA-Z]{2,3})$\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('email')?.invalid && spocDetail.get('email')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('email')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('required')\">\r\n Email is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('minlength')\">\r\n Email must be at least 3 characters long.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('email')?.hasError('maxlength')\">\r\n Email must be not more than 100 characters long.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"contactNumber\" minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\" formControlName=\"contact\"\r\n [ngClass]=\"{ 'is-invalid':spocDetail.get('contact')?.invalid && spocDetail.get('contact')?.touched}\">\r\n <ng-container *ngIf=\"spocDetail.get('contact')?.touched\">\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('required')\">\r\n Contact is required.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('minlength')\">\r\n Contact must be at least 10 digits.\r\n </small>\r\n <small class=\"invalid-feedback\" *ngIf=\"spocDetail.get('contact')?.hasError('maxlength')\">\r\n Contact must be not more than 13 digits.\r\n </small>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-md-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"designation\" formControlName=\"designation\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-12 mb-5\">\r\n <h1 class=\"sub-head\">Enter Store Connection Details</h1>\r\n </div>\r\n <div class=\"col-md-12 mb-5\">\r\n <label for=\"anyDeskID\" class=\"form-label\">AnyDesk ID / TeamViewer ID (optional)</label>\r\n <input autocomplete=\"off\" type=\"text\" class=\"form-control\" id=\"anyDeskID\"\r\n formControlName=\"storeConnectionId\">\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\" (click)=\"navigateToAddStore()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"goToReview()\">Next</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Store Contact End -->\r\n\r\n <!-- Review & Submit Start -->\r\n <div [hidden]=\"select !== 'review'\">\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Info\r\n </div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeName')?.value ?\r\n storeForm.get('storeName')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Code</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('storeCode')?.value ?\r\n storeForm.get('storeCode')?.value: 'NA'}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Business Type</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">\r\n {{storeForm.get('businessType')?.value ? storeForm.get('businessType')?.value :\r\n 'NA'}} </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Type\r\n <!-- <i data-bs-toggle=\"tooltip\"\r\n title=\"Phone number must be active\" class=\"fas fa-exclamation-circle ms-1 fs-7\"></i> -->\r\n </label>\r\n <div class=\"col-lg-9 d-flex align-items-center\">\r\n <span\r\n class=\"fw-bolder fs-6 me-2 text-review-val\">{{storeForm.get('storeType_type')?.value\r\n ? storeForm.get('storeType_type')?.value : 'NA'}}</span>\r\n <!-- <span class=\"badge badge-success\">Verified</span> -->\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\"\r\n *ngIf=\"storeForm.get('storeType_type')?.value && storeForm.get('storeType_type')?.value === 'Mall Store'\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\"> Mall Name</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('storeType_name')?.value\r\n ? storeForm.get('storeType_name')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Address</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">\r\n <ng-container>\r\n {{storeForm.get('address')?.value ? storeForm.get('address')?.value : 'NA'}}\r\n </ng-container>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-10\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Allow Changes</label>\r\n <div class=\"col-lg-9\"><span class=\"fw-bold fs-6\">Yes</span></div>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Store\r\n Configuration</div>\r\n <div class=\"card-body p-9\">\r\n\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Time Zone</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('timeZone')?.value ?\r\n storeForm.get('timeZone')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">No of Cameras</label>\r\n <div class=\"col-lg-9 fv-row\"><span\r\n class=\"fw-bold fs-6 text-review-val\">{{storeForm.get('cameras')?.value ?\r\n storeForm.get('cameras')?.value : 'NA'}}</span>\r\n </div>\r\n </div> -->\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Open Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bold fs-6 text-review-val text-hover-primary\">{{storeForm.get('open')?.value\r\n ? storeForm.get('open')?.value : 'NA'}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"row mb-7\">\r\n <label class=\"col-lg-3 fw-bold text-muted-review\">Store Close Time</label>\r\n <div class=\"col-lg-9\"><span\r\n class=\"fw-bolder fs-6 text-review-val\">{{storeForm.get('close')?.value ?\r\n storeForm.get('close')?.value : 'NA'}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"fs-4 fw-bold text-hover-primary sub-title text-gray-600 m-0 cursor-pointer\">Contact\r\n Details</div>\r\n <div class=\"card-body row px-9 pt-3 pb-4\">\r\n <div class=\"table-responsive col-md-12 col-lg-12 col-xl-9 col-xxl-8\">\r\n <table class=\"table align-middle gy-6\">\r\n <tbody class=\"fs-6 fw-bold\"> \r\n <ng-container formArrayName=\"spocDetails\">\r\n <ng-container *ngFor=\"let spoc of getspocDetailsControls();let i=index;\">\r\n <tr>\r\n <td>Spoc {{i+1}}</td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M15 15.75V14.25C15 13.4544 14.6839 12.6913 14.1213 12.1287C13.5587 11.5661 12.7956 11.25 12 11.25H6C5.20435 11.25 4.44129 11.5661 3.87868 12.1287C3.31607 12.6913 3 13.4544 3 14.25V15.75M12 5.25C12 6.90685 10.6569 8.25 9 8.25C7.34315 8.25 6 6.90685 6 5.25C6 3.59315 7.34315 2.25 9 2.25C10.6569 2.25 12 3.59315 12 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.name ?\r\n getspocDetailsValues(i)?.name : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80373)\">\r\n <path\r\n d=\"M12 6.00002V9.75002C12 10.3468 12.2371 10.9191 12.659 11.341C13.081 11.763 13.6533 12 14.25 12C14.8467 12 15.419 11.763 15.841 11.341C16.263 10.9191 16.5 10.3468 16.5 9.75002V9.00002C16.4999 7.30729 15.9272 5.66438 14.875 4.33842C13.8227 3.01246 12.3529 2.08144 10.7045 1.69675C9.05605 1.31205 7.32596 1.4963 5.79552 2.21955C4.26508 2.94279 3.02431 4.16249 2.27495 5.68032C1.5256 7.19814 1.31173 8.92483 1.66813 10.5796C2.02453 12.2344 2.93024 13.7199 4.23798 14.7947C5.54572 15.8695 7.17858 16.4703 8.87106 16.4994C10.5635 16.5285 12.2161 15.9842 13.56 14.955M12 9.00002C12 10.6569 10.6569 12 9.00001 12C7.34315 12 6.00001 10.6569 6.00001 9.00002C6.00001 7.34317 7.34315 6.00002 9.00001 6.00002C10.6569 6.00002 12 7.34317 12 9.00002Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80373\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.email ?\r\n getspocDetailsValues(i)?.email : 'NA' }}</span></td>\r\n <td><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1_80376)\">\r\n <path\r\n d=\"M16.5001 12.6901V14.9401C16.5009 15.1489 16.4581 15.3557 16.3745 15.5471C16.2908 15.7385 16.168 15.9103 16.0141 16.0515C15.8602 16.1927 15.6785 16.3002 15.4806 16.3671C15.2828 16.434 15.0731 16.4589 14.8651 16.4401C12.5572 16.1893 10.3403 15.4007 8.39257 14.1376C6.58044 12.9861 5.04407 11.4497 3.89257 9.63757C2.62506 7.68098 1.83625 5.45332 1.59007 3.13507C1.57133 2.92767 1.59598 2.71864 1.66245 2.52129C1.72892 2.32394 1.83575 2.14259 1.97615 1.98879C2.11654 1.83499 2.28743 1.7121 2.47792 1.62796C2.6684 1.54382 2.87433 1.50027 3.08257 1.50007H5.33257C5.69655 1.49649 6.04942 1.62538 6.32539 1.86272C6.60137 2.10006 6.78163 2.42966 6.83257 2.79007C6.92754 3.51012 7.10366 4.21712 7.35757 4.89757C7.45848 5.16602 7.48032 5.45776 7.4205 5.73823C7.36069 6.01871 7.22172 6.27616 7.02007 6.48007L6.06757 7.43257C7.13524 9.31023 8.68991 10.8649 10.5676 11.9326L11.5201 10.9801C11.724 10.7784 11.9814 10.6395 12.2619 10.5796C12.5424 10.5198 12.8341 10.5417 13.1026 10.6426C13.783 10.8965 14.49 11.0726 15.2101 11.1676C15.5744 11.219 15.9071 11.4025 16.145 11.6832C16.3828 11.9639 16.5092 12.3223 16.5001 12.6901Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1_80376\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span class=\"ms-2\">{{getspocDetailsValues(i)?.contact ?\r\n getspocDetailsValues(i)?.contact : 'NA' }}</span></td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <tr>\r\n <td>AnyDesk ID\r\n <td>\r\n <span class=\"ms-2\">{{storeForm.get('storeConnectionId')?.value ?\r\n storeForm.get('storeConnectionId')?.value : 'NA' }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"text-end\">\r\n <button type=\"button\" (click)=\"goToStoreInfo()\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3\">Edit</button>\r\n <button type=\"button\" [disabled]=\"storeForm.invalid\" (click)=\"onSubmit()\"\r\n class=\"btn btn-primary\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Review & Submit End -->\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { take, map } from 'rxjs';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\n\r\nexport const storeEditGuard: CanActivateFn = (route, state) => {\r\n const gs = inject(GlobalStateService)\r\n const router = inject(Router)\r\n \r\n return gs.userAccess.pipe(take(1), map((e)=>{\r\n if(e && !e?.manage_stores_isEdit){\r\n router.navigate(['/manage/stores']);\r\n return false\r\n }\r\n return true;\r\n })); \r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TangoManageStoresComponent } from './components/tango-manage-stores/tango-manage-stores.component';\r\nimport { AddStoresComponent } from './components/add-stores/add-stores.component';\r\nimport { AddStoresFormComponent } from './components/add-stores-form/add-stores-form.component';\r\nimport { storeEditGuard } from './guards/store-edit.guard';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'edge-app',\r\n loadChildren: () => import('./route-wrappers/edge-wrapper.module').then((m) => m.TangoEdgeAppWrapperModule),\r\n // canActivate:[storeEditGuard]\r\n },\r\n {\r\n path:'',\r\n component:TangoManageStoresComponent,\r\n },\r\n {\r\n path:'addition-method',\r\n component:AddStoresComponent,\r\n canActivate: [storeEditGuard]\r\n },\r\n {\r\n path:'add-single-store',\r\n component:AddStoresFormComponent,\r\n canActivate: [storeEditGuard]\r\n },\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoManageStoresRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TangoManageStoresRoutingModule } from './tango-manage-stores-routing.module';\r\nimport { TangoManageStoresComponent } from './components/tango-manage-stores/tango-manage-stores.component';\r\nimport { AddStoresComponent } from './components/add-stores/add-stores.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\r\nimport { AddStoresFormComponent } from './components/add-stores-form/add-stores-form.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxGpAutocompleteModule } from \"@angular-magic/ngx-gp-autocomplete\";\r\nimport { Loader } from '@googlemaps/js-api-loader';\r\nimport { TangoManageGroupsComponent } from './components/tango-manage-groups/tango-manage-groups.component';\r\nimport { GroupDetailsComponent } from './components/group-details/group-details.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { CreateGroupComponent } from './components/create-group/create-group.component';\r\nimport { GroupDeletePopupComponent } from './components/group-delete-popup/group-delete-popup.component';\r\nimport { FiltersComponent } from './utils/filters/filters.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoManageStoresComponent,\r\n AddStoresComponent,\r\n AddStoresFormComponent,\r\n TangoManageGroupsComponent,\r\n GroupDetailsComponent,\r\n CreateGroupComponent,\r\n GroupDeletePopupComponent,\r\n FiltersComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoManageStoresRoutingModule,\r\n NgxMaterialTimepickerModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n NgxGpAutocompleteModule,\r\n CommonSharedModule\r\n ],\r\n providers: [\r\n {\r\n provide: Loader,\r\n useValue: new Loader({\r\n apiKey: 'AIzaSyDlOezgwQO0JviD0aizrCuN1FY9tcWfR3o',\r\n libraries: ['places']\r\n })\r\n },\r\n ],\r\n})\r\nexport class TangoManageStoresModule { }\r\n","/*\r\n * Public API Surface of tango-manage-stores\r\n */\r\n\r\nexport * from './lib/tango-manage-stores.module';\r\n\r\nexport * from './lib/components/tango-manage-stores/tango-manage-stores.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3.GroupService","i4","i5","i2.GroupService","i3","i6","i1.StoresService","i2.StoresService","i4.ExcelService","i7","i8","i9.FiltersComponent","i3.ExcelService","i8.TangoManageGroupsComponent","i9.GroupDetailsComponent"],"mappings":"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"}