client-core-services 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +24 -0
  2. package/esm2020/client-core-services.mjs +5 -0
  3. package/esm2020/lib/my-lib.module.mjs +98 -0
  4. package/esm2020/lib/services/api/api-call/api-call.service.mjs +766 -0
  5. package/esm2020/lib/services/api/api-call-responce/api-call-responce.service.mjs +191 -0
  6. package/esm2020/lib/services/api/api.service.mjs +611 -0
  7. package/esm2020/lib/services/api/auth/auth-guard.service.mjs +37 -0
  8. package/esm2020/lib/services/api/auth/auth.service.mjs +500 -0
  9. package/esm2020/lib/services/api/aws-secret-manager/aws-secret-manager.service.mjs +78 -0
  10. package/esm2020/lib/services/api/common-api/common-api.service.mjs +97 -0
  11. package/esm2020/lib/services/api/doc-api/doc-api.service.mjs +221 -0
  12. package/esm2020/lib/services/api/public-api/public-api.service.mjs +37 -0
  13. package/esm2020/lib/services/chart/chart.service.mjs +166 -0
  14. package/esm2020/lib/services/check-if/check-if.service.mjs +830 -0
  15. package/esm2020/lib/services/common-utils/common-function.service.mjs +1277 -0
  16. package/esm2020/lib/services/common-utils/core-function/core-function.service.mjs +283 -0
  17. package/esm2020/lib/services/customvalidation/customvalidation.service.mjs +202 -0
  18. package/esm2020/lib/services/data-share/auth-data-share/auth-data-share.service.mjs +70 -0
  19. package/esm2020/lib/services/data-share/common-app-data-share/common-app-data-share.service.mjs +82 -0
  20. package/esm2020/lib/services/data-share/data-share.service.mjs +370 -0
  21. package/esm2020/lib/services/data-share/doc-data-share/doc-data-share.service.mjs +81 -0
  22. package/esm2020/lib/services/data-share/public-data-share/public-data-share.service.mjs +25 -0
  23. package/esm2020/lib/services/download/download.service.mjs +151 -0
  24. package/esm2020/lib/services/encryption/encryption.service.mjs +20 -0
  25. package/esm2020/lib/services/env/env.service.mjs +232 -0
  26. package/esm2020/lib/services/env/serverHostList.mjs +56 -0
  27. package/esm2020/lib/services/fileHandler/file-handler.service.mjs +136 -0
  28. package/esm2020/lib/services/form/form-control/form-control.service.mjs +654 -0
  29. package/esm2020/lib/services/form/form-creation/form-creation.service.mjs +880 -0
  30. package/esm2020/lib/services/form/form-value/form-value.service.mjs +464 -0
  31. package/esm2020/lib/services/form/multiple-form/multiple-form.service.mjs +346 -0
  32. package/esm2020/lib/services/grid/grid-common-function/grid-common-function.service.mjs +875 -0
  33. package/esm2020/lib/services/grid/grid-selection/grid-selection.service.mjs +84 -0
  34. package/esm2020/lib/services/lims-calculations/lims-calculations.service.mjs +2304 -0
  35. package/esm2020/lib/services/loader/loader.service.mjs +17 -0
  36. package/esm2020/lib/services/menu-or-module-common/menu-or-module-common.service.mjs +558 -0
  37. package/esm2020/lib/services/model/model.service.mjs +30 -0
  38. package/esm2020/lib/services/notify/notification.service.mjs +84 -0
  39. package/esm2020/lib/services/operator/operator.service.mjs +58 -0
  40. package/esm2020/lib/services/permission/permission.service.mjs +88 -0
  41. package/esm2020/lib/services/router/router.service.mjs +78 -0
  42. package/esm2020/lib/services/storage/cookies.service.mjs +56 -0
  43. package/esm2020/lib/services/storage/storage.service.mjs +749 -0
  44. package/esm2020/lib/services/tree-component/interface.mjs +6 -0
  45. package/esm2020/lib/services/tree-component/tree-component.service.mjs +394 -0
  46. package/esm2020/lib/services/userPrefrence/user-prefrence.service.mjs +767 -0
  47. package/esm2020/lib/services/voice-recognition/voice-recognition.service.mjs +97 -0
  48. package/esm2020/lib/shared/configuration/config.mjs +76 -0
  49. package/esm2020/lib/shared/configuration/editor-config.mjs +121 -0
  50. package/esm2020/lib/shared/enums/common.enum.mjs +18 -0
  51. package/esm2020/lib/shared/enums/config.enum.mjs +56 -0
  52. package/esm2020/lib/shared/enums/end-point.enum.mjs +69 -0
  53. package/esm2020/lib/shared/enums/flags.enum.mjs +20 -0
  54. package/esm2020/lib/shared/enums/keycodes.enum.mjs +122 -0
  55. package/esm2020/lib/shared/enums/operator_type.enum.mjs +13 -0
  56. package/esm2020/lib/shared/enums/storage-token-status.enum.mjs +10 -0
  57. package/esm2020/lib/shared/platform.mjs +2 -0
  58. package/esm2020/public-api.mjs +53 -0
  59. package/fesm2015/client-core-services.mjs +15487 -0
  60. package/fesm2015/client-core-services.mjs.map +1 -0
  61. package/fesm2020/client-core-services.mjs +15482 -0
  62. package/fesm2020/client-core-services.mjs.map +1 -0
  63. package/index.d.ts +5 -0
  64. package/lib/my-lib.module.d.ts +18 -0
  65. package/lib/services/api/api-call/api-call.service.d.ts +60 -0
  66. package/lib/services/api/api-call-responce/api-call-responce.service.d.ts +43 -0
  67. package/lib/services/api/api.service.d.ts +88 -0
  68. package/lib/services/api/auth/auth-guard.service.d.ts +13 -0
  69. package/lib/services/api/auth/auth.service.d.ts +50 -0
  70. package/lib/services/api/aws-secret-manager/aws-secret-manager.service.d.ts +22 -0
  71. package/lib/services/api/common-api/common-api.service.d.ts +22 -0
  72. package/lib/services/api/doc-api/doc-api.service.d.ts +35 -0
  73. package/lib/services/api/public-api/public-api.service.d.ts +14 -0
  74. package/lib/services/chart/chart.service.d.ts +21 -0
  75. package/lib/services/check-if/check-if.service.d.ts +50 -0
  76. package/lib/services/common-utils/common-function.service.d.ts +84 -0
  77. package/lib/services/common-utils/core-function/core-function.service.d.ts +21 -0
  78. package/lib/services/customvalidation/customvalidation.service.d.ts +21 -0
  79. package/lib/services/data-share/auth-data-share/auth-data-share.service.d.ts +33 -0
  80. package/lib/services/data-share/common-app-data-share/common-app-data-share.service.d.ts +36 -0
  81. package/lib/services/data-share/data-share.service.d.ts +174 -0
  82. package/lib/services/data-share/doc-data-share/doc-data-share.service.d.ts +33 -0
  83. package/lib/services/data-share/public-data-share/public-data-share.service.d.ts +12 -0
  84. package/lib/services/download/download.service.d.ts +35 -0
  85. package/lib/services/encryption/encryption.service.d.ts +8 -0
  86. package/lib/services/env/env.service.d.ts +44 -0
  87. package/lib/services/env/serverHostList.d.ts +9 -0
  88. package/lib/services/fileHandler/file-handler.service.d.ts +17 -0
  89. package/lib/services/form/form-control/form-control.service.d.ts +44 -0
  90. package/lib/services/form/form-creation/form-creation.service.d.ts +41 -0
  91. package/lib/services/form/form-value/form-value.service.d.ts +32 -0
  92. package/lib/services/form/multiple-form/multiple-form.service.d.ts +54 -0
  93. package/lib/services/grid/grid-common-function/grid-common-function.service.d.ts +74 -0
  94. package/lib/services/grid/grid-selection/grid-selection.service.d.ts +16 -0
  95. package/lib/services/lims-calculations/lims-calculations.service.d.ts +87 -0
  96. package/lib/services/loader/loader.service.d.ts +8 -0
  97. package/lib/services/menu-or-module-common/menu-or-module-common.service.d.ts +59 -0
  98. package/lib/services/model/model.service.d.ts +11 -0
  99. package/lib/services/notify/notification.service.d.ts +22 -0
  100. package/lib/services/operator/operator.service.d.ts +27 -0
  101. package/lib/services/permission/permission.service.d.ts +18 -0
  102. package/lib/services/router/router.service.d.ts +14 -0
  103. package/lib/services/storage/cookies.service.d.ts +11 -0
  104. package/lib/services/storage/storage.service.d.ts +132 -0
  105. package/lib/services/tree-component/interface.d.ts +13 -0
  106. package/lib/services/tree-component/tree-component.service.d.ts +38 -0
  107. package/lib/services/userPrefrence/user-prefrence.service.d.ts +75 -0
  108. package/lib/services/voice-recognition/voice-recognition.service.d.ts +36 -0
  109. package/lib/shared/configuration/config.d.ts +144 -0
  110. package/lib/shared/configuration/editor-config.d.ts +72 -0
  111. package/lib/shared/enums/common.enum.d.ts +16 -0
  112. package/lib/shared/enums/config.enum.d.ts +54 -0
  113. package/lib/shared/enums/end-point.enum.d.ts +66 -0
  114. package/lib/shared/enums/flags.enum.d.ts +18 -0
  115. package/lib/shared/enums/keycodes.enum.d.ts +120 -0
  116. package/lib/shared/enums/operator_type.enum.d.ts +9 -0
  117. package/lib/shared/enums/storage-token-status.enum.d.ts +8 -0
  118. package/lib/shared/platform.d.ts +1 -0
  119. package/package.json +40 -0
  120. package/public-api.d.ts +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-core-services.mjs","sources":["../../../projects/client-core/src/lib/my-lib.module.ts","../../../projects/client-core/src/lib/services/data-share/data-share.service.ts","../../../projects/client-core/src/lib/shared/enums/common.enum.ts","../../../projects/client-core/src/lib/shared/enums/end-point.enum.ts","../../../projects/client-core/src/lib/shared/enums/storage-token-status.enum.ts","../../../projects/client-core/src/lib/services/env/serverHostList.ts","../../../projects/client-core/src/lib/shared/platform.ts","../../../projects/client-core/src/lib/services/encryption/encryption.service.ts","../../../projects/client-core/src/lib/shared/enums/operator_type.enum.ts","../../../projects/client-core/src/lib/services/operator/operator.service.ts","../../../projects/client-core/src/lib/services/common-utils/core-function/core-function.service.ts","../../../projects/client-core/src/lib/services/storage/cookies.service.ts","../../../projects/client-core/src/lib/services/storage/storage.service.ts","../../../projects/client-core/src/lib/services/env/env.service.ts","../../../projects/client-core/src/lib/services/model/model.service.ts","../../../projects/client-core/src/lib/services/api/api.service.ts","../../../projects/client-core/src/lib/services/notify/notification.service.ts","../../../projects/client-core/src/lib/services/common-utils/common-function.service.ts","../../../projects/client-core/src/lib/services/data-share/auth-data-share/auth-data-share.service.ts","../../../projects/client-core/src/lib/services/check-if/check-if.service.ts","../../../projects/client-core/src/lib/services/api/api-call/api-call.service.ts","../../../projects/client-core/src/lib/services/api/auth/auth.service.ts","../../../projects/client-core/src/lib/services/api/auth/auth-guard.service.ts","../../../projects/client-core/src/lib/services/api/common-api/common-api.service.ts","../../../projects/client-core/src/lib/services/data-share/doc-data-share/doc-data-share.service.ts","../../../projects/client-core/src/lib/services/api/doc-api/doc-api.service.ts","../../../projects/client-core/src/lib/services/data-share/public-data-share/public-data-share.service.ts","../../../projects/client-core/src/lib/services/api/public-api/public-api.service.ts","../../../projects/client-core/src/lib/services/chart/chart.service.ts","../../../projects/client-core/src/lib/services/customvalidation/customvalidation.service.ts","../../../projects/client-core/src/lib/services/fileHandler/file-handler.service.ts","../../../projects/client-core/src/lib/services/grid/grid-common-function/grid-common-function.service.ts","../../../projects/client-core/src/lib/services/grid/grid-selection/grid-selection.service.ts","../../../projects/client-core/src/lib/services/loader/loader.service.ts","../../../projects/client-core/src/lib/services/permission/permission.service.ts","../../../projects/client-core/src/lib/services/data-share/common-app-data-share/common-app-data-share.service.ts","../../../projects/client-core/src/lib/services/userPrefrence/user-prefrence.service.ts","../../../projects/client-core/src/lib/services/menu-or-module-common/menu-or-module-common.service.ts","../../../projects/client-core/src/lib/services/lims-calculations/lims-calculations.service.ts","../../../projects/client-core/src/lib/services/tree-component/interface.ts","../../../projects/client-core/src/lib/services/tree-component/tree-component.service.ts","../../../projects/client-core/src/lib/services/voice-recognition/voice-recognition.service.ts","../../../projects/client-core/src/lib/shared/enums/keycodes.enum.ts","../../../projects/client-core/src/lib/shared/configuration/editor-config.ts","../../../projects/client-core/src/lib/shared/enums/flags.enum.ts","../../../projects/client-core/src/lib/shared/enums/config.enum.ts","../../../projects/client-core/src/lib/shared/configuration/config.ts","../../../projects/client-core/src/lib/services/form/form-creation/form-creation.service.ts","../../../projects/client-core/src/lib/services/form/form-value/form-value.service.ts","../../../projects/client-core/src/lib/services/form/form-control/form-control.service.ts","../../../projects/client-core/src/lib/services/api/api-call-responce/api-call-responce.service.ts","../../../projects/client-core/src/lib/services/form/multiple-form/multiple-form.service.ts","../../../projects/client-core/src/lib/services/download/download.service.ts","../../../projects/client-core/src/lib/services/api/aws-secret-manager/aws-secret-manager.service.ts","../../../projects/client-core/src/lib/services/router/router.service.ts","../../../projects/client-core/src/public-api.ts","../../../projects/client-core/src/client-core-services.ts"],"sourcesContent":["//import { MyLibComponent } from './my-lib.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule,ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatCardModule} from '@angular/material/card';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\n\r\nimport { EnvService } from './services/env/env.service';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n BrowserModule,\r\n HttpClientModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n BrowserAnimationsModule,\r\n MatSnackBarModule\r\n ],\r\n exports: [\r\n // MyLibComponent\r\n CommonModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n BrowserAnimationsModule,\r\n MatSnackBarModule\r\n ]\r\n})\r\nexport class MyLibModule {\r\n public static forRoot(environment: any): ModuleWithProviders<MyLibModule> {\r\n return {\r\n ngModule: MyLibModule,\r\n providers: [\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n }\r\n \r\n","import { Injectable,EventEmitter } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataShareService {\r\n sharedData:Subject<any> = new Subject();\r\n currentPage: Subject<any> = new Subject();\r\n currentpage:string = '';\r\n serverHostname : Subject<any> = new BehaviorSubject<any>(null);\r\n serverEndPoint : Subject<any> = new BehaviorSubject<any>(null);\r\n staticData: Subject<any> = new BehaviorSubject<any>(null);\r\n setStaticData={};\r\n gridCountData: Subject<any> = new BehaviorSubject<any>(null);\r\n setGridCountData={};\r\n gridData: Subject<any> = new BehaviorSubject<any>(null);\r\n menu:Subject<any> = new BehaviorSubject<any>(null);\r\n tempData:Subject<any> = new BehaviorSubject<any>(null);\r\n tempStoreData:any;\r\n saveFromDataRsponce:string='';\r\n deleteGridRowDataRsponce:string='';\r\n saveResponceData:Subject<any>= new BehaviorSubject<any>(null);\r\n deleteGridRowResponceData:Subject<any>= new BehaviorSubject<any>(null);\r\n gridFilterData:Subject<any>= new BehaviorSubject<any>(null);\r\n typeAheadData:Subject<any>= new BehaviorSubject<any>(null);\r\n form:Subject<any>= new BehaviorSubject<any>(null);\r\n dinamicForm={};\r\n docData:Subject<any>= new BehaviorSubject<any>(null);\r\n nestedForm:Subject<any>= new BehaviorSubject<any>(null);\r\n hostData:Subject<any> = new Subject<any>();\r\n dashletData:Subject<any> = new Subject<any>();\r\n DashLetData:any={};\r\n appName:Subject<any> = new Subject<any>();\r\n navigationData:Subject<any> = new Subject<any>();\r\n permissionData:Subject<any> = new Subject<any>();\r\n quoteData:Subject<any> = new Subject<any>();\r\n departmentData:Subject<any> = new Subject<any>();\r\n categoryData:Subject<any> = new Subject<any>();\r\n productData:Subject<any> = new Subject<any>();\r\n testParameters:Subject<any> = new Subject<any>();\r\n exportExcelLink:Subject<any> = new Subject<any>();\r\n exportCVSLink:Subject<any> = new Subject<any>();\r\n getProductList:Subject<any> = new Subject<any>();\r\n previewHtml:Subject<any> = new Subject<any>();\r\n updateProductBranch:Subject<any> = new Subject<any>();\r\n getJobSchedulesData:Subject<any> = new Subject<any>();\r\n downloadPdfData:Subject<any> = new Subject<any>();\r\n getfileData:Subject<any> = new Subject<any>();\r\n fileDownloadUrl:Subject<any> = new Subject<any>();\r\n chartData:Subject<any> = new Subject<any>();\r\n applicationSetting:Subject<any> = new Subject<any>();\r\n themeSetting:Subject<any> = new Subject<any>();\r\n fieldDinamicResponce:Subject<any> = new Subject<any>();\r\n checkValidation:Subject<any> = new Subject<any>();\r\n dashletMaster:Subject<any> = new Subject<any>();\r\n DashletMaster:any = [];\r\n gitVirsion:Subject<any> = new Subject<any>();\r\n nextFormData:Subject<any> = new Subject<any>();\r\n getReportLoadData:Subject<any> = new Subject<any>();\r\n getIsGridSelectionOpen:Subject<any> = new Subject<any>();\r\n chartModelShowHide:Subject<any> = new Subject<any>();\r\n auditHistoryList:Subject<any> = new Subject<any>();\r\n auditVersionList:Subject<any> = new Subject<any>();\r\n applicationSettings:Subject<any> = new Subject<any>();\r\n userNotification:Subject<any> = new Subject<any>();\r\n userNotificationSetting:Subject<any> = new Subject<any>();\r\n userPreference:Subject<any> = new Subject<any>();\r\n moduleIndex:Subject<any> = new Subject<any>();\r\n menuIndexs:Subject<any> = new Subject<any>();\r\n pModuleIndex:any=-1;\r\n menuOrSubmenuIndex:any={};\r\n headerMenu:Subject<any> = new Subject<any>();\r\n requestResponce:Subject<boolean> = new Subject<boolean>();\r\n mongoDbChartList:Subject<any> = new Subject<any>();\r\n MongoDbChartList:any = [];\r\n mongoDashbordList:Subject<any> = new Subject<any>();\r\n pdfFileName:Subject<string> = new Subject<string>();\r\n S3Url:Subject<string> = new Subject<string>();\r\n printData:Subject<any> = new Subject<any>();\r\n setClientName:Subject<any> = new Subject<any>();\r\n gridRunningData: Subject<any> = new Subject<any>();\r\n collectiondata:Subject<any> = new Subject<any>();\r\n childGrid:Subject<any> = new Subject<any>();\r\n childgridfields:any;\r\n roleChange:Subject<any> = new Subject<any>();\r\n dashbordSerchKey:Subject<any> = new Subject<any>();\r\n addAndUpdateResponce:Subject<any> = new Subject<any>();\r\n private selectedRowIndexSource = new BehaviorSubject<number | null>(null);\r\n selectedRowIndex$ = this.selectedRowIndexSource.asObservable();\r\n\r\n constructor() { }\r\n\r\n sendCurrentPage(responce:any) {\r\n if(responce != undefined && responce != null){\r\n this.currentPage.next(responce);\r\n this.currentpage = responce;\r\n }else{\r\n this.currentPage.next('HOME');\r\n this.currentpage = 'HOME';\r\n }\r\n }\r\n getCurrentPage(){\r\n return this.currentpage;\r\n }\r\n shareData(responce:any){\r\n this.sharedData.next(responce);\r\n }\r\n shareStaticData(staticData:any,data:any){\r\n this.staticData.next(data);\r\n this.setStaticData = staticData;\r\n }\r\n getStatiData(){\r\n return this.setStaticData;\r\n }\r\n shareGridCountData(responce:any){\r\n this.gridCountData.next(responce.count);\r\n this.setGridCountData = responce.gridCountData;\r\n }\r\n getGridCountData(){\r\n return this.setGridCountData;\r\n }\r\n shareGridData(gridData:any){\r\n this.gridData.next(gridData);\r\n }\r\n shareDashletMaster(responce:any){\r\n this.dashletMaster.next(responce);\r\n this.DashletMaster = responce;\r\n }\r\n getDashletMaster(){\r\n return this.DashletMaster;\r\n }\r\n shareMongoChart(chartData:any){\r\n this.mongoDbChartList.next(chartData);\r\n this.MongoDbChartList = chartData;\r\n }\r\n getMongoChart(){\r\n return this.MongoDbChartList;\r\n }\r\n shareMongoDashbord(responce:any){\r\n this.mongoDashbordList.next(responce)\r\n }\r\n shareMenuData(menuData:any){\r\n this.menu.next(menuData);\r\n }\r\n shareTempData(tempData:any){\r\n this.tempData.next(tempData);\r\n this.tempStoreData = tempData;\r\n }\r\n getTempData(){\r\n return this.tempStoreData;\r\n }\r\n setSaveResponce(responce:any){\r\n this.saveResponceData.next(responce);\r\n this.saveFromDataRsponce = responce;\r\n }\r\n getSaveResponce(){\r\n return this.saveFromDataRsponce;\r\n }\r\n\r\n setDeleteGridRowResponce(responce:any){\r\n this.deleteGridRowResponceData.next(responce);\r\n this.deleteGridRowDataRsponce = responce;\r\n }\r\n getDeleteRowDataResponce(){\r\n return this.deleteGridRowDataRsponce;\r\n }\r\n\r\n setGridFilterData(responce:any){\r\n this.gridFilterData.next(responce);\r\n }\r\n setTypeAheadData(responce:any){\r\n this.typeAheadData.next(responce);\r\n }\r\n setForm(form:any){\r\n this.form.next(form);\r\n this.dinamicForm = form;\r\n }\r\n getDinamicForm(){\r\n return this.dinamicForm;\r\n }\r\n setNestedForm(form:any){\r\n this.nestedForm.next(form)\r\n }\r\n setHostData(data:any){\r\n this.hostData.next(data);\r\n }\r\n setDashletData(dashletData:any){\r\n this.dashletData.next(dashletData);\r\n this.DashLetData = dashletData;\r\n }\r\n getDashletData(){\r\n return this.DashLetData\r\n }\r\n resetDashletData(){\r\n this.DashLetData = {};\r\n }\r\n resetDashletDataByKey(keyName:any){\r\n delete this.DashLetData[keyName];\r\n this.dashletData.next(this.DashLetData);\r\n }\r\n setAppName(response:any){\r\n this.appName.next(response);\r\n }\r\n setNavigationData(responce:any){\r\n this.navigationData.next(responce);\r\n }\r\n setPermissionData(responce:any){\r\n this.permissionData.next(responce);\r\n }\r\n setQuoteData(responce:any){\r\n this.quoteData.next(responce);\r\n }\r\n setDepartmentData(responce:any){\r\n this.departmentData.next(responce);\r\n }\r\n setCategoryData(responce:any){\r\n this.categoryData.next(responce);\r\n }\r\n setProductData(responce:any){\r\n this.productData.next(responce);\r\n }\r\n setTestParameter(responce:any){\r\n this.testParameters.next(responce);\r\n }\r\n setExportExcelLink(responce:any){\r\n this.exportExcelLink.next(responce);\r\n }\r\n setExportCVSLink(responce:any){\r\n this.exportCVSLink.next(responce);\r\n }\r\n setProductList(responce:any){\r\n this.getProductList.next(responce)\r\n }\r\n setPreviewHtml(responce:any){\r\n this.previewHtml.next(responce);\r\n }\r\n setUpdateProductBranch(responce:any){\r\n this.updateProductBranch.next(responce);\r\n }\r\n setJobScheduleData(responce:any){\r\n this.getJobSchedulesData.next(responce);\r\n }\r\n setDownloadPdfData(responce:any){\r\n this.downloadPdfData.next(responce);\r\n }\r\n setFileData(responce:any){\r\n this.getfileData.next(responce);\r\n }\r\n setPrintTemplate(responce:any){\r\n this.printData.next(responce);\r\n }\r\n setFileDownloadUrl(responce:any){\r\n this.fileDownloadUrl.next(responce)\r\n }\r\n setChartData(responce:any){\r\n this.chartData.next(responce)\r\n }\r\n setThemeSetting(responce:any){\r\n this.themeSetting.next(responce)\r\n }\r\n setApplicationSetting(responce:any){\r\n this.applicationSetting.next(responce);\r\n }\r\n resetThemeSetting(responce:any){\r\n this.themeSetting.next(responce);\r\n }\r\n resetApplicationSetting(responce:any){\r\n this.applicationSetting.next(responce);\r\n }\r\n setFieldDinamicApiResponce(responce:any){\r\n this.fieldDinamicResponce.next(responce);\r\n }\r\n setValidationCondition(responce:any){\r\n this.checkValidation.next(responce);\r\n }\r\n setGitVersion(responce:any){\r\n this.gitVirsion.next(responce);\r\n }\r\n setNextFormData(responce:any){\r\n this.nextFormData.next(responce);\r\n }\r\n setReportLoadGridData(responce:any){\r\n this.getReportLoadData.next(responce);\r\n }\r\n setIsGridSelectionOpenOrNot(check:boolean){\r\n this.getIsGridSelectionOpen.next(check);\r\n }\r\n setChartModelShowHide(value:any){\r\n this.chartModelShowHide.next(value);\r\n }\r\n setAuditHistoryData(data:any){\r\n this.auditHistoryList.next(data);\r\n }\r\n\r\n setAuditVersionList(data:any){\r\n this.auditVersionList.next(data);\r\n }\r\n\r\n shareUserNotification(responce:any){\r\n this.userNotification.next(responce);\r\n }\r\n shareUserNotificationSetting(responce:any){\r\n this.userNotificationSetting.next(responce);\r\n }\r\n setUserPreference(userPreference:any){\r\n this.userPreference.next(userPreference);\r\n }\r\n subscribeTemeSetting(responce:any){\r\n this.applicationSettings.next(responce);\r\n }\r\n setModuleIndex(index:any){\r\n this.moduleIndex.next(index);\r\n this.pModuleIndex = index;\r\n }\r\n setMenuIndexs(indexs:any){\r\n this.menuIndexs.next(indexs);\r\n this.menuOrSubmenuIndex = indexs;\r\n }\r\n getProjectModuleIndex(){\r\n return this.pModuleIndex;\r\n }\r\n getMenuOrSubmenuIndexs(){\r\n return this.menuOrSubmenuIndex;\r\n }\r\n setReqResponce(responce:boolean){\r\n this.requestResponce.next(responce)\r\n }\r\n resetHeaderMenu(responce:any){\r\n this.headerMenu.next(responce);\r\n }\r\n sharePdfFileName(fileName:any){\r\n this.pdfFileName.next(fileName);\r\n }\r\n\r\n sharePublicUrlFromS3(url:any){\r\n this.S3Url.next(url);\r\n }\r\n\r\n shareGridRunningData(responce:any){\r\n this.gridRunningData.next(responce);\r\n }\r\n shareServerHostName(serverHostname:any){\r\n this.serverHostname.next(serverHostname);\r\n }\r\n getServerEndPoint(req:boolean){\r\n this.serverEndPoint.next(req);\r\n }\r\n //For App\r\n collectionData(responce:any){\r\n this.collectiondata.next(responce);\r\n }\r\n setChildGrid(responce:any){\r\n this.childGrid.next(responce);\r\n this.childgridfields = responce;\r\n }\r\n getChildGrid(){\r\n return this.childgridfields;\r\n }\r\n shareRoleChange(role:any){\r\n this.roleChange.next(role);\r\n }\r\n shareDashbordSerach(key:string){\r\n this.dashbordSerchKey.next(key);\r\n }\r\n shareAddAndUpdateResponce(responce:string){\r\n this.addAndUpdateResponce.next(responce);\r\n }\r\n updateSelectedRowIndex(index: number) {\r\n this.selectedRowIndexSource.next(index);\r\n }\r\n //End For App\r\n\r\n}\r\n","export enum Common {\r\n AUTH_TYPE = \"USER\",\r\n VERIFY_WITH_OTP = \"true\",\r\n GOOGLE_MAP_IN_FORM = \"true\",\r\n AUT_OGEN = \"/AUTOGEN\",\r\n API_KEY = \"ef1674ab-4e49-11eb-8153-0200cd936042\",\r\n BASE_URL = \"https://sitserverpharmalinkage.pharmalinkage.com/rest/\",\r\n ITEM_NUM_OF_GRID = 25,\r\n PAGE_NO = 1,\r\n GOOGLE_API_KEY = \"AIzaSyAZG9mCLgVxc4Y9MGAaRxPlyU8I7VON3Sg\",\r\n DEFAULT_OPERATOR = \"stwic\",\r\n TINYMICAPIKEY = 'iao4rl1otk4n9or5nn6wkyo63ni2jxiud9ul5tkh6dxibdb2',\r\n AWS_ACCESSKEYID = 'QUtJQVFMVlFSQ1pOUTVZNlBES1k=',\r\n AWS_SECRETKEY = 'Q1UxbWdGQ004dFhTTVU2OUw1KzVHVnFoSWpnc1lnNFpEdGd2Z3R6SA==',\r\n AWS_REGION = 'YXAtc291dGgtMQ=='\r\n}\r\n","export enum EndPoint {\r\n\r\n GET_USER_PERMISSION = \"user/utvn/v2\",\r\n SAVE_CUSTOM_TEMPLATE = \"ins/save/templates\",\r\n SAVE_FORM_DATA = \"ins/save\",\r\n DELETE_GRID_ROW = \"del/delete\",\r\n SEND_EMAIL = \"ins/send_mail\",\r\n GET_CUSTOM_TEMPLATE = \"rpts/sobj\",\r\n GET_GRID_DATA = \"rpts/gd\",\r\n GET_COUNT_DATA = \"rpts/gd_list\",\r\n GET_TEMPLATE_NAMES = \"template/names\",\r\n EXPORT_GRID_DATA = \"downloads/excelExport\",\r\n CSV_EXPORT_GRID_DATA = \"downloads/csvExport\",\r\n SAVE_NAVIGATION = \"ins/save/navigation\",\r\n SAVE_PERMISSION = \"ins/save/permissions\",\r\n GET_STATIC_DATA = \"rpts/gsd\",\r\n SAVE_QUOTE = \"ins/save/request_qoute\",\r\n AUTH_SIGNIN = \"login/si/\",\r\n AUTH_SIGNUP = \"login/su/\",\r\n AU_SIGNIN = \"login/signIn\",\r\n AU_SIGNUP = \"login/signUp\",\r\n USER_VARIFY = \"login/verify\",\r\n AUTH_SIGNOUT = \"login/signOut\",\r\n AUTH_FORGET_PASSWORD = \"login/fp\",\r\n AUTH_RESET_PASSWORD = \"login/rp\",\r\n AUTH_CHANGE_PASSWORD = \"login/cp\",\r\n TWO_FACTOR_AUTHENTICATION = \"login/tfa\",\r\n GET_AUTH_APP = \"user/auth/app/\",\r\n SAVE_CONTACT_US = \"ins/save/contact_us_query\",\r\n SAVE_CAREER_WITH_US = \"ins/save/career_with_us\",\r\n GET_PREVIEW_HTML = \"rpts/get_html\",\r\n GET_PARAMETER_LIST = \"qt/sobj\",\r\n SAVE_PARAMETER_LIST = \"qt/popbranch\",\r\n GET_PDF = \"rpts/get_pdf\",\r\n GET_PUBLIC_PDF = \"get_pdf\",\r\n DOWNLOAD_PDF = \"rpts/getfl\",\r\n PATAINT_REPORT = \"get_report\",\r\n GET_CHART_DATA = \"rpts/get_chart_data\",\r\n GET_FORM = \"rpts/get_form\",\r\n GET_FORM_PUBLIC = 'get_form',\r\n GET_FILE = \"rpts/get_file\",\r\n RESET_PASSWORD = \"login/cnp\",\r\n GET_DASHLET_DATA = \"generic/retrieve/dashlet_data\",\r\n OTP_VARIFICATION = \"login/confirmUserWithToken/\",\r\n GET_COMPARE_DATA = \"mig/send_menu_by_module/\",\r\n GET_QR_CODE = \"rpts/qrGen/\",\r\n PUBLIC = \"public/\",\r\n //GET_VDR_DATA = \"vdrn/getrtf/e\",\r\n GET_VDR_DATA = \"vdrn/getRefCodeRootFolderForAppId/e\",\r\n MOVE_FOLDER_CHILD = \"vdrn/getch\",\r\n UPLOAD_DOC_FILE = \"vdrn/crtfl/e\",\r\n INSERT_FILE_AFTER_UPLOAD = \"vdrn/crtflaftupl/e\",\r\n CREATE_FOLDER = \"vdrn/crtfd/e\",\r\n GET_CHILD_FOLDER_BY_KEY = \"vdrn/getchbk\",\r\n GET_DOC_AUDIT = \"vdrn/getAudit/\",\r\n DOC_FILE_DOWNLOAD = \"vdrn/getfl/download\",\r\n SET_DOC_FILE_AUDIT_AFTER_DOWNLOAD=\"vdrn/setflaud/download\",\r\n DOC_FILE_VIEW = \"vdrn/getfl/view\",\r\n DOC_DELETE = \"vdrn/fo/\",\r\n DOC_SHARE = \"vdrn/shr\",\r\n GET_FOLDER_BY_KEY = \"vdrn/getS3FolderDataByKey\",\r\n GIT_VERSION = \"git/version\",\r\n DOC_PERMISSION = 'vdrn/svper',\r\n AUDIT_HISTORY = \"getAuditHistory\",\r\n AUDIT_VERSION_LIST = \"getAuditVersionList\",\r\n DOWNLOAD_MANUAL= \"s3/getSignedS3Url\",\r\n GET_NOTIFICATION_SETTING= \"rpts/getNotification\"\r\n}\r\n","export enum StorageTokenStatus {\r\n ID_TOKEN_NOT_CREATED, \r\n ID_TOKEN_ACTIVE, \r\n ID_TOKEN_EXPIRED, \r\n REFRESH_TOKEN_NOT_CREATED, \r\n REFRESH_TOKEN_ACTIVE, \r\n REFRESH_TOKEN_EXPIRED\r\n}\r\n","export const serverHostList = [\r\n {\"clientEndpoint\": \"localhost\", \"serverEndpoint\": \"http://localhost:8104\"},\r\n {\"clientCode\": \"ELABS-ELABS01-SIT\", \"clientEndpoint\": \"sit.elabss.ai\", \"serverEndpoint\": \"https://sitserverelabs.elabss.ai\"},\r\n {\"clientCode\": \"ELABS-ELABS01-DEV\", \"clientEndpoint\": \"dev.elabss.ai\", \"serverEndpoint\": \"https://devserverelabs.elabss.ai\"},\r\n {\"clientCode\": \"ELABS-ELABS01-UAT\", \"clientEndpoint\": \"uat.elabss.ai\", \"serverEndpoint\": \"https://uatserverelabs.elabss.ai\"},\r\n {\"clientCode\": \"SANS-SANS01-SIT\", \"clientEndpoint\": \"sit-sanskar.elabss.ai\", \"serverEndpoint\": \"https://sitsanskarserver.elabss.ai\"},\r\n {\"clientCode\": \"SANS-SANS01\", \"clientEndpoint\": \"lims-sanskar.elabss.ai\", \"serverEndpoint\": \"https://prodsanskarserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"hardgoodslabs.elabss.ai\", \"serverEndpoint\": \"https://serverhardgoodlabs.elabss.ai\"},\r\n {\"clientCode\": \"DEMO-DEMO01\", \"clientEndpoint\": \"demolab.elabss.ai\", \"serverEndpoint\": \"https://serverdemolabs.elabss.ai\"},\r\n {\"clientEndpoint\": \"lite-demolab.elabss.ai\", \"serverEndpoint\": \"https://serverhardgoodlabs.elabss.ai\"},\r\n {\"clientEndpoint\": \"standard-demolab.elabss.ai\", \"serverEndpoint\": \"https://serverhardgoodlabs.elabss.ai\"},\r\n {\"clientCode\": \"ASC-ASC01-SIT\", \"clientEndpoint\": \"ascgroup.elabss.ai\", \"serverEndpoint\": \"https://sitserverascgroup.elabss.ai\"},\r\n {\"clientEndpoint\": \"uatclients.elabss.ai\", \"serverEndpoint\": \"https://sitserverascgroup.elabss.ai\"},\r\n {\"clientCode\": \"ASC-ASC01\", \"clientEndpoint\": \"erpsuite.ascgroup.co.in\", \"serverEndpoint\": \"https://prodserverascgroup.elabss.ai\"},\r\n {\"clientCode\": \"ASC-ASC01\", \"clientEndpoint\": \"lims-ascgroup.elabss.ai\", \"serverEndpoint\": \"https://prodserverascgroup.elabss.ai\"},\r\n {\"clientEndpoint\": \"sit-itclabs.elabss.ai\", \"serverEndpoint\": \"https://serveritclabs.elabss.ai\"},\r\n {\"clientEndpoint\": \"dev-itclabs.elabss.ai\", \"serverEndpoint\": \"https://devserveritclabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01-UAT\", \"clientEndpoint\": \"uat-itclabs.elabss.ai\", \"serverEndpoint\": \"https://uatserveritclabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01\",\"clientEndpoint\": \"lims-itclabs.elabss.ai\", \"serverEndpoint\": \"https://prodserveritclabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01\", \"clientEndpoint\": \"lims.itclabs.com\", \"serverEndpoint\": \"https://prodserveritclabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01\",\"clientEndpoint\": \"itclims.elabss.ai\", \"serverEndpoint\": \"https://prodserveritclabs.elabss.ai\"},\r\n {\"clientEndpoint\": \"qualiteklab.elabss.ai\", \"serverEndpoint\": \"https://serverqualiteklab.elabss.ai\"},\r\n {\"clientEndpoint\": \"uat-qualiteklab.elabss.ai\", \"serverEndpoint\": \"https://uatserverqualiteklab.elabss.ai\"},\r\n {\"clientCode\": \"QUAL-QUALI01\", \"clientEndpoint\": \"lims.qualiteklab.com\", \"serverEndpoint\": \"https://prodserverqualiteklab.elabss.ai\"},\r\n {\"clientCode\": \"QUAL-QUALI01\", \"clientEndpoint\": \"qualiteklab-lims.elabss.ai\", \"serverEndpoint\": \"https://prodserverqualiteklab.elabss.ai\"},\r\n {\"clientEndpoint\": \"dev-qualiteklab.elabss.ai\", \"serverEndpoint\": \"https://devserverqualiteklab.elabss.ai\"},\r\n {\"clientEndpoint\": \"sit-hitech.elabss.ai\", \"serverEndpoint\": \"https://sithitechserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"lims-hitech.elabss.ai\", \"serverEndpoint\": \"https://prodhitechserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"sit-aalbiosciences.elabss.ai\", \"serverEndpoint\": \"https://sitaalbiosciencesserver.elabss.ai\"},\r\n {\"clientCode\": \"AABIO-AABIO01\", \"clientEndpoint\": \"lims-aalbiosciences.elabss.ai\", \"serverEndpoint\": \"https://prodaalbiosciencesserver.elabss.ai\"},\r\n {\"clientCode\": \"QUAL-QUALI02\", \"clientEndpoint\": \"bbsr-lims.qualiteklab.com\", \"serverEndpoint\": \"https://prodserverbbsrqualiteklab.elabss.ai\"},\r\n {\"clientCode\": \"QUAL-QUALI02\",\"clientEndpoint\": \"bbsr-lims.elabss.ai\", \"serverEndpoint\": \"https://prodserverbbsrqualiteklab.elabss.ai\"},\r\n {\"clientEndpoint\": \"sit-multani.elabss.ai\", \"serverEndpoint\": \"https://sitmultaniserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"app.multani.com\", \"serverEndpoint\": \"http://server.multani.com:30051\"},\r\n {\"clientEndpoint\": \"food.multani.com\", \"serverEndpoint\": \"http://server.multani.com:30051\"},\r\n {\"clientEndpoint\": \"lims-pharma-multani.elabss.ai\", \"serverEndpoint\": \"https://prodmultaniserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"lims-food-multani.elabss.ai\", \"serverEndpoint\": \"https://prodmultaniserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"lims-multani.elabss.ai\", \"serverEndpoint\": \"https://sitmultaniserver.elabss.ai\"},\r\n {\"clientCode\": \"SAT-SAT01\", \"clientEndpoint\": \"web.sralabs.com\", \"serverEndpoint\": \"https://prodsatiateserver.elabss.ai\"},\r\n {\"clientCode\": \"SAT-SAT01\", \"clientEndpoint\": \"lims-sralabs.elabss.ai\", \"serverEndpoint\": \"https://prodsatiateserver.elabss.ai\"},\r\n {\"clientEndpoint\": \"app.elabss.ai\", \"serverEndpoint\": \"https://serverelabs.elabss.ai\"},\r\n {\"clientCode\": \"CENT-CENT01-SIT\", \"clientEndpoint\": \"sit-central.elabss.ai\", \"serverEndpoint\": \"https://sitservercentrallims.elabss.ai\"},\r\n {\"clientCode\": \"CENT-CENT01\", \"clientEndpoint\": \"central.elabss.ai\", \"serverEndpoint\": \"https://prodservercentral.elabss.ai\"},\r\n {\"clientCode\": \"UPMA-UPMA01\", \"clientEndpoint\": \"upma-lims.elabss.ai\", \"serverEndpoint\": \"https://prodserverupma.elabss.ai\"},\r\n {\"clientCode\": \"IIRT-IIRT01\", \"clientEndpoint\": \"erp.iirt.co.in\", \"serverEndpoint\": \"https://prodiirtserver.elabss.ai\"},\r\n {\"clientCode\": \"IIRT-IIRT01\", \"clientEndpoint\": \"lims-iirt.elabss.ai\", \"serverEndpoint\": \"https://prodiirtserver.elabss.ai\"},\r\n {\"clientCode\": \"COMP-COMPASS01\", \"clientEndpoint\": \"compassgroup.elabss.ai\", \"serverEndpoint\": \"https://prodservercompassgroup.elabss.ai\"},\r\n {\"clientCode\": \"TICS-TICS01\", \"clientEndpoint\": \"lims.theticslab.com\", \"serverEndpoint\": \"https://prodservertheticslab.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01-DEV2\", \"clientEndpoint\": \"dev2.elabss.ai\", \"serverEndpoint\": \"https://dev2serverelabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01-SIT2\", \"clientEndpoint\": \"sit2.elabss.ai\", \"serverEndpoint\": \"https://sit2serverelabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01-UAT2\", \"clientEndpoint\": \"uat2.elabss.ai\", \"serverEndpoint\": \"https://uat2serverelabs.elabss.ai\"},\r\n {\"clientCode\": \"ITC-ITC01-WP02\", \"clientEndpoint\": \"lims-ipsos.elabss.ai\", \"serverEndpoint\": \"https://prodserveripsos.elabss.ai\"},\r\n {\"clientEndpoint\": \"sit-qualiteklab.elabss.ai\", \"serverEndpoint\": \"https://sitserverqualiteklab.elabss.ai\"},\r\n {\"clientEndpoint\": \"sit-qualiteklabbbsr.elabss.ai\", \"serverEndpoint\": \"https://sitserverbbsrqualiteklab.elabss.ai\"}\r\n\r\n]\r\n","export const PLATFORM_NAME = [\"ios\" , \"ipad\" , \"iphone\" , \"android\" , \"phablet\" , \"tablet\" , \"cordova\" , \"capacitor\" , \"electron\" , \"pwa\" , \"mobile\" , \"mobileweb\" , \"desktop\" , \"hybrid\"]","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EncryptionService {\r\n\r\n constructor() { }\r\n\r\n encryptRequest(obj:any) {\r\n return btoa(JSON.stringify(obj));\r\n }\r\n\r\n decryptRequest(obj:any) {\r\n return atob(obj);\r\n }\r\n\r\n}\r\n","export enum OperatorType {\r\n STRING=\"string\",\r\n NUMBER=\"number\",\r\n DATE=\"date\",\r\n // Add more types as needed\r\n}\r\n\r\nexport enum OperatorKey {\r\n SHORTNAME = \"shortName\",\r\n NAME = \"name\"\r\n}\r\n","import {OperatorKey, OperatorType} from \"../../shared/enums/operator_type.enum\";\r\n\r\n\r\nexport class Operator {\r\n fullName: string;\r\n shortName: string;\r\n name:string;\r\n types: OperatorType[];\r\n\r\n constructor(fullName: string, shortName: string,name:string,types: OperatorType[]) {\r\n this.fullName = fullName;\r\n this.shortName = shortName;\r\n this.name = name;\r\n this.types = types;\r\n }\r\n\r\n static readonly EQUAL = new Operator(\"Equal\", \"eq\",\"EQUAL\",[OperatorType.STRING,OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly CONTAINS = new Operator(\"Contains\", \"cnts\",\"CONTAINS\",[OperatorType.STRING,OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly NOT_EQUAL = new Operator(\"Not Equal\", \"neq\",\"NOT_EQUAL\",[OperatorType.STRING,OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly IN = new Operator(\"In\", \"in\",\"IN\",[OperatorType.STRING,OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly LESS_THAN = new Operator(\"Less Than\", \"lt\",\"LESS_THAN\",[OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly RANGE_BORDER_LESS_THAN_INCLUSIVE = new Operator(\"Less Than Equal\", \"lte\",\"LESS_THAN\",[OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly GREATER_THAN = new Operator(\"Greater Than\", \"gt\",\"GREATER_THAN\",[OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly RANGE_BORDER_GREATER_THAN_INCLUSIVE = new Operator(\"Greater Than Equal\", \"gte\",\"RANGE_BORDER_GREATER_THAN_INCLUSIVE\",[OperatorType.DATE,OperatorType.NUMBER]);\r\n static readonly NOT_CONTAINS_IGNORE_CASE = new Operator(\"Not Contains Ignore Case\", \"ncntsic\",\"NOT_CONTAINS_IGNORE_CASE\",[OperatorType.STRING,OperatorType.DATE]);\r\n static readonly ENDS_WITH = new Operator(\"Ends With\", \"edw\",\"ENDS_WITH\",[OperatorType.STRING]);\r\n static readonly ENDS_WITH_IGNORE_CASE = new Operator(\"Ends With Ignore Case\", \"edwic\",\"ENDS_WITH_IGNORE_CASE\",[OperatorType.STRING]);\r\n static readonly STARTS_WITH = new Operator(\"Starts With\", \"stw\",\"STARTS_WITH\",[OperatorType.STRING]);\r\n static readonly STARTS_WITH_IGNORE_CASE = new Operator(\"Starts With Ignore Case\", \"stwic\",\"STARTS_WITH_IGNORE_CASE\",[OperatorType.STRING]);\r\n static readonly NOT_CONTAINS = new Operator(\"Not Contains\", \"ncnts\",\"NOT_CONTAINS\",[OperatorType.STRING]);\r\n static readonly CONTAINS_IGNORE_CASE = new Operator(\"Contains Ignore Case\", \"cntsic\",\"CONTAINS_IGNORE_CASE\",[OperatorType.STRING]);\r\n\r\n\r\n\r\n\r\n static getAllFullNames(): string[] {\r\n return Object.values(Operator).filter(value => value instanceof Operator).map(operator => operator.fullName);\r\n }\r\n\r\n static getAllShortNames(): string[] {\r\n return Object.values(Operator).filter(value => value instanceof Operator).map(operator => operator.shortName);\r\n }\r\n static getAllNames(): string[] {\r\n return Object.values(Operator).filter(value => value instanceof Operator).map(operator => operator.name);\r\n }\r\n\r\n // static getEnumMap(): Map<string, string> {\r\n // const enumMap = new Map<string, string>();\r\n // Object.values(Operator)\r\n // .filter(value => value instanceof Operator)\r\n // .forEach(operator => enumMap.set(operator.fullName, operator.shortName));\r\n // return enumMap;\r\n // }\r\n // static getByType(type: OperatorType): Operator[] {\r\n // return Object.values(Operator)\r\n // .filter((value) => value instanceof Operator && value.types.includes(type));\r\n // }\r\n\r\n // {\"cntsic\":\"Contains Ignore Case\",}\r\n\r\n // {\"CONTAINS_IGNORE_CASE\":\"Contains Ignore Case\"}\r\n\r\n static getOperators(type: OperatorType,name:string): Map<string, string> {\r\n // const enumMap = new Map<string, string>();\r\n const enumMap:any = {};\r\n Object.values(Operator)\r\n .filter(value => value instanceof Operator && (type === null || value.types.includes(type)))\r\n .forEach(operator => {\r\n let key = operator[name];\r\n enumMap[key] = operator.fullName\r\n });\r\n return enumMap;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Operator } from '../../operator/operator.service';\r\nimport { OperatorType } from '../../../shared/enums/operator_type.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CoreFunctionService {\r\n // commonOperators:any={\r\n // eq :\"EQUAL\",\r\n // in : \"IN\",\r\n // neq : \"NOT_EQUAL\",\r\n // // stwic : \"STARTS_WITH_IGNORE_CASE\",\r\n // cnts : \"CONTAINS\"\r\n // };\r\n\r\n constructor() { }\r\n isNotBlank(value:any){\r\n if(value && value != undefined && value != null && value != '' && JSON.stringify(value) != \"{}\" && JSON.stringify(value) != \"[]\"){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n getModulesFromMapObject(obj:any){\r\n let user = obj.user;\r\n let permissions = obj.permission;\r\n let rollList = obj.rollList;\r\n let utvn:any = {};\r\n let modules:any = [];\r\n let permissionList = {};\r\n if(permissions && Object.keys(permissions).length > 0){\r\n Object.keys(permissions).forEach((mokey,i) => {\r\n let moduleObj:any = {};\r\n let module = permissions[mokey];\r\n if(module && module.details){\r\n moduleObj = module.details;\r\n }\r\n let menuList:any = [];\r\n if(module && module.menuMap){\r\n let menuMap = module.menuMap;\r\n if(Object.keys(menuMap).length > 0){\r\n Object.keys(menuMap).forEach((mekey,j) => {\r\n let menuobj:any = {};\r\n let menu = menuMap[mekey];\r\n if(menu && menu.details){\r\n menuobj = menu.details;\r\n }\r\n let submenuList:any = [];\r\n if(menu && menu.submenuMap){\r\n let submenuMap = menu.submenuMap;\r\n if(Object.keys(submenuMap).length > 0){\r\n Object.keys(submenuMap).forEach((smkey,k) => {\r\n let submenuObj:any = {};\r\n let submenu = submenuMap[smkey];\r\n if(submenu && submenu.details){\r\n submenuObj = submenu.details;\r\n }\r\n this.setTabOrPermission(submenu,permissionList,submenuObj);\r\n submenuList.push(submenuObj);\r\n });\r\n }\r\n }else{\r\n this.setTabOrPermission(menu,permissionList,menuobj);\r\n }\r\n if(submenuList && submenuList.length > 0){\r\n menuobj['submenu'] = this.sortMenu(submenuList);\r\n }else{\r\n menuobj['submenu'] = null;\r\n }\r\n menuList.push(menuobj);\r\n })\r\n }\r\n }\r\n if(menuList && menuList.length > 0){\r\n moduleObj['menu_list'] = this.sortMenu(menuList);\r\n }else{\r\n moduleObj['menu_list'] = null;\r\n }\r\n modules.push(moduleObj);\r\n });\r\n }\r\n let modifiedModules = this.setDefaultIndexForModules(modules);\r\n utvn['modules'] = this.sortMenu(modifiedModules)\r\n utvn['permission'] = permissionList;\r\n utvn['user'] = user;\r\n utvn['rollList'] = rollList;\r\n return utvn;\r\n }\r\n setTabOrPermission(menu:any,permissionList:any,menuObj:any){\r\n let tabList:any=[];\r\n if(menu && menu.templateTabMap){\r\n let tabsMap = menu.templateTabMap;\r\n if(Object.keys(tabsMap).length > 0){\r\n Object.keys(tabsMap).forEach((tkey,l) => {\r\n let tab = tabsMap[tkey];\r\n const modifyTab:any = {};\r\n modifyTab['field_name'] = tkey;\r\n modifyTab['label'] = tab?.label;\r\n modifyTab['grid'] = tab?.grid;\r\n if(tab && tab.details && tab.details._id){\r\n modifyTab['_id'] = tab.details._id\r\n }\r\n tabList.push(modifyTab);\r\n if(tkey in permissionList){\r\n if(tab && tab.access){\r\n let oldPermissoin:Array<string> = permissionList[tkey];\r\n let newPermission = tab.access;\r\n if(newPermission && newPermission.length > 0){\r\n newPermission.forEach((permission:string) => {\r\n if(!oldPermissoin.includes(permission)){\r\n oldPermissoin.push(permission);\r\n }\r\n });\r\n }\r\n permissionList[tkey] = oldPermissoin;\r\n }\r\n }else{\r\n if(tab && tab.access){\r\n permissionList[tkey] = tab.access;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n menuObj['tabList']=tabList;\r\n }\r\n setDefaultIndexForModules(modules:any){\r\n if(modules?.length>0){\r\n let maxIndex = modules.length\r\n modules.forEach((module:any) => {\r\n if(!module?.index){\r\n module[\"index\"] = maxIndex;\r\n }\r\n })\r\n }\r\n return modules;\r\n }\r\n sortMenu(menuList:any){\r\n let list:any=[];\r\n let mlist = menuList.sort((a:any,b:any) => {\r\n if (a.index === b.index) {\r\n // If `index` is the same, sort by `name` alphabetically\r\n return a.name.localeCompare(b.name);\r\n } else {\r\n // Otherwise, sort by `index`\r\n return a.index - b.index;\r\n }\r\n });\r\n if(mlist && mlist.length > 0){\r\n mlist.forEach((m:any) => {\r\n list.push(m);\r\n });\r\n }\r\n return list;\r\n }\r\n convertListToColonString(list:any,type:any,key?:string){\r\n let value = \"\";\r\n if(type.toLowerCase() == 'text'){\r\n if(list && list.length > 0){\r\n for (let index = 0; index < list.length; index++) {\r\n const str = list[index];\r\n if((index + 1) == list.length){\r\n value = value + str;\r\n }else{\r\n value = value + str +':';\r\n }\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n prepareTemplate(tempList:any,moduleName:string){\r\n let preParedList:any = {};\r\n if(tempList && tempList.length > 0){\r\n tempList.forEach((temp:any) => {\r\n let name = moduleName+\"_\"+temp.name;\r\n preParedList[name] = temp;\r\n });\r\n }\r\n return preParedList;\r\n }\r\n getTempNameFromPayload(payload:any){\r\n let value = '';\r\n if(Object.keys(payload).length > 0){\r\n let crList = payload['crList'];\r\n if(crList && crList.length > 0){\r\n let criteria = crList[0];\r\n value = criteria['fValue'];\r\n }\r\n }\r\n return value;\r\n }\r\n getJsonSizeInKilobyte(obj:any){\r\n const bytes = new TextEncoder().encode(JSON.stringify(obj)).length;\r\n const kiloBytes = (bytes / 1024).toFixed(2);\r\n //const megaBytes = kiloBytes / 1024;\r\n return Number(kiloBytes);\r\n }\r\n removeSpaceFromString(str:string){\r\n if(str && typeof str == \"string\"){\r\n return str.trim();\r\n }else{\r\n return str;\r\n }\r\n }\r\n checkBlankProperties(data:any) {\r\n const objWithoutNull:any = {...data};\r\n Object.keys(objWithoutNull).forEach(key => {\r\n if (objWithoutNull[key] === \"\") {\r\n objWithoutNull[key] = null;\r\n }\r\n });\r\n return objWithoutNull;\r\n }\r\n // getOperators(type:string,dataTye?:string){\r\n // let operatorList = {...this.commonOperators};\r\n // switch (type){\r\n // case \"date\":\r\n // operatorList['cntsic'] = 'CONTAINS_IGNORE_CASE';\r\n // operatorList['lt'] = 'LESS_THAN';\r\n // operatorList['lte'] = \"RANGE_BORDER_LESS_THAN_INCLUSIVE\";\r\n // operatorList['gt'] = 'GREATER_THAN';\r\n // operatorList['gte'] = 'RANGE_BORDER_GREATER_THAN_INCLUSIVE';\r\n // break;\r\n // case \"number\":\r\n // operatorList['lt'] = 'LESS_THAN';\r\n // operatorList['lte'] = \"RANGE_BORDER_LESS_THAN_INCLUSIVE\";\r\n // operatorList['gt'] = 'GREATER_THAN';\r\n // operatorList['gte'] = 'RANGE_BORDER_GREATER_THAN_INCLUSIVE';\r\n // break;\r\n // case \"string\":\r\n // operatorList['stw'] = \"STARTS_WITH\";\r\n // operatorList['stwic'] = \"STARTS_WITH_IGNORE_CASE\";\r\n // operatorList['edw'] = 'ENDS_WITH';\r\n // operatorList['edwic'] = 'ENDS_WITH_IGNORE_CASE';\r\n // operatorList['cntsic'] = 'CONTAINS_IGNORE_CASE';\r\n // operatorList['ncnts'] = 'NOT_CONTAINS';\r\n // operatorList['ncntsic'] = 'NOT_CONTAINS_IGNORE_CASE';\r\n // break;\r\n // default:\r\n // break;\r\n // }\r\n // let sortValue = this.sortOperators(operatorList);\r\n // if(dataTye == 'list'){\r\n // return this.mapObjectToListOfString(sortValue);\r\n // }else{\r\n // return sortValue;\r\n // }\r\n // }\r\n\r\n getOperators(type: OperatorType,name:string){\r\n return Operator.getOperators(type,name);\r\n }\r\n\r\n sortOperators(operatorList:any){\r\n const sortedKeys = Object.keys(operatorList).sort();\r\n const sortedOperatorList:any = {};\r\n sortedKeys.forEach(key => {\r\n sortedOperatorList[key] = operatorList[key];\r\n });\r\n\r\n return sortedOperatorList;\r\n }\r\n mapObjectToListOfString(mapObject:any){\r\n let List:any = [];\r\n if(mapObject && Object.keys(mapObject).length > 0){\r\n Object.keys(mapObject).forEach((key)=>{\r\n List.push(mapObject[key]);\r\n })\r\n }\r\n return List;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CookiesService {\r\n\r\n constructor() { }\r\n\r\n // Create (or) Update value of cookie by Name\r\n setCookieByName(cname:string, cvalue:string, exdays=30) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n let expires = \"expires=\"+d.toUTCString();\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n }\r\n \r\n // Get value of cookie by Name\r\n getCookieByName(cname:string) {\r\n let name = cname + \"=\";\r\n let ca = document.cookie.split(';');\r\n for(let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n }\r\n \r\n //Delete the value of a cookie\r\n deleteCookieByName(name: string): void {\r\n this.setCookieByName(name, \"\", -1);\r\n }\r\n\r\n //Delete all cookies\r\n deleteAllCookies() {\r\n const cookies = document.cookie.split(\";\");\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n this.setCookieByName(cookie, \"\", -1); \r\n }\r\n }\r\n\r\n \r\n //Check the cookie present or not\r\n isCookieExpired(cName: string): boolean {\r\n const cookieValue = this.getCookieByName(cName);\r\n if (cookieValue && cookieValue!='' ) {\r\n return false;\r\n }\r\n return true;\r\n } \r\n\r\n\r\n}","import { CoreFunctionService } from './../common-utils/core-function/core-function.service';\r\nimport { EncryptionService } from './../encryption/encryption.service';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, debounceTime, distinctUntilChanged, map, tap, switchMap } from 'rxjs/operators';\r\nimport { StorageTokenStatus } from '../../shared/enums/storage-token-status.enum';\r\nimport { PLATFORM_NAME } from '../../shared/platform';\r\nimport { Common } from '../../shared/enums/common.enum';\r\nimport { CookiesService } from './cookies.service';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n ID_TOKEN: string = 'ID_TOKEN';\r\n ACCESS_TOKEN: string = 'ACCESS_TOKEN';\r\n REFRESH_TOKEN: string = 'REFRESH_TOKEN';\r\n RESET_PASS_SESSION:string = 'RESET_PASS_SESSION';\r\n EXPIRY_IN:any= 'EXPIRY_IN';\r\n USER_KEY: string = 'USER';\r\n ROLE:string = \"ROLE\";\r\n ACTIVE_MENU: string = 'MENU';\r\n MENU_TYPE: string = 'MENU_TYPE';\r\n ID_TOKEN_EXPIRY_TIME: string = 'ID_TOKEN_EXPIRY_TIME';\r\n REFRESH_TOKEN_EXPIRY_TIME:string='REFRESH_TOKEN_EXPIRY_TIME';\r\n userInfo: any;\r\n log: any;\r\n age:any=3540000; //59 minuts\r\n refreshTokenAge:any=2505600000 //refresh token age 29 days\r\n packDetails: any = {};\r\n\r\n HOST_NAME : string = 'HOST_NAME';\r\n PROJECT_FOLDER_NAME: string = 'PROJECT_FOLDER_NAME';\r\n TEMP_NAME:string = \"TEMP_NAME\";\r\n TEMP_THEME:string = \"TEMP_THEME\";\r\n PAGE_TITLE:string = \"PAGE_TITLE\";\r\n VERIFY_TYPE:string = \"VERIFY_TYPE\";\r\n MODULE:string = \"MODULE\";\r\n TEAM_NAME:string = \"TEAM_NAME\";\r\n USER_PREFERENCE:any;\r\n REDIRECT_URL:string = \"REDIRECT_URL\";\r\n CHILD_WINDOW_URL:string = \"CHILD_WINDOW_URL\";\r\n MODIFY_MODULES:any = 'MODIFY_MODULES';\r\n appName:any;\r\n CLIENT_NAME:any = 'CLIENT_NAME';\r\n ALL_TEMPLATE:any = 'ALL_TEMPLATE';\r\n TEMPLATE_INDEX:any = \"TEMPLATE_INDEX\";\r\n TAB_COUNTS:any=\"TAB_COUNTS\";\r\n\r\n\r\n constructor(\r\n private http: HttpClient,\r\n @Inject('env') private env:any,\r\n @Inject(DOCUMENT) private document: Document,\r\n private encryptionService:EncryptionService,\r\n private coreFunctionService:CoreFunctionService,\r\n private cookiesService:CookiesService\r\n ) { }\r\n\r\n load(): Observable<any>{\r\n return this.env;\r\n }\r\n setAppName(appname:string){\r\n this.appName = appname;\r\n localStorage.setItem(\"AppName\", JSON.stringify(appname));\r\n}\r\n setModule(module:string){\r\n sessionStorage.setItem(\"MODULE\",module);\r\n }\r\n getModule(){\r\n return sessionStorage.getItem('MODULE');\r\n }\r\n setChildWindowUrl(url:string){\r\n localStorage.setItem(\"CHILD_WINDOW_URL\",url);\r\n }\r\n getChildWindowUrl(){\r\n return localStorage.getItem('CHILD_WINDOW_URL');\r\n }\r\n setRedirectUrl(url:string){\r\n sessionStorage.setItem(\"REDIRECT_URL\",url);\r\n }\r\n getRedirectUrl(){\r\n return sessionStorage.getItem('REDIRECT_URL');\r\n }\r\n setUserPreference(user_preference:any){\r\n localStorage.setItem(\"USER_PREFERENCE\",JSON.stringify(user_preference));\r\n }\r\n getUserPreference(){\r\n return JSON.parse(<any>localStorage.getItem('USER_PREFERENCE'));\r\n }\r\n\r\n setThemeSetting(settingObj:any){\r\n localStorage.setItem(\"THEME_SETTING\",JSON.stringify(settingObj));\r\n }\r\n getThemeSetting(){\r\n return JSON.parse(<any>localStorage.getItem('THEME_SETTING'));\r\n }\r\n\r\n setApplicationSetting(applicationSetting:any){\r\n localStorage.setItem(\"APPLICATION_SETTING\",JSON.stringify(applicationSetting));\r\n }\r\n getApplicationSetting(){\r\n return JSON.parse(<any>localStorage.getItem('APPLICATION_SETTING'));\r\n }\r\n\r\n setAppId(appId:string){\r\n localStorage.setItem('appId', appId);\r\n }\r\n\r\n getAppId(){\r\n const user = this.GetUserInfo();\r\n if(user && user.appId && user.appId != null){\r\n return user.appId;\r\n }else{\r\n return localStorage.getItem('appId')\r\n }\r\n }\r\n\r\n setExpiresIn(expiry: any){\r\n let expiryTime = (expiry - 300)*1000\r\n localStorage.setItem(this.EXPIRY_IN, JSON.stringify(expiryTime));\r\n this.setIdTokenExpiry();\r\n }\r\n getExpiresIn(){\r\n return localStorage.getItem(this.EXPIRY_IN);\r\n }\r\n SetIdToken(token: any) {\r\n localStorage.setItem(this.ID_TOKEN, JSON.stringify(token));\r\n }\r\n GetIdToken() {\r\n let obj = JSON.parse(<any>localStorage.getItem(this.ID_TOKEN));\r\n if(obj && obj != null ){\r\n return obj;\r\n }else{\r\n return null;\r\n }\r\n }\r\n IsJsonString(str:any) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n SetAccessToken(token: any) {\r\n localStorage.setItem(this.ACCESS_TOKEN, JSON.stringify(token));\r\n }\r\n GetAccessToken() {\r\n let obj = JSON.parse(<any>localStorage.getItem(this.ACCESS_TOKEN));\r\n if(obj && obj != null){\r\n return obj;\r\n }\r\n }\r\n SetRefreshToken(token: string) {\r\n localStorage.setItem(this.REFRESH_TOKEN, token);\r\n this.setRefreshTokenExpiry();\r\n }\r\n GetRefreshToken() {\r\n return localStorage.getItem(this.REFRESH_TOKEN);\r\n }\r\n GetIdTokenStatus(){\r\n let expired = 0;\r\n let expireTime = Number(localStorage.getItem(this.ID_TOKEN_EXPIRY_TIME));\r\n let currentTime = Date.now();\r\n let expiresIn24Hours = 0;\r\n\r\n\tif(expireTime > currentTime)\r\n expiresIn24Hours = (((expireTime-currentTime)/1000)/3600) ;\r\n\r\n\tif(currentTime > expireTime){\r\n if(expireTime > 0){\r\n return StorageTokenStatus.ID_TOKEN_EXPIRED; // appConstant.TOKEN_STATUS.ID_TOKEN_EXPIRED; // notify, due to expired\r\n }\r\n return StorageTokenStatus.ID_TOKEN_NOT_CREATED; //appConstant.TOKEN_STATUS.ID_TOKEN_NOT_CREATED; // first time loading so no notify\r\n } else if(expiresIn24Hours > 24){\r\n\t\treturn StorageTokenStatus.ID_TOKEN_EXPIRED //appConstant.TOKEN_STATUS.ID_TOKEN_EXPIRED; // notify, due to expired\r\n\t}\r\n\r\n return StorageTokenStatus.ID_TOKEN_ACTIVE; //appConstant.TOKEN_STATUS.ID_TOKEN_ACTIVE; // not expired\r\n }\r\n\r\n\r\n\r\n GetRefreshTokenStatus(){\r\n let expired = 0;\r\n let expireTime = Number(localStorage.getItem(this.REFRESH_TOKEN_EXPIRY_TIME));\r\n let currentTime = Date.now();\r\n if(currentTime > expireTime){\r\n if(expireTime > 0){\r\n return StorageTokenStatus.REFRESH_TOKEN_EXPIRED; // appConstant.TOKEN_STATUS.REFRESH_TOKEN_EXPIRED; // notify, due to expired\r\n }\r\n return StorageTokenStatus.REFRESH_TOKEN_NOT_CREATED; // appConstant.TOKEN_STATUS.REFRESH_TOKEN_NOT_CREATED; // first time loading so no notify\r\n }\r\n return StorageTokenStatus.REFRESH_TOKEN_ACTIVE; // appConstant.TOKEN_STATUS.REFRESH_TOKEN_ACTIVE; // not expired\r\n }\r\n\r\n SetUserInfo(user: any) {\r\n localStorage.setItem(this.USER_KEY, JSON.stringify(user));\r\n }\r\n GetUserInfo() {\r\n const obj:any = JSON.parse(<any>localStorage.getItem(this.USER_KEY));\r\n if(obj && obj.user){\r\n return obj.user\r\n }else{\r\n return {};\r\n }\r\n }\r\n GetRoleList(){\r\n const obj:any = JSON.parse(<any>localStorage.getItem(this.USER_KEY));\r\n if(obj && obj.rollList){\r\n return obj.rollList\r\n }else{\r\n return [];\r\n }\r\n }\r\n setActiveRole(role:any){\r\n localStorage.setItem(this.ROLE, JSON.stringify(role));\r\n }\r\n getActiveRole(){\r\n const obj:any = JSON.parse(<any>localStorage.getItem(this.ROLE));\r\n return obj;\r\n }\r\n GetUserReference() {\r\n let user = this.GetUserInfo();\r\n let userRef:any = {};\r\n userRef['_id'] = user['_id'];\r\n userRef['name'] = user['name'];\r\n return userRef;\r\n }\r\n GetPermission() {\r\n const obj = JSON.parse(<any>localStorage.getItem(this.USER_KEY));\r\n if(obj && obj.permission){\r\n return obj.permission\r\n }\r\n else{\r\n return [];\r\n }\r\n }\r\n\r\n GetModules(){\r\n const obj = JSON.parse(<any>localStorage.getItem(this.USER_KEY));\r\n if(obj && obj.modules){\r\n return obj.modules\r\n }\r\n else{\r\n return [];\r\n }\r\n }\r\n // SetModifyModules(modules:any){\r\n // localStorage.setItem(this.MODIFY_MODULES,JSON.stringify(modules));\r\n // }\r\n // GetModifyModules(){\r\n // return JSON.parse(<any>localStorage.getItem(this.MODIFY_MODULES));\r\n // }\r\n GetMenuType(){\r\n const menu_Type = this.getApplicationValueByKey('menu_type');\r\n if(menu_Type){\r\n return menu_Type;\r\n }\r\n else{\r\n return null;\r\n }\r\n }\r\n getUserLog() {\r\n const user = JSON.parse(<any>localStorage.getItem(this.USER_KEY));\r\n if(user && user != null && user != undefined && user.user){\r\n this.userInfo = user.user;\r\n this.log = { userId: this.userInfo.email, appId: this.getAppId(), refCode: this.userInfo.refCode };\r\n return this.log;\r\n }else{\r\n return null;\r\n }\r\n }\r\n SetActiveMenu(menu: any) {\r\n sessionStorage.setItem(this.ACTIVE_MENU, JSON.stringify(menu));\r\n }\r\n GetActiveMenu() {\r\n return JSON.parse(<any>sessionStorage.getItem(this.ACTIVE_MENU));\r\n }\r\n getRefCode() {\r\n const userinfo = this.GetUserInfo();\r\n if(userinfo && userinfo.refCode){\r\n return userinfo.refCode;\r\n }\r\n return null;\r\n }\r\n getUserAppId(){\r\n return this.userInfo.appId;\r\n }\r\n removeDataFormStorage(all?:string) {\r\n let doNotClearCache:any = [];\r\n if(all != \"all\"){\r\n if(this.checkPlatForm() == 'mobile'){\r\n let clientCode = this.getClientName();\r\n if(clientCode && clientCode != ''){\r\n let object:any = {};\r\n object['key'] = this.CLIENT_NAME;\r\n object[\"value\"] = clientCode;\r\n object['type'] = 'localstorage'\r\n doNotClearCache.push(object);\r\n }\r\n }\r\n }\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n if(doNotClearCache && doNotClearCache.length > 0){\r\n doNotClearCache.forEach((obj:any) => {\r\n if(obj && obj.type == 'localstorage'){\r\n let key = obj['key'];\r\n let value = obj['value'];\r\n localStorage.setItem(key,value);\r\n }\r\n })\r\n }\r\n }\r\n\r\n setIdTokenExpiry(){\r\n const startTime = Date.now();\r\n const expiry = Number(this.getExpiresIn());\r\n //const expiry = this.getExpiresIn();\r\n localStorage.setItem(this.ID_TOKEN_EXPIRY_TIME, \"\"+(startTime + expiry));\r\n }\r\n\r\n setRefreshTokenExpiry(){\r\n const startTime = Date.now();\r\n localStorage.setItem(this.REFRESH_TOKEN_EXPIRY_TIME, startTime + this.refreshTokenAge);\r\n }\r\n search(url: string, term: string) {\r\n if (term === '') {\r\n return of([]);\r\n }\r\n return this.http\r\n .get(url + term).pipe(\r\n map((response) => {\r\n return response;\r\n //console.log(response);\r\n })\r\n );\r\n }\r\n setResetNewPasswordSession(session:any){\r\n localStorage.setItem('RESET_PASS_SESSION',session);\r\n }\r\n getResetNewPasswordSession(){\r\n const session = localStorage.getItem('RESET_PASS_SESSION');\r\n return session;\r\n }\r\n searchPostMethod(url: string, payload: any) {\r\n if (payload === '') {\r\n return of([]);\r\n }\r\n return this.http\r\n .post(url, payload).pipe(\r\n map((response) => {\r\n return response;\r\n //console.log(response);\r\n })\r\n );\r\n }\r\n // setPackaging(cartData:any) {\r\n // switch (cartData.type) {\r\n // case 'TAB': this.packDetails.packing = 'Packing : 1 strip (' + cartData.packing + ' Tablets Each)';\r\n // this.packDetails.unit = 'Strip(s)';\r\n // break;\r\n // case 'SYP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Syrup Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'LOT': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Lotion Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'INJ': this.packDetails.packing = 'Packing : 1 Vial (' + cartData.packing + ' Injection Each)';\r\n // this.packDetails.unit = 'Vial(s)';\r\n // break;\r\n // case 'POWD': this.packDetails.packing = 'Packing : 1 Box (' + cartData.packing + ' Powder Each)';\r\n // this.packDetails.unit = 'Box(es)';\r\n // break;\r\n // case 'CAP': this.packDetails.packing = 'Packing : 1 strip (' + cartData.packing + ' Capsule Each)';\r\n // this.packDetails.unit = 'Strip(s)';\r\n // break;\r\n // case 'SACH': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Sachet Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'INH': this.packDetails.packing = 'Packing : 1 Box (' + cartData.packing + ' Inhaler Each)';\r\n // this.packDetails.unit = 'Box(es)';\r\n // break;\r\n // case 'ROTO': this.packDetails.packing = 'Packing : 1 Box (' + cartData.packing + ' Redicaps Each)';\r\n // this.packDetails.unit = 'Box(es)';\r\n // break;\r\n // case 'E/DR': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Eye Drop Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'EDRP': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Eye Drop Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'OINT': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Ointment Each)';\r\n // this.packDetails.unit = 'Tube(s)';\r\n // break;\r\n // case 'OIL': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'SOAP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Pack(s)';\r\n // break;\r\n // case 'FWSH': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Pack(s)';\r\n // break;\r\n // case 'DRP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Pack(s)';\r\n // break;\r\n // case 'JELY': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Jelly Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'CREM': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Cream Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'CRTG': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'CONER': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'CHRN': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'FLOS': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'DIAP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'DRES': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'DRNK': this.packDetails.packing = 'Packing :1 Bottle (' + cartData.packing + ' Bottle each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'DSYP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'DPO': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'ENM': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'EXP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'EOINT': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Ointment Each)';\r\n // this.packDetails.unit = 'Tube(s)';\r\n // break;\r\n // case 'GEL': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Gel Each)';\r\n // this.packDetails.unit = 'Gel(s)';\r\n // break;\r\n // case 'GRGL': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'GMTR': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'HAISER': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'HWSH': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'INFN': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'VWASH': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'JAR': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'JUIC': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'KIT': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Kit Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'LBALM': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'LQD': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'MPNT': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'MWSH': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'NDRP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'NIPLE': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'ODRPS': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'PKT': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'PFS': this.packDetails.packing = 'Packing : 1 Syringe (' + cartData.packing + ' Syringe Each)';\r\n // this.packDetails.unit = 'Syringe(s)';\r\n // break;\r\n // case 'RPSLS': this.packDetails.packing = 'Packing : 1 Respule (' + cartData.packing + ' Respule Each)';\r\n // this.packDetails.unit = 'Respule(s)';\r\n // break;\r\n // case 'ROLL': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'SACH': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'SCRUB': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'SHAMP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'SLTN': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'SPRY': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'TPAST': this.packDetails.packing = 'Packing : 1 Paste (' + cartData.packing + ' Paste Each)';\r\n // this.packDetails.unit = 'Paste(s)';\r\n // break;\r\n // case 'VACC': this.packDetails.packing = 'Packing : 1 Vaccine (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Paste(s)';\r\n // break;\r\n // case 'VTAB': this.packDetails.packing = 'Packing : 1 Tablet (' + cartData.packing + ' Tablet Each)';\r\n // this.packDetails.unit = 'Tablet(s)';\r\n // break;\r\n // case 'WIPS': this.packDetails.packing = 'Packing : 1 Wipes (' + cartData.packing + ' Wipes Each)';\r\n // this.packDetails.unit = 'Wipe(s)';\r\n // break;\r\n // case 'TULL': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'TBAG': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'SYRNEE': this.packDetails.packing = 'Packing : 1 Pack Syringe (' + cartData.packing + ' Pack Syringe Each)';\r\n // this.packDetails.unit = 'Packet(s)';\r\n // break;\r\n // case 'NSPRY': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n // case 'RMSRP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';\r\n // this.packDetails.unit = 'Bottle(s)';\r\n // break;\r\n\r\n // default: this.packDetails.packing = 'Packing : 1 strip (' + cartData.packing + ' Tablets Each)';\r\n // this.packDetails.unit = 'Strip(s)';\r\n // }\r\n // return this.packDetails;\r\n // }\r\n\r\n setHostNameDinamically(host:string){\r\n let domainName = this.document.location['hostname'];\r\n\r\n localStorage.setItem(this.HOST_NAME, host);\r\n if(domainName!=\"localhost\" && this.cookiesService.isCookieExpired(domainName)){\r\n this.cookiesService.setCookieByName(domainName,host,30);\r\n }\r\n }\r\n\r\n getHostNameDinamically(){\r\n let host = localStorage.getItem(this.HOST_NAME);\r\n if(this.coreFunctionService.isNotBlank(host)){\r\n return host;\r\n }else{\r\n let domainName = this.document.location['hostname'];\r\n\r\n host = this.cookiesService.getCookieByName(domainName);\r\n if (host && host !=\"\") this.setHostNameDinamically(host);\r\n return host;\r\n }\r\n }\r\n getLogoPath(){\r\n let projectFolderName = this.getApplicationValueByKey('folder')\r\n return 'assets/img/logo/' + projectFolderName + '/';\r\n }\r\n getPageTitle(){\r\n return this.getApplicationValueByKey('title');\r\n }\r\n getVerifyType(){\r\n return this.getApplicationValueByKey('varify_mode');\r\n }\r\n getPageThmem(){\r\n return this.getApplicationValueByKey('theme');\r\n }\r\n getTemplateName(){\r\n return this.getApplicationValueByKey('temp_name');\r\n }\r\n getTeamName(){\r\n return this.getApplicationValueByKey('teamname');\r\n }\r\n\r\n getBucketName(){\r\n return this.getApplicationValueByKey('bucket');\r\n }\r\n getAuthenticationSetting(){\r\n return this.getApplicationValueByKey('authenticationSettings');\r\n }\r\n getAdminEmail(){\r\n let authenticationSettings:any = this.getAuthenticationSetting();\r\n let adminEmail = \"\";\r\n if(authenticationSettings && authenticationSettings['adminEmailId'] && authenticationSettings['adminEmailId'] != \"\"){\r\n adminEmail = authenticationSettings['adminEmailId'];\r\n }\r\n return adminEmail;\r\n }\r\n getApplicationValueByKey(key:any){\r\n let value:any = \"\";\r\n let applicationSetting = this.getApplicationSetting();\r\n if(applicationSetting && applicationSetting[key] != undefined && applicationSetting[key] != null && applicationSetting[key] != \"\"){\r\n value = applicationSetting[key];\r\n }\r\n return value;\r\n }\r\n // for App\r\n setClientNAme(name:string){\r\n localStorage.setItem(this.CLIENT_NAME,name);\r\n }\r\n getClientName(){\r\n return localStorage.getItem(this.CLIENT_NAME);\r\n }\r\n removeKeyFromStorage(key:string){\r\n localStorage.removeItem(key);\r\n }\r\n getPlatform(){\r\n return this.env.plateformName;\r\n }\r\n getClientCodeEnviorment(){\r\n return this.env;\r\n }\r\n checkPlatForm(){\r\n let platForm = 'web';\r\n let platFormName = this.getPlatform();\r\n if(platFormName && platFormName != \"\" && PLATFORM_NAME.includes(platFormName)){\r\n platForm = 'mobile';\r\n }\r\n return platForm;\r\n }\r\n\r\n getDefaultNumOfItem() {\r\n let itemNumOfGrid = Common.ITEM_NUM_OF_GRID;\r\n let defaultSettings = this.getApplicationDefaultSettings();\r\n if(defaultSettings && defaultSettings.defaultItemNoOfGrid && defaultSettings.defaultItemNoOfGrid != \"\" && defaultSettings.defaultItemNoOfGrid > 0) {\r\n itemNumOfGrid = defaultSettings.defaultItemNoOfGrid;\r\n }\r\n return itemNumOfGrid\r\n }\r\n\r\n getApplicationDefaultSettings(){\r\n let applicationSetting = this.getApplicationSetting();\r\n return applicationSetting.defaultApplicationSettings;\r\n }\r\n getApplicationAuthenticationSettings(){\r\n let applicationSetting = this.getApplicationSetting();\r\n if(applicationSetting && applicationSetting.authenticationSettings){\r\n return applicationSetting.authenticationSettings;\r\n }else{\r\n return null;\r\n }\r\n\r\n }\r\n getTwoFactorAuthenticationType(){\r\n let authenticationSetting = this.getApplicationAuthenticationSettings();\r\n if(authenticationSetting && authenticationSetting.twoFactorAuthentication && authenticationSetting.twoFactorAuthenticationType){\r\n return authenticationSetting.twoFactorAuthenticationType;\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n\r\n getDefaultSearchOperator() {\r\n let defaultSearchOperator = Common.DEFAULT_OPERATOR;\r\n let defaultSettings = this.getApplicationDefaultSettings();\r\n if(defaultSettings && defaultSettings.defaultSearchOperatorInGrid && defaultSettings.defaultSearchOperatorInGrid != \"\") {\r\n defaultSearchOperator = defaultSettings.defaultSearchOperatorInGrid;\r\n }\r\n return defaultSearchOperator;\r\n }\r\n storeAllTemplate(data:any){\r\n // let encryptData = this.encryptionService.encryptRequest(data);\r\n // console.log(encryptData);\r\n let modifiedList = this.modifyTemplateList(data);\r\n if(modifiedList){\r\n localStorage.setItem(this.ALL_TEMPLATE,JSON.stringify(modifiedList.templatList));\r\n localStorage.setItem(this.TEMPLATE_INDEX,JSON.stringify(modifiedList.templateIndexList));\r\n }\r\n }\r\n modifyTemplateList(obj:any){\r\n let list:any = {};\r\n let indexList:any = [];\r\n let oldList = this.getAllTemplateList();\r\n let allIndexList = JSON.parse(<any>localStorage.getItem(this.TEMPLATE_INDEX));\r\n if(allIndexList && allIndexList.length > 0){\r\n indexList = allIndexList;\r\n }\r\n if(oldList && Object.keys(oldList).length > 0){\r\n let size:number = this.coreFunctionService.getJsonSizeInKilobyte(oldList);\r\n // console.log(size);\r\n if(size >= 1024){\r\n let keyName = indexList[0];\r\n delete (oldList[keyName]);\r\n indexList.splice(0,1);\r\n }\r\n list = oldList;\r\n }else{\r\n list = {};\r\n }\r\n if(obj && obj){\r\n Object.keys(obj).forEach(key => {\r\n list[key] = obj[key];\r\n indexList.push(key);\r\n })\r\n }\r\n let responce = {\r\n templatList : list,\r\n templateIndexList:indexList\r\n }\r\n return responce;\r\n }\r\n getAllTemplateList(){\r\n //let allTemplate = localStorage.getItem(this.ALL_TEMPLATE);\r\n const obj:any = JSON.parse(<any>localStorage.getItem(this.ALL_TEMPLATE));\r\n //return this.encryptionService.decryptRequest(allTemplate);\r\n return obj;\r\n }\r\n getTemplate(tempName:string,moduleName:string){\r\n let templateList:any = this.getAllTemplateList();\r\n let name = moduleName+\"_\"+tempName;\r\n if(templateList && templateList[name]){\r\n return templateList[name];\r\n }else{\r\n return null;\r\n }\r\n }\r\n SetTabCounts(tabCounts: any) {\r\n localStorage.setItem(this.TAB_COUNTS, JSON.stringify(tabCounts));\r\n }\r\n GetTabCounts() {\r\n let counts = JSON.parse(<any>localStorage.getItem(this.TAB_COUNTS));\r\n if(counts){\r\n return counts;\r\n }else{\r\n return {};\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable,Inject } from '@angular/core';\r\nimport { from, of, Observable, Subscription } from 'rxjs';//fromPromise\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Common } from '../../shared/enums/common.enum';\r\nimport { EndPoint } from '../../shared/enums/end-point.enum';\r\nimport { StorageTokenStatus } from '../../shared/enums/storage-token-status.enum';\r\nimport { serverHostList } from './serverHostList';\r\nimport { StorageService } from '../../services/storage/storage.service';\r\nimport { CoreFunctionService } from '../../services/common-utils/core-function/core-function.service';\r\nimport { PLATFORM_NAME } from '../../shared/platform';\r\nimport { DataShareService } from '../data-share/data-share.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvService {\r\n requestType: any = '';\r\n serverHostname : string = '';\r\n serverHostnameSubscription : Subscription\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private storageService: StorageService,\r\n private coreFunctionService:CoreFunctionService,\r\n private dataShareService : DataShareService,\r\n ) {\r\n this.serverHostnameSubscription = this.dataShareService.serverHostname.subscribe(data=>{\r\n if(data && data != ''){\r\n this.serverHostname = data;\r\n }\r\n })\r\n }\r\n\r\n\r\n getBaseUrl(){\r\n let baseUrl:any;\r\n const host = this.storageService.getHostNameDinamically();\r\n if(this.coreFunctionService.isNotBlank(host)){\r\n baseUrl = host;\r\n }else{\r\n // baseUrl = environment.serverhost\r\n if(this.getHostKeyValue('serverEndpoint')){\r\n baseUrl = this.getHostKeyValue('serverEndpoint') +'/rest/';\r\n }else{\r\n if(this.serverHostname){\r\n baseUrl = this.serverHostname +'/rest/';\r\n }\r\n }\r\n // baseUrl = this.getHostKeyValue('serverEndpoint') +'/rest/';\r\n this.setDinamicallyHost();\r\n }\r\n return baseUrl;\r\n }\r\n getAppName(){\r\n if(this.coreFunctionService.isNotBlank(this.storageService.getClientCodeEnviorment().appName)){\r\n this.storageService.setAppName(this.storageService.getClientCodeEnviorment().appName);\r\n return this.storageService.getClientCodeEnviorment().appName;\r\n }\r\n }\r\n getAppId(){\r\n return this.storageService.getClientCodeEnviorment().appId;\r\n }\r\n baseUrl(applicationAction: string) {\r\n return this.getBaseUrl() + (<any>EndPoint)[applicationAction];\r\n }\r\n publicBaseUrl(applicationAction: string) {\r\n return this.getBaseUrl() + EndPoint.PUBLIC + (<any>EndPoint)[applicationAction];\r\n }\r\n otpApi(){\r\n return \"https://2factor.in/API/V1/\" + Common.API_KEY + \"/SMS/\"\r\n }\r\n verifyOtpApi(){\r\n return \"https://2factor.in/API/V1/\" + Common.API_KEY + \"/SMS/VERIFY/\"\r\n }\r\n getApi(apiName:string){\r\n let api;\r\n if(this.getRequestType() == 'PUBLIC'){\r\n api = this.publicBaseUrl(apiName)\r\n }else{\r\n api = this.baseUrl(apiName)\r\n }\r\n return api;\r\n }\r\n getAuthApi(apiName:string){\r\n let api;\r\n api = this.baseUrl(apiName)\r\n return api;\r\n }\r\n setRequestType(type:any) {\r\n this.requestType = type;\r\n }\r\n getRequestType() {\r\n if(this.requestType == ''){\r\n if(this.checkLogedIn()){\r\n this.requestType = \"PRIVATE\";\r\n }else{\r\n this.requestType = \"PUBLIC\";\r\n }\r\n }\r\n return this.requestType;\r\n }\r\n checkLogedIn(){\r\n if (this.storageService != null && this.storageService.GetIdToken() != null) {\r\n if(this.storageService.GetIdTokenStatus() == StorageTokenStatus.ID_TOKEN_ACTIVE){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n setDinamicallyHost(){\r\n let setHostName = this.storageService.getHostNameDinamically();\r\n let serverHostName = this.serverHostname;\r\n // let themedata = this.getHostKeyValue('theme_setting');\r\n //this.setApplicationSetting();\r\n if(setHostName && serverHostName && serverHostName != setHostName ) {\r\n const hostName = serverHostName +'/rest/';\r\n this.storageService.setHostNameDinamically(hostName);\r\n //this.setThemeSetting(themedata);\r\n } else {\r\n this.dataShareService.getServerEndPoint(true);\r\n }\r\n }\r\n\r\n getHostKeyValue(keyName:string){\r\n let hostname:any =\"\";\r\n let key_Name:string = '';\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n hostname = this.storageService.getClientName();\r\n key_Name = 'clientCode';\r\n }else{\r\n hostname = this.getHostName('hostname');\r\n key_Name = 'clientEndpoint';\r\n }\r\n let value:any = '';\r\n if(hostname == 'localhost'){\r\n value = this.storageService.getClientCodeEnviorment().serverhost;\r\n }else if(serverHostList && serverHostList.length > 0){\r\n for (let index = 0; index < serverHostList.length; index++) {\r\n const element:any = serverHostList[index];\r\n if(hostname == element[key_Name]){\r\n if(keyName == \"object\"){\r\n value = element;\r\n break;\r\n }else{\r\n value = element[keyName];\r\n break;\r\n }\r\n\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n getHostName(key:string){\r\n let mydocument:any = this.document;\r\n return mydocument.location[key];\r\n }\r\n getServerHostname(){\r\n return this.serverHostname;\r\n }\r\n\r\n setGoogleLocation(geolocation:any){\r\n (Common as any).GOOGLE_MAP_IN_FORM = geolocation;\r\n }\r\n\r\n setApplicationSetting(){\r\n let geolocation = this.storageService.getApplicationValueByKey('google_map');\r\n this.setGoogleLocation(geolocation);\r\n }\r\n\r\n themeSettingList = [\r\n {'propertyName':'--headerbg','key':'header_bg_color','default':'#fcfcfc'},\r\n {'propertyName':'--navtxtcolor','key':'header_txt_color','default':'#222'},\r\n {'propertyName':'--navtxthovercolor','key':'header_txt_hover_color','default':'#77bce8'},\r\n {'propertyName':'--headericon','key':'header_icon_color','default':'#555'},\r\n {'propertyName':'--headericonhover','key':'header_icon_hover_color','default':'#777'},\r\n {'propertyName':'--buttonColor','key':'btn_color','default':'#2597de'},\r\n {'propertyName':'--buttonHoverColor','key':'btn_hover_color','default':'#0b71b0'},\r\n {'propertyName':'--footerbg','key':'footer_bg','default':'#77bce8'},\r\n {'propertyName':'--themecolor','key':'theme_color','default':'#e8f5fd'},\r\n {'propertyName':'--activebg','key':'active_bg_color','default':'#77bce8'},\r\n {'propertyName':'--popupHeaderBg','key':'popup_header_bg','default':'#CEE7F7'},\r\n {'propertyName':'--formLabelBg','key':'form_label_bg','default':'#E4F2FA'},\r\n {'propertyName':'--fontColor','key':'txtColor','default':'#000'},\r\n ]\r\n setThemeSetting(settingObj:any) {\r\n this.themeSettingList.forEach(object => {\r\n let propertyName = object.propertyName;\r\n let key = object.key;\r\n let defaultValue = object.default;\r\n if(settingObj[key] && settingObj[key] != \"\" ) {\r\n document.documentElement.style.setProperty(propertyName, settingObj[key]);\r\n }else{\r\n document.documentElement.style.setProperty(propertyName, defaultValue);\r\n }\r\n });\r\n }\r\n checkRedirectionUrl(){\r\n let redirectURL = '';\r\n const url = this.storageService.getApplicationSetting();\r\n if(url && url['redirect_url']){\r\n redirectURL = url['redirect_url'];\r\n }\r\n return redirectURL;\r\n }\r\n\r\n checkClientExistOrNot(data:any){\r\n let value : boolean = false;\r\n if(serverHostList && serverHostList.length > 0){\r\n for (let index = 0; index < serverHostList.length; index++) {\r\n const element:any = serverHostList[index];\r\n if(element && element.clientCode){\r\n if(data === element.clientCode){\r\n value = true\r\n }\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n getVerifyType(){\r\n return this.storageService.getClientCodeEnviorment().verify_type;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ModelService {\r\n\r\n private modals: any[] = [];\r\n\r\n constructor() { } \r\n \r\n add(modal: any) {\r\n this.modals.push(modal);\r\n }\r\n\r\n remove(id: string) {\r\n this.modals = this.modals.filter(x => x.id !== id);\r\n }\r\n\r\n open(id: string,object:object) {\r\n let modal: any = this.modals.filter(x => x.id === id)[0];\r\n modal.showModal(object);\r\n }\r\n close(id: string) {\r\n let modal: any = this.modals.filter(x => x.id === id)[0];\r\n modal.close();\r\n }\r\n}\r\n","import { CoreFunctionService } from './../common-utils/core-function/core-function.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { map, tap, switchMap, mergeMap, catchError } from 'rxjs/operators';\r\nimport { from, of, Observable } from 'rxjs';//fromPromise\r\nimport { DataShareService } from '../data-share/data-share.service';\r\nimport { EnvService } from '../env/env.service';\r\nimport { ModelService } from '../model/model.service';\r\nimport { StorageService } from '../storage/storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiService {\r\n serverReq:boolean = false;\r\n\r\nconstructor(\r\n private dataShareService: DataShareService,\r\n private http:HttpClient,\r\n private envService: EnvService,\r\n private modalService: ModelService,\r\n private stroageService: StorageService,\r\n private coreFunctionService:CoreFunctionService\r\n ) { }\r\n\r\ngetStatiData(payloads:any){\r\n this.dataShareService.setReqResponce(true);\r\n let reqLength = payloads.length;\r\n let responceCount = 0;\r\n from(payloads)\r\n .pipe(\r\n mergeMap((payload)=>\r\n this.staticDataCall([payload]))\r\n )\r\n .subscribe(\r\n (res:any) => {\r\n this.setStaticData(res['success'])\r\n responceCount = responceCount + 1;\r\n if(responceCount == reqLength){\r\n this.dataShareService.setReqResponce(false);\r\n }\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n}\r\nstaticDataCall(payload:object){\r\n let api = this.envService.getApi('GET_STATIC_DATA');\r\n return this.http.post(api, payload)\r\n}\r\nsetStaticData(data:any){\r\n const staticData:any = this.dataShareService.getStatiData();\r\n const currentData:any = {};\r\n if(data && data.length > 0){\r\n data.forEach((element:any) => {\r\n if(element.adkeys){\r\n if(element.adkeys.totalRows && element.adkeys.totalRows != ''){\r\n staticData[element.field] = [];\r\n currentData[element.field] = [];\r\n for (let index = 0; index < element.adkeys.totalRows; index++) {\r\n staticData[element.field].push(element.data);\r\n currentData[element.field].push(element.data);\r\n }\r\n }\r\n if(element.adkeys.index && element.adkeys.index != ''){\r\n if(staticData[element.field] && staticData[element.field].length > 0){\r\n const index = element.adkeys.index;\r\n staticData[element.field][index] = element.data;\r\n currentData[element.field][index] = element.data;\r\n }\r\n }\r\n }else{\r\n staticData[element.field] = element.data;\r\n currentData[element.field] = element.data;\r\n }\r\n });\r\n }\r\n if(data && data['staticDataMessgae'] != null && data['staticDataMessgae'] != ''){\r\n staticData['staticDataMessgae'] = data['staticDataMessgae'];\r\n currentData['staticDataMessgae'] = data['staticDataMessgae'];\r\n }\r\n this.dataShareService.shareStaticData(staticData,currentData);\r\n}\r\n\r\nResetStaticData(keyName:any){\r\n let staticData:any = this.dataShareService.getStatiData();\r\n staticData[keyName.field] = null;\r\n this.dataShareService.shareStaticData(staticData,{});\r\n}\r\n\r\nresetStaticAllData(){\r\n this.dataShareService.shareStaticData({},{})\r\n}\r\n\r\ngetGridCountData(payloads:string){\r\n from(payloads)\r\n .pipe(\r\n mergeMap((payload)=>\r\n this.gridCountDataCall([payload]))\r\n )\r\n .subscribe(\r\n (res:any) => {\r\n this.setGridCountData(res['success'])\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n}\r\ngetTabCountData(payloads:any){\r\n let api = this.envService.getApi('GET_COUNT_DATA');\r\n this.http.post(api, payloads).subscribe(\r\n (respData:any) => {\r\n this.setGridCountData(respData['success'])\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngridCountDataCall(payload:object){\r\n let api = this.envService.getApi('GET_COUNT_DATA');\r\n return this.http.post(api, payload)\r\n}\r\n\r\nsetGridCountData(data:any){\r\n const localGridCount:any = this.stroageService.GetTabCounts();\r\n const gridCountData:any = this.dataShareService.getGridCountData();\r\n const count:any = {};\r\n const dataCount:any = {};\r\n if(data.length > 0){\r\n data.forEach((element:any) => {\r\n gridCountData[element.field] = element.data_size;\r\n count[element.field] = element.data_size;\r\n localGridCount[element.field] = element.data_size;\r\n });\r\n }\r\n dataCount['gridCountData'] = gridCountData;\r\n dataCount['count'] = count;\r\n this.stroageService.SetTabCounts(localGridCount)\r\n this.dataShareService.shareGridCountData(dataCount);\r\n}\r\nresetGridCountAllData(){\r\n this.dataShareService.shareGridCountData({ count: {}, gridCountData: {}})\r\n}\r\ngetGridData(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareGridData(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\nresetGridData(){\r\n this.dataShareService.shareGridData([])\r\n}\r\ngetDashletMster(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareDashletMaster(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\ngetMongoDashletMster(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareMongoChart(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\ngetMongoDashbord(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareMongoDashbord(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\nGetTempMenu(payload:any){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareMenuData(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nresetMenuData(){\r\n this.dataShareService.shareMenuData([])\r\n}\r\nGetTempData(payload:any){\r\n let moduleName = payload['module'];\r\n let name = this.coreFunctionService.getTempNameFromPayload(payload);\r\n let template = this.stroageService.getTemplate(name,moduleName);\r\n if(template){\r\n this.dataShareService.shareTempData([template]);\r\n }else{\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareTempData(respData);\r\n let preparedTempList = this.coreFunctionService.prepareTemplate(respData,moduleName);\r\n this.stroageService.storeAllTemplate(preparedTempList)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n}\r\nresetTempData(){\r\n this.dataShareService.shareTempData([])\r\n}\r\ndeleteGridRow(payload:any){\r\n let api = this.envService.getApi('DELETE_GRID_ROW');\r\n this.http.post(api+ '/' + payload.curTemp,payload).subscribe(\r\n (response) => {\r\n this.dataShareService.setDeleteGridRowResponce(response);\r\n }\r\n )\r\n}\r\n\r\nSaveFormData(payload:any){\r\n let api = this.envService.getApi('SAVE_FORM_DATA');\r\n this.saveCall(api+ '/' + payload.curTemp,payload)\r\n}\r\nSendEmail(payload:any){\r\n let api = this.envService.getApi('SEND_EMAIL');\r\n this.saveCall(api+ '/' + payload.curTemp,payload)\r\n}\r\nDynamicApiCall(payload:any){\r\n let api = this.envService.getBaseUrl();\r\n let list = payload.path.split(\"/\");\r\n let callName = list[list.length-1];\r\n switch(callName){\r\n case \"gsd\":\r\n this.getStatiData(payload.data);\r\n break;\r\n default:\r\n this.saveCall(api+payload.path,payload)\r\n }\r\n\r\n}\r\nsaveCall(api:string,payload:any){\r\n this.http.post(api, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.setSaveResponce(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nResetSaveResponce(){\r\n this.dataShareService.setSaveResponce('')\r\n}\r\nGetFilterGridData(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareGridData(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetTypeaheadData(payload:any){\r\n let api = this.envService.getApi('GET_STATIC_DATA');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) => {\r\n let currentstaticData:any=[];\r\n let result =[];\r\n currentstaticData=respData['success'];\r\n if(currentstaticData.length > 0){\r\n result = currentstaticData[0].data\r\n }\r\n this.dataShareService.setTypeAheadData(result)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nclearTypeaheadData(){\r\n this.dataShareService.setTypeAheadData([])\r\n}\r\nGetForm(payload:any){\r\n let endPoint = '';\r\n if(this.envService.getRequestType() == 'PUBLIC'){\r\n endPoint = 'GET_FORM_PUBLIC';\r\n }else{\r\n endPoint = 'GET_FORM';\r\n }\r\n let api = this.envService.getApi(endPoint);\r\n if(payload._id && payload._id != undefined && payload._id != null &&payload._id != ''){\r\n api = api + '/' + payload._id;\r\n }\r\n this.http.post(api, payload.data).subscribe(\r\n (respData:any) => {\r\n let dinamicForm;\r\n if(respData && respData['success'] != null){\r\n const object = JSON.parse(JSON.stringify(respData['success']));\r\n object['view_mode'] = \"inlineFormView\";\r\n dinamicForm = {\r\n DINAMIC_FORM : object\r\n }\r\n }\r\n this.dataShareService.setForm(dinamicForm)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\nGetNestedForm(payload:any){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) => {\r\n this.dataShareService.setNestedForm(respData[0]);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\nGetHostName(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData:any) => {\r\n this.dataShareService.setHostData(respData['data'])\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetDashletData(payloads:any){\r\n //this.dataShareService.setDashletData({});\r\n from(payloads)\r\n .pipe(\r\n mergeMap((payload)=>\r\n this.dashletDataCall(payload))\r\n )\r\n .subscribe(\r\n (res) => {\r\n this.SetDashletData(res)\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n}\r\ndashletDataCall(payload:any){\r\n let api = this.envService.getApi('GET_DASHLET_DATA');\r\n return this.http.post(api + '/' + payload._id, payload.data);\r\n}\r\nSetDashletData(respData:any){\r\n let currentStaticData=[];\r\n let getDashletData = this.dataShareService.getDashletData();\r\n const dashletData = JSON.parse(JSON.stringify(getDashletData));\r\n currentStaticData.push(respData);\r\n if(currentStaticData.length > 0){\r\n currentStaticData.forEach(element => {\r\n if(element && element.field != undefined && element.field != null){\r\n dashletData[element.field] = element.data\r\n }\r\n });\r\n\r\n }\r\n this.dataShareService.setDashletData(dashletData);\r\n}\r\n\r\nGetExportExclLink(payload:any){\r\n let api = this.envService.getApi('EXPORT_GRID_DATA');\r\n this.http.post(api, payload.data, payload.responce).subscribe(\r\n (respData) => {\r\n this.dataShareService.setExportExcelLink(respData)\r\n },\r\n (error) => {\r\n this.modalService.close('download-progress-modal');\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetExportCVSLink(payload:any){\r\n let api = this.envService.getApi('CSV_EXPORT_GRID_DATA');\r\n this.http.post(api, payload.data, payload.responce).subscribe(\r\n (respData) => {\r\n this.dataShareService.setExportCVSLink(respData)\r\n },\r\n (error) => {\r\n this.modalService.close('download-progress-modal');\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\nresetGetExportExclLink(){\r\n this.dataShareService.setExportExcelLink('');\r\n}\r\nGetProductList(payload:any){\r\n let api = this.envService.getApi('GET_PARAMETER_LIST');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setProductList(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetPreviewHtml(payload:any){\r\n let api = this.envService.getApi('GET_PREVIEW_HTML');\r\n this.http.post(api + '/' + payload._id, payload.data).subscribe(\r\n (respData:any) => {\r\n this.dataShareService.setPreviewHtml(respData['success']);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nresetPreviewHtml(){\r\n this.dataShareService.setPreviewHtml('');\r\n}\r\nUpdateProductBranch(payload:any){\r\n let api = this.envService.getApi('SAVE_PARAMETER_LIST');\r\n this.http.post(api + '/' + payload._id, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.setUpdateProductBranch(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetJobSchedules(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload._id, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.setJobScheduleData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetPdfData(payload:any){\r\n let api = this.envService.getApi('GET_PDF');\r\n this.http.post<HttpResponse<any>>(api + '/' + payload._id, payload.data, { responseType: 'arraybuffer' as 'json', observe: 'response' as 'body' }).subscribe(\r\n (respData) => {\r\n var contentDisposition:any = respData.headers.get('Content-Disposition');\r\n var filename = \"\";\r\n let matches = /filename=\"(.*?)\"/g.exec(contentDisposition);\r\n if (matches != null && matches[1]) {\r\n filename = matches[1].replace(/['\"]/g, '');\r\n filename = filename.substring(filename.indexOf(\"=\") + 1, filename.length)\r\n }\r\n this.dataShareService.setDownloadPdfData({ data: respData.body, filename: filename });\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nResetPdfData(){\r\n this.dataShareService.setDownloadPdfData('');\r\n}\r\nGetFileData(payload:any){\r\n let api = this.envService.getApi('GET_FILE');\r\n this.http.post<HttpResponse<any>>(api + '/' + payload._id, payload.data, { responseType: 'arraybuffer' as 'json', observe: 'response' as 'body' }).subscribe(\r\n (respData) => {\r\n var contentDisposition:any = respData.headers.get('Content-Disposition');\r\n var filename = \"\";\r\n let matches = /filename=\"(.*?)\"/g.exec(contentDisposition);\r\n if (matches != null && matches[1]) {\r\n filename = matches[1].replace(/['\"]/g, '');\r\n filename = filename.substring(filename.indexOf(\"=\") + 1, filename.length)\r\n }\r\n this.dataShareService.setFileData({ data: respData.body, filename: filename });\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nPrintTemplate(payload:any){\r\n let api = this.envService.getApi('GET_FILE');\r\n this.http.post<HttpResponse<any>>(api + '/' + payload._id, payload.data, { responseType: 'arraybuffer' as 'json', observe: 'response' as 'body' }).subscribe(\r\n (respData) => {\r\n var contentDisposition:any = respData.headers.get('Content-Disposition');\r\n var filename = \"\";\r\n let matches = /filename=\"(.*?)\"/g.exec(contentDisposition);\r\n if (matches != null && matches[1]) {\r\n filename = matches[1].replace(/['\"]/g, '');\r\n filename = filename.substring(filename.indexOf(\"=\") + 1, filename.length)\r\n }\r\n this.dataShareService.setPrintTemplate({ data: respData.body, filename: filename });\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nResetFileData(){\r\n this.dataShareService.setFileData('');\r\n}\r\nDownloadFile(payload:any){\r\n let api = this.envService.getApi('DOWNLOAD_PDF');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData:any) => {\r\n this.dataShareService.setFileDownloadUrl(respData['success']);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nResetDownloadUrl(){\r\n this.dataShareService.setFileDownloadUrl('');\r\n}\r\nFileUpload(payload:any){\r\n let api = this.envService.getApi('GET_PDF');\r\n this.http.post(api + '/' + payload._id, payload.data, payload.responce).subscribe(\r\n (respData) => {\r\n console.log(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetChartData(payload:object){\r\n let api = this.envService.getApi('GET_CHART_DATA');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setChartData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nGetQr(payload:any){\r\n let api = this.envService.getApi('GET_QR_CODE');\r\n this.http.post(api + payload['number'], payload,{responseType: 'blob'} ).subscribe(\r\n (respData) => {\r\n this.dataShareService.setFileData({ data: respData, filename: \"qr-\"+payload['from']+\"-\"+(payload['to']-1) });\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngetAuditVersionList(payload:any){\r\n let api = this.envService.getApi('AUDIT_VERSION_LIST');\r\n this.http.get(api +\"/\"+ payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setAuditVersionList(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngetAuditHistory(payload:any){\r\n let api = this.envService.getApi('AUDIT_HISTORY');\r\n this.http.post(api +\"/\"+ payload['path'], payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.setAuditHistoryData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngetAplicationsThemeSetting(payload:object) {\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n if(JSON.stringify(respData) != \"{}\"){\r\n this.dataShareService.setThemeSetting(respData)\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\ngetAplicationsSetting(payload:object) {\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n if(JSON.stringify(respData) != \"{}\"){\r\n this.dataShareService.setApplicationSetting(respData)\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nfieldDinamicApi(api:any,payload:object){\r\n const host = this.envService.getBaseUrl();\r\n this.http.post(host+api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setFieldDinamicApiResponce(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngetNextFormData(payload:any) {\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n if(JSON.stringify(respData) != \"{}\"){\r\n this.dataShareService.setNextFormData(respData)\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\n\r\ngitVersion(payload:string) {\r\n let api = this.envService.getApi('GIT_VERSION');\r\n this.http.get<any>(api).subscribe(\r\n (respData) => {\r\n this.dataShareService.setGitVersion(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\n\r\ngetReportLoadGridData(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.setReportLoadGridData(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\n\r\ngetFavouriteData(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData:any) => {\r\n if(respData && respData['data'] && respData['data'].length > 0){\r\n const userPreference = respData['data'][0];\r\n this.stroageService.setUserPreference(userPreference);\r\n this.dataShareService.setUserPreference(userPreference);\r\n }else{\r\n this.dataShareService.setUserPreference(respData['data']);\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngetUserNotification(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareUserNotification(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n\r\ngetUserNotificationSetting(){\r\n let api = this.envService.getApi('GET_NOTIFICATION_SETTING');\r\n this.http.post(api,{}).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareUserNotificationSetting(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\nresetUserNotification(){\r\n this.dataShareService.shareUserNotification([])\r\n}\r\n\r\ngetDownloadManual(payload:object){\r\n let api = this.envService.getApi('DOWNLOAD_MANUAL');\r\n this.http.post(api,payload).subscribe(\r\n (respData:any) => {\r\n const url= respData.fileUrl;\r\n this.dataShareService.sharePublicUrlFromS3(url);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\ngetGridRunningData(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.shareGridRunningData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n}\r\n // For app\r\n getDatabyCollectionName(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.dataShareService.collectionData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n GetChildGrid(payload:any){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) => {\r\n this.dataShareService.setChildGrid(respData[0]);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n //End For app functions\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\r\nimport { ApiService } from '../api/api.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\r\n horizontalPosition: MatSnackBarHorizontalPosition = 'right';\r\n verticalPosition: MatSnackBarVerticalPosition = 'top';\r\n private synth: SpeechSynthesis;\r\n private voices: SpeechSynthesisVoice[];\r\n private selectedLanguage: string;\r\n\r\n constructor(\r\n private _snackBar: MatSnackBar,\r\n private apiService: ApiService,\r\n ) {\r\n this.synth = window.speechSynthesis;\r\n this.voices = [];\r\n this.selectedLanguage = 'en-US'; // Default language\r\n\r\n // Load voices asynchronously\r\n this.loadVoices();\r\n if (speechSynthesis.onvoiceschanged !== undefined) {\r\n speechSynthesis.onvoiceschanged = this.loadVoices.bind(this);\r\n }\r\n }\r\n\r\n\r\n notify(className:string,message:string) {\r\n if(className !=null && message !=null){\r\n this._snackBar.open(message, 'Dismiss', {\r\n duration: 5000,\r\n panelClass: className,\r\n horizontalPosition: this.horizontalPosition,\r\n verticalPosition: this.verticalPosition\r\n });\r\n // this.speak(message);\r\n }\r\n }\r\n\r\n markUsRead(data:any){\r\n if (data.notificationStatus === 'UNREAD') {\r\n data.notificationStatus = 'READ';\r\n const payload = {\r\n curTemp: 'user_notification_master',\r\n data: data\r\n };\r\n this.apiService.SaveFormData(payload);\r\n }\r\n }\r\n setLanguage(language: string): void {\r\n this.selectedLanguage = language;\r\n }\r\n private getVoiceByLanguage(language: string): SpeechSynthesisVoice | null {\r\n return this.voices.find(voice => voice.lang === language) || null;\r\n }\r\n private loadVoices(): void {\r\n this.voices = this.synth.getVoices();\r\n }\r\n private getFemaleVoice(): SpeechSynthesisVoice | null {\r\n // You can improve this function to better identify female voices\r\n return this.voices.find((voice:any) => voice.name.includes('female') || voice.name.includes('Female') || voice.gender === 'female') || null;\r\n }\r\n speak(message: string): void {\r\n if (this.synth.speaking) {\r\n console.error('speechSynthesis.speaking');\r\n return;\r\n }\r\n\r\n if (message !== '') {\r\n const utterThis = new SpeechSynthesisUtterance(message);\r\n const selectedVoice = this.getFemaleVoice();\r\n // const selectedVoice = this.getVoiceByLanguage(this.selectedLanguage);\r\n\r\n if (selectedVoice) {\r\n utterThis.voice = selectedVoice;\r\n }\r\n\r\n utterThis.onend = () => {\r\n console.log('SpeechSynthesisUtterance.onend');\r\n };\r\n\r\n utterThis.onerror = (event) => {\r\n console.error('SpeechSynthesisUtterance.onerror', event);\r\n };\r\n\r\n this.synth.speak(utterThis);\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { DatePipe } from '@angular/common';\r\nimport { StorageService } from '../../services/storage/storage.service';\r\nimport { CoreFunctionService } from '../common-utils/core-function/core-function.service';\r\nimport { ApiService } from '../api/api.service';\r\nimport { ModelService } from '../model/model.service';\r\nimport { EnvService } from '../env/env.service';\r\nimport { NotificationService } from '../notify/notification.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonFunctionService {\r\n userInfo: any;\r\n localTas:any;\r\n\r\n constructor(\r\n private storageService: StorageService,\r\n private modalService: ModelService,\r\n private datePipe: DatePipe,\r\n private apiService:ApiService,\r\n private coreFunctionService:CoreFunctionService,\r\n private envService:EnvService,\r\n private notificationService:NotificationService,\r\n ) {\r\n this.userInfo = this.storageService.GetUserInfo();\r\n }\r\n\r\n getRefcode() {\r\n this.userInfo = this.storageService.GetUserInfo();\r\n if (this.userInfo != null && this.userInfo != undefined && this.userInfo.refCode) {\r\n return this.userInfo.refCode;\r\n } else {\r\n return null;\r\n }\r\n }\r\n getAppId() {\r\n this.userInfo = this.storageService.GetUserInfo();\r\n if (this.userInfo != null && this.userInfo != undefined && this.userInfo.appId) {\r\n return this.userInfo.appId;\r\n } else {\r\n return null;\r\n }\r\n }\r\n getObjectValue(field:any, object:any) {\r\n let result = object;\r\n if (field && field != null && field != '' && field != \" \") {\r\n\r\n let list = field.split(\".\")\r\n for (let index = 0; index < list.length; index++) {\r\n result = result[list[index]]\r\n if (result === null || result === undefined) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n }\r\n return \"\";\r\n }\r\n\r\n getddnDisplayVal(val:any) {\r\n if (val && val.name) {\r\n return val.name;\r\n } else if (val && val.label) {\r\n return val.label;\r\n } else if (val && val.field_name) {\r\n return val.field_name;\r\n } else {\r\n return val;\r\n }\r\n }\r\n openTreeModal(fieldLabel:any, ddnField:any, modalName:any) {\r\n const alertData = {\r\n \"event\": true,\r\n \"fieldName\": fieldLabel,\r\n \"ddnFieldName\": ddnField\r\n }\r\n this.modalService.open(modalName, alertData);\r\n }\r\n dateFormat(value:any) {\r\n return this.datePipe.transform(value, 'dd/MM/yyyy');\r\n }\r\n getDivClass(field:any,fieldsLangth:any){\r\n const fields = {...field}\r\n if (!fields.type) {\r\n fields.type = \"text\";\r\n }\r\n if(fields.field_class && field.field_class != ''){\r\n return fields.field_class;\r\n }\r\n switch (fields.type) {\r\n case \"list_of_checkbox\":\r\n case \"list_of_fields\":\r\n case \"html\":\r\n case \"label\":\r\n case \"grid_selection\":\r\n case \"tabular_data_selector\":\r\n case \"group_of_fields\":\r\n return \"col-lg-12\";\r\n default:\r\n if(fieldsLangth <= 5){\r\n return \"col-lg-12\";\r\n }else if(fieldsLangth <= 10){\r\n return \"col-lg-6\";\r\n }else{\r\n return \"col-lg-3\";\r\n }\r\n }\r\n }\r\n getFixedDivClass(field:any,fieldsLangth:any){\r\n const fields = {...field}\r\n if (!fields.type) {\r\n fields.type = \"text\";\r\n }\r\n if(fields.field_class && field.field_class != ''){\r\n return fields.field_class;\r\n }\r\n }\r\n getButtonDivClass(field:any){\r\n const fields = {...field}\r\n if(fields.field_class && field.field_class != ''){\r\n return fields.field_class;\r\n }\r\n return;\r\n\r\n }\r\n getConvertedString(ja:any, incomingTemplate:any){\r\n let template = \"\" + incomingTemplate;\r\n let reg = new RegExp(\"(\\\\[)(.*?)(\\\\])\");\r\n\r\n let matcher:any = template.match(reg);\r\n let group = reg.exec(template);\r\n console.log(matcher.groups);\r\n\r\n let listMatches = [];\r\n // while(matcher.find){\r\n listMatches.push(matcher[2]);\r\n // }\r\n\r\n listMatches.forEach(element => {\r\n let valueObj = null;\r\n let details = matcher[2];\r\n let valueString = this.getStringValue(details, ja);\r\n template = template.replace(\"[\" + matcher[2] + \"]\", valueString);\r\n });\r\n\r\n return template;\r\n }\r\n getStringValue(details:any,ja:any){\r\n //ja -> object\r\n //deatils -> pattern\r\n let valueConfig = details.split(\",\");\r\n return this.getObjectValue(valueConfig[0], ja)\r\n }\r\n\r\n\r\n sanitizeObject(tableFields:any, formValue:any, validatField:any,formValueWithCust?:any) {\r\n for (let index = 0; index < tableFields.length; index++) {\r\n const element = tableFields[index];\r\n if(element && element.field_name){\r\n if(element.type != 'list_of_fields' && element.type != 'group_of_fields'){\r\n if(element && element.datatype){\r\n switch (element.datatype.toLowerCase()) {\r\n case \"list_of_object\":\r\n case \"list_of_object_with_popup\":\r\n case \"chips\":\r\n case \"chips_with_mask\":\r\n if(validatField){\r\n if(formValue[element.field_name] != \"\" && formValue[element.field_name] != null && !this.isArray(formValue[element.field_name])){\r\n return {'msg':'Entered value for '+element.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(element) && !this.isArray(formValueWithCust[element.field_name]) && formValueWithCust[element.field_name].length <= 0){\r\n return {'msg':'Please Enter '+ element.label + '. !!!'}\r\n }\r\n }else if (formValue[element.field_name] == \"\" || !this.isArray(formValue[element.field_name])) {\r\n formValue[element.field_name] = null;\r\n }\r\n break;\r\n case \"object\":\r\n if(validatField){\r\n if(formValue[element.field_name] != \"\" && formValue[element.field_name] != null && typeof formValue[element.field_name] != 'object'){\r\n return {'msg':'Entered value for '+element.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(element) && typeof formValue[element.field_name] != 'object'){\r\n return {'msg':'Please Enter '+ element.label + '. !!!'}\r\n }\r\n }else if (formValue[element.field_name] == \"\" || (typeof formValue[element.field_name] != 'object' && element.type != 'date')) {\r\n formValue[element.field_name] = null;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n if(element && element.type){\r\n switch (element.type.toLowerCase()) {\r\n case \"list_of_string\":\r\n if(validatField){\r\n if(formValue[element.field_name] != \"\" && formValue[element.field_name] != null){\r\n return {'msg':'Entered value for '+element.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(element) && !this.isArray(formValueWithCust[element.field_name]) && formValueWithCust[element.field_name].length > 0){\r\n return {'msg':'Please Enter '+ element.label + '. !!!'}\r\n }\r\n }else if (formValue[element.field_name] == \"\" || !this.isArray(formValue[element.field_name])) {\r\n formValue[element.field_name] = null;\r\n }\r\n break;\r\n case \"number\":\r\n if(validatField){\r\n if(this.applicableForValidation(element) && formValue[element.field_name]<0){\r\n return {'msg':' ' +element.label + ' should be greater than or equal 0. !!!'}\r\n }\r\n }else if (!Number(formValue[element.field_name])) {\r\n formValue[element.field_name] = 0;\r\n }\r\n break\r\n case \"text\":\r\n case \"textarea\":\r\n case \"mobile\":\r\n case \"email\":\r\n if(!validatField){\r\n if (formValue[element.field_name] == \"\" || formValue[element.field_name] == undefined) {\r\n formValue[element.field_name] = null;\r\n }else if(typeof formValue[element.field_name] == \"string\"){\r\n let value = this.coreFunctionService.removeSpaceFromString(formValue[element.field_name]);\r\n if (value == \"\") {\r\n formValue[element.field_name] = null;\r\n }else{\r\n formValue[element.field_name] = value;\r\n }\r\n }\r\n }\r\n break;\r\n case \"list_of_fields\":\r\n if(validatField){\r\n if(this.applicableForValidation(element)){\r\n if(element.datatype != 'key_value'){\r\n if(formValueWithCust[element.field_name] == null || !this.isArray(formValueWithCust[element.field_name]) || formValueWithCust[element.field_name].length <= 0){\r\n return {'msg': element.label + ' is required.'}\r\n }\r\n }else if(element.datatype == 'key_value'){\r\n if(typeof formValueWithCust[element.field_name] != 'object' || Object.keys(formValueWithCust[element.field_name]).length <= 0){\r\n return {'msg': element.label + ' is required.'}\r\n }\r\n }\r\n }\r\n }else{\r\n if (!this.isArray(formValue[element.field_name]) || formValue[element.field_name].length <= 0) {\r\n if (formValue[element.field_name] != null) {\r\n if (element.datatype == 'key_value' && typeof formValue[element.field_name] == 'object') {\r\n const object = formValue[element.field_name]\r\n const len = Object.keys(object).length;\r\n if (len == 0) {\r\n formValue[element.field_name] = null;\r\n } else if (object.key != undefined) {\r\n if (object.key == '') {\r\n formValue[element.field_name] = null;\r\n }\r\n }\r\n }\r\n if (element.datatype != 'key_value') {\r\n formValue[element.field_name] = null;\r\n }\r\n }\r\n } else {\r\n if(element.list_of_fields && element.list_of_fields){\r\n for (let j = 0; j < element.list_of_fields.length; j++) {\r\n const data = element.list_of_fields[j];\r\n if(data && data.datatype){\r\n switch (data.datatype.toLowerCase()) {\r\n case \"list_of_object\":\r\n case \"chips\":\r\n case \"chips_with_mask\":\r\n if (formValue[element.field_name] && formValue[element.field_name].length > 0) {\r\n formValue[element.field_name].forEach((fiedlList: any) => {\r\n if (fiedlList[data.field_name] == \"\" || !this.isArray(fiedlList[data.field_name])) {\r\n fiedlList[data.field_name] = null;\r\n }\r\n });\r\n }\r\n break;\r\n case \"object\":\r\n if (formValue[element.field_name] && formValue[element.field_name].length > 0) {\r\n formValue[element.field_name].forEach((fiedlList: any) => {\r\n if (fiedlList[data.field_name] == \"\" || typeof fiedlList[data.field_name] != 'object') {\r\n fiedlList[data.field_name] = null;\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if(data && data.type){\r\n switch (data.type.toLowerCase()) {\r\n case \"list_of_string\":\r\n if (formValue[element.field_name] && formValue[element.field_name].length > 0) {\r\n formValue[element.field_name].forEach((fiedlList: any) => {\r\n if (fiedlList[data.field_name] == \"\" || !this.isArray(fiedlList[data.field_name])) {\r\n fiedlList[data.field_name] = null;\r\n }\r\n });\r\n }\r\n break;\r\n case \"text\":\r\n case \"textarea\":\r\n case \"mobile\":\r\n case \"email\":\r\n if (formValue[element.field_name] && formValue[element.field_name].length > 0) {\r\n formValue[element.field_name].forEach((fiedlList: any) => {\r\n let value = fiedlList[data.field_name];\r\n if (value == \"\") {\r\n fiedlList[data.field_name] = null;\r\n }else{\r\n value = this.coreFunctionService.removeSpaceFromString(fiedlList[data.field_name]);\r\n fiedlList[data.field_name] = value;\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n if (formValue[element.field_name] && formValue[element.field_name].length > 0) {\r\n formValue[element.field_name].forEach((fiedlList: any) => {\r\n if (fiedlList[data.field_name] == \"\" || fiedlList[data.field_name] == undefined) {\r\n fiedlList[data.field_name] = null;\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case \"group_of_fields\":\r\n for (let j = 0; j < element.list_of_fields.length; j++) {\r\n const data = element.list_of_fields[j];\r\n if(data && data.datatype){\r\n switch (data.datatype.toLowerCase()) {\r\n case \"list_of_object\":\r\n case \"chips\":\r\n case \"chips_with_mask\":\r\n if(validatField){\r\n if(formValue[element.field_name][data.field_name] != \"\" && formValue[element.field_name][data.field_name] != null){\r\n return {'msg':'Entered value for '+data.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(data) && !this.isArray(formValueWithCust[data.field_name]) && formValueWithCust[data.field_name].length > 0){\r\n return {'msg':'Please Enter '+ data.label + '. !!!'}\r\n }\r\n }else if (formValue[element.field_name][data.field_name] == \"\" || !this.isArray(formValue[element.field_name][data.field_name])) {\r\n formValue[element.field_name][data.field_name] = null;\r\n }\r\n break;\r\n case \"object\":\r\n if(validatField){\r\n if(formValue[element.field_name][data.field_name] != \"\" && formValue[element.field_name][data.field_name] != null){\r\n return {'msg':'Entered value for '+data.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(data) && typeof formValue[element.field_name][data.field_name] != 'object'){\r\n return {'msg':'Please Enter '+ data.label + '. !!!'}\r\n }\r\n }else if (formValue[element.field_name][data.field_name] == \"\" || typeof formValue[element.field_name][data.field_name] != 'object') {\r\n formValue[element.field_name][data.field_name] = null;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if(data && data.type){\r\n switch (data.type.toLowerCase()) {\r\n case \"list_of_string\":\r\n if(validatField){\r\n if(formValue[element.field_name][data.field_name] != \"\" && formValue[element.field_name][data.field_name] != null){\r\n return {'msg':'Entered value for '+data.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(data) && !this.isArray(formValueWithCust[data.field_name]) && formValueWithCust[data.field_name].length > 0){\r\n return {'msg':'Please Enter '+ data.label + '. !!!'}\r\n }\r\n }else if (formValue[element.field_name][data.field_name] == \"\" || !this.isArray(formValue[element.field_name][data.field_name])) {\r\n formValue[element.field_name][data.field_name] = null;\r\n }\r\n break;\r\n case \"file\":\r\n if(!validatField){\r\n if (formValue[element.field_name][data.field_name] == \"\" || formValue[element.field_name][data.field_name] == undefined) {\r\n formValue[element.field_name][data.field_name] = null;\r\n }\r\n }\r\n break;\r\n case \"number\":\r\n if (!Number(formValue[element.field_name][data.field_name])) {\r\n formValue[element.field_name][data.field_name] = 0;\r\n }\r\n break;\r\n case \"text\":\r\n case \"textarea\":\r\n case \"mobile\":\r\n case \"email\":\r\n if(!validatField){\r\n if (formValue[element.field_name][data.field_name] == \"\" || formValue[element.field_name][data.field_name] == undefined) {\r\n formValue[element.field_name][data.field_name] = null;\r\n }else if(typeof formValue[element.field_name][data.field_name] == \"string\"){\r\n let value = formValue[element.field_name][data.field_name];\r\n if (value == \"\") {\r\n formValue[element.field_name][data.field_name] = null;\r\n }else{\r\n value = this.coreFunctionService.removeSpaceFromString(formValue[element.field_name][data.field_name]);\r\n formValue[element.field_name][data.field_name] = value;\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n if (formValue[element.field_name][data.field_name] == \"\" || formValue[element.field_name][data.field_name] == undefined) {\r\n formValue[element.field_name][data.field_name] = null;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n case \"stepper\":\r\n for (let j = 0; j < element.list_of_fields.length; j++) {\r\n const step = element.list_of_fields[j];\r\n if(step.list_of_fields && step.list_of_fields != null && step.list_of_fields.length > 0){\r\n for (let k = 0; k < step.list_of_fields.length; k++) {\r\n const data = step.list_of_fields[k];\r\n switch (data.datatype) {\r\n case \"list_of_object\":\r\n case \"chips\":\r\n case \"chips_with_mask\":\r\n if(validatField){\r\n if(formValue[data.field_name] != \"\" && formValue[data.field_name] != null){\r\n return {'msg':'Entered value for '+data.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(data) && !this.isArray(formValueWithCust[data.field_name]) && formValueWithCust[data.field_name].length > 0){\r\n return {'msg':'Please Enter '+ data.label + '. !!!'}\r\n }\r\n }else if (formValue[data.field_name] == \"\" && !this.isArray(formValue[data.field_name])) {\r\n formValue[data.field_name] = null;\r\n }\r\n break;\r\n case \"object\":\r\n if(validatField){\r\n if(formValue[data.field_name] != \"\" && formValue[data.field_name] != null){\r\n return {'msg':'Entered value for '+data.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(data) && typeof formValue[data.field_name] != 'object'){\r\n return {'msg':'Please Enter '+ data.label + '. !!!'}\r\n }\r\n }else if (formValue[data.field_name] == \"\" && typeof formValue[data.field_name] != 'object') {\r\n formValue[data.field_name] = null;\r\n }\r\n break;\r\n case \"number\":\r\n if (!Number(formValue[data.field_name])) {\r\n formValue[data.field_name] = 0;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (data.type) {\r\n case \"list_of_string\":\r\n if(validatField){\r\n if(formValue[data.field_name] != \"\" && formValue[data.field_name] != null){\r\n return {'msg':'Entered value for '+data.label+' is not valid. !!!'}\r\n }else if(this.applicableForValidation(data) && !this.isArray(formValueWithCust[data.field_name]) && formValueWithCust[data.field_name].length > 0){\r\n return {'msg':'Please Enter '+ data.label + '. !!!'}\r\n }\r\n }else if (formValue[data.field_name] == \"\" && !this.isArray(formValue[data.field_name])) {\r\n formValue[data.field_name] = null;\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case \"list_of_checkbox\":\r\n if(validatField && element.is_mandatory){\r\n if(formValueWithCust[element.field_name] && this.isArray(formValueWithCust[element.field_name]) && formValueWithCust[element.field_name].length == 0) {\r\n return {'msg': element.label + ' is mandatory. !!!'}\r\n }\r\n }\r\n break;\r\n default:\r\n if(validatField){\r\n\r\n }else if (formValue[element.field_name] == \"\" || formValue[element.field_name] == undefined) {\r\n formValue[element.field_name] = null;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if(validatField){\r\n return true;\r\n }else{\r\n return this.coreFunctionService.checkBlankProperties(formValue);\r\n }\r\n }\r\n\r\n\r\n applicableForValidation(field:any){\r\n if(field.is_mandatory){\r\n if(field.show_if != '' && field.show_if != null){\r\n if(field['display'] || field['show']){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return true;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n\r\n getDateInStringFunction(templateValue:any){\r\n let result:any = {}\r\n let monthNumber:any;\r\n let monthName:any;\r\n let year: any;\r\n const fromDate = templateValue['fromDate'];\r\n if(fromDate && fromDate != \"\") {\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n monthNumber = new Date(fromDate).getMonth();\r\n monthName = months[monthNumber];\r\n year = new Date(fromDate).getFullYear();\r\n let label = monthName+'-'+year;\r\n result['labelName'] = label;\r\n }\r\n return result;\r\n }\r\n\r\n\r\n populatefields(value:any, populate_fields:any,field:any,multipleFormCollection?:any) {\r\n let obj:any = {}\r\n let check = false;\r\n if(field && field.field_name){\r\n let fieldName = \"\";\r\n if(field.parent && field.parent != ''){\r\n fieldName = field.parent+'.'+field.field_name;\r\n }else{\r\n fieldName = field.field_name;\r\n }\r\n if(field.type == \"checkbox\" && this.getObjectValue(fieldName,value)){\r\n check = true;\r\n }\r\n }\r\n if(populate_fields && populate_fields.length > 0){\r\n populate_fields.forEach((el:any) =>{\r\n value = this.getFormDataInMultiformCollection(multipleFormCollection, value);\r\n let toList = el.to.split(\".\");\r\n if(toList && toList.length > 1){\r\n const parent = toList[0];\r\n if (!obj[parent]) obj[parent] = {};\r\n const child = toList[1];\r\n if(check){\r\n obj[parent][child] =this.mergeMultiFieldsValues(el.from, value);\r\n }else{\r\n obj[parent][child] = \"\";\r\n }\r\n }else{\r\n const field = toList[0];\r\n if(check){\r\n obj[field] =this.mergeMultiFieldsValues(el.from, value);\r\n }else{\r\n obj[field] = \"\";\r\n }\r\n }\r\n });\r\n }\r\n return obj;\r\n }\r\n\r\n mergeMultiFieldsValues(field:any, object:any){\r\n let result = \"\";\r\n if(field && field != null && field != '' && field != \" \"){\r\n let list = field.split(\"+\")\r\n for (let index = 0; index < list.length; index++) {\r\n if(result != \"\"){\r\n let lastIndex = list.length - 1;\r\n result = result + list[lastIndex] + this.getObjectValue(list[index], object);\r\n }else{\r\n result = this.getObjectValue(list[index], object);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n populate_fields_for_report(templateForm: UntypedFormGroup) {\r\n // templateForm.controls['reporting_fax'].setValue(templateForm.value['fax']);\r\n templateForm.controls['reporting_mobile'].setValue(templateForm.value['mobile']);\r\n templateForm.controls['reporting_tel'].setValue(templateForm.value['phone']);\r\n\r\n templateForm.controls['reporting_city'].setValue(templateForm.value['city']);\r\n templateForm.controls['reporting_state'].setValue(templateForm.value['state']);\r\n templateForm.controls['reporting_country'].setValue(templateForm.value['country']);\r\n\r\n // templateForm.controls['reporting_address_line2'].setValue(templateForm.value['address_line2']);\r\n templateForm.controls['reporting_gst'].setValue(templateForm.value['gst_no']);\r\n templateForm.controls['reporting_contact_person_email'].setValue(templateForm.value['email']);\r\n templateForm.controls['reporting_address'].setValue(templateForm.value['address_line1']);\r\n templateForm.controls['reporting_pincode'].setValue(templateForm.value['pincode']);\r\n templateForm.controls['reporting_contact_person'].setValue(templateForm.value['first_name']+\" \"+templateForm.value['last_name']);\r\n templateForm.controls['reporting_company'].setValue(templateForm.value.account.name);\r\n\r\n }\r\n\r\n\r\n // getNetAmountWithPercent(total:number, percent:number) {\r\n // let percentAmount = 0;\r\n // let netAmount = 0;\r\n // percentAmount = total * percent / 100;\r\n // netAmount = total - percentAmount;\r\n // return { p_amount: percentAmount, net_amount: netAmount }\r\n // }\r\n\r\n // claimAmountCalculation(field1:any, field2:any, field3:any) {\r\n // let total = 0;\r\n // if (field1 && field1 != \"\") {\r\n // total = total + field1\r\n // }\r\n // if (field2 && field2 != \"\") {\r\n // total = total + field2;\r\n // }\r\n // if (field3 && field3 != \"\") {\r\n // total = total + field3;\r\n // }\r\n // return total;\r\n // }\r\n\r\n // array_move(arr:any, old_index:number, new_index:number) {\r\n // if (new_index >= arr.length) {\r\n // var k = new_index - arr.length + 1;\r\n // while (k--) {\r\n // arr.push(undefined);\r\n // }\r\n // }\r\n // arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\r\n // return arr; // for testing\r\n // };\r\n\r\n openFileUpload(fieldName:any, modalName:any, formValue:any, fileData:any) {\r\n const alertData = {\r\n \"field\" :fieldName,\r\n \"event\": true,\r\n \"fieldName\": fieldName.field_name,\r\n \"ddnFieldName\": fieldName.ddn_field,\r\n \"files\" : fileData,\r\n \"tableFields\":null,\r\n \"defaultBucket\":null ,\r\n \"defaultS3Key\": null\r\n }\r\n if (fieldName.tableFields) {\r\n alertData['tableFields'] = fieldName.tableFields;\r\n }\r\n if (fieldName.defaultBucket) {\r\n alertData['defaultBucket'] = fieldName.defaultBucket;\r\n }\r\n if (fieldName.defaultS3Key) {\r\n alertData['defaultS3Key'] = fieldName.defaultS3Key;\r\n }\r\n this.modalService.open(modalName, alertData);\r\n }\r\n openAlertModal(id:string, type:any, headerMessage:any, bodyMessage:any) {\r\n const alertData = {\r\n \"type\": type,\r\n \"bodyMessage\": bodyMessage,\r\n \"headerMessage\": headerMessage\r\n }\r\n this.modalService.open(id, alertData);\r\n }\r\n\r\n getForm(forms:any, formName:any,gridButtons:any) {\r\n if (forms[formName] && forms[formName] != undefined && forms[formName] != null && forms[formName] != '') {\r\n return JSON.parse(JSON.stringify(forms[formName]));\r\n } else {\r\n if (forms['default'] && forms['default'] != undefined && forms['default'] != null) {\r\n if(formName == 'UPDATE'){\r\n if(gridButtons && gridButtons.length > 0){\r\n let check = false;\r\n gridButtons.forEach((button:any) => {\r\n if(button && button.onclick && button.onclick.action_name && button.onclick.action_name.toUpperCase() == 'UPDATE'){\r\n check = true;\r\n }\r\n });\r\n if(check){\r\n return JSON.parse(JSON.stringify(forms['default']));\r\n }else{\r\n return {};\r\n }\r\n }else {\r\n return {};\r\n }\r\n }else{\r\n return JSON.parse(JSON.stringify(forms['default']));\r\n }\r\n } else {\r\n return {}\r\n }\r\n }\r\n }\r\n // getTitlecase(value) {\r\n // return this.titlecasePipe.transform(value);\r\n // }\r\n\r\n\r\n\r\n gotoHomePage() {\r\n const payload = {\r\n appName: this.envService.getAppName(),\r\n data: {\r\n accessToken: this.storageService.GetAccessToken()\r\n }\r\n }\r\n return payload;\r\n }\r\n download_file(payload:object){\r\n this.apiService.GetFileData(payload);\r\n }\r\n getQRCode(data:object){\r\n this.apiService.GetQr(data);\r\n }\r\n getAuditHistory(data:object){\r\n this.apiService.getAuditHistory(data);\r\n }\r\n downloadFile(file:string) {\r\n const payload = {\r\n path: 'download',\r\n data: file\r\n }\r\n this.apiService.DownloadFile(payload);\r\n }\r\n numberOnly(event:any): boolean {\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n viewModal(id:any, object:any, field:any, currentMenu:any, editemode:any) {\r\n const alertData = {\r\n \"field\": field,\r\n \"data\": object,\r\n \"menu_name\": currentMenu.name,\r\n 'editemode': editemode\r\n }\r\n this.modalService.open(id, alertData);\r\n }\r\n custmizedKey(parentfield:any){\r\n let custmizedKey = parentfield.field_name;\r\n switch (parentfield.type) {\r\n case \"list_of_fields\":\r\n case \"group_of_fields\":\r\n custmizedKey = parentfield.field_name+'_'+parentfield.type\r\n break;\r\n default:\r\n custmizedKey = parentfield.field_name;\r\n break;\r\n }\r\n return custmizedKey;\r\n }\r\n checkStorageValue(object:any,parent:any,chield:any){\r\n let check = false;\r\n if(parent != '' && parent != undefined && parent != null){\r\n const parentKey = this.custmizedKey(parent);\r\n if(object[parentKey] && object[parentKey][chield.field_name] && object[parentKey][chield.field_name].length > 0){\r\n check = true;\r\n }\r\n }else{\r\n if(object[chield.field_name]){\r\n check = true;\r\n }\r\n }\r\n return check;\r\n }\r\n getVariableStorageValue(object:any,parent:any,chield:any): Array<any>{\r\n let data:any = [];\r\n if(parent != '' && parent != undefined && parent != null){\r\n const parentKey = this.custmizedKey(parent);\r\n if(this.checkStorageValue(object,parent,chield)){\r\n data = object[parentKey][chield.field_name]\r\n }\r\n }else {\r\n if(this.checkStorageValue(object,'',chield)){\r\n data = object[chield.field_name]\r\n }\r\n }\r\n return data;\r\n }\r\n formSize(evt:any,fieldLangth:number){\r\n if(evt && evt.class && evt.class!= ''){\r\n return evt.class;\r\n }else if(fieldLangth <= 5){\r\n return '';\r\n }else if(fieldLangth <= 10){\r\n return 'modal-lg';\r\n }\r\n else{\r\n return 'modal-dialog-full-width';\r\n }\r\n }\r\n\r\n // price_after_disc_health_test(templateForm:any){\r\n // let templateValue = templateForm.getRawValue();\r\n // let discount = 0;\r\n // discount = templateValue.discount;\r\n // }\r\n\r\n // setPageNumverAndSize(payload:any,page:number,){\r\n // payload['pageNo'] = page - 1;\r\n // payload['pageSize'] = this.itemNumOfGrid;\r\n // return payload;\r\n // }\r\n getMatchingInList(list:any,IncomingData:any,existData:any){\r\n var validity = true;\r\n list.forEach((matchcriteria: any) => {\r\n if (this.getObjectValue(matchcriteria, IncomingData) == this.getObjectValue(matchcriteria, existData)) {\r\n validity = validity && true;\r\n }\r\n else {\r\n validity = validity && false;\r\n }\r\n });\r\n return validity;\r\n }\r\n getCorrectIndex(data:any, indx:number,field:any,gridData:any,filterValue:any){\r\n let index;\r\n if (field.matching_fields_for_grid_selection && field.matching_fields_for_grid_selection.length > 0) {\r\n gridData.forEach((row:any, i:number) => {\r\n var validity = true;\r\n field.matching_fields_for_grid_selection.forEach((matchcriteria:any) => {\r\n if (this.getObjectValue(matchcriteria, data) == this.getObjectValue(matchcriteria, row)) {\r\n validity = validity && true;\r\n }\r\n else {\r\n validity = validity && false;\r\n }\r\n });\r\n if (validity == true) {\r\n index = i;\r\n }\r\n });\r\n }else if (data._id != undefined) {\r\n index = this.getIndexInArrayById(gridData, data._id);\r\n } else {\r\n index = indx;\r\n }\r\n if(index && index != indx && filterValue == ''){\r\n index = indx;\r\n }\r\n return index;\r\n }\r\n getIndexInArrayById(array:any,id:any,key?:any){\r\n let index = -1;\r\n if(array && array.length > 0){\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if(key != undefined && key != null){\r\n if(this.isArray(key) && key.length > 0 && Object.keys(id).length > 0){\r\n if (this.getMatchingInList(key,id,element)) {\r\n index = i;\r\n }\r\n }else{\r\n const idValue = this.getObjectValue(key,element);\r\n if(id && id == idValue){\r\n index = i;\r\n break;\r\n }\r\n }\r\n }else if(element._id && element._id == id){\r\n index = i;\r\n break;\r\n }\r\n };\r\n }\r\n return index;\r\n }\r\n openModal(id:any, data:any){\r\n this.modalService.open(id, data);\r\n }\r\n getOperatorSymbol(operator:any){\r\n switch (operator) {\r\n case 'eq':\r\n return '=';\r\n default:\r\n return '=';\r\n }\r\n }\r\n\r\n // getRouthQueryToRedirectUrl(){\r\n // const redirectUrl:any = this.storageService.getRedirectUrl();\r\n // let searchKey = '';\r\n // if(redirectUrl.indexOf('?') != -1 ){\r\n // searchKey = '?';\r\n // }\r\n // if(redirectUrl.indexOf('%') != -1){\r\n // searchKey = '%';\r\n // }\r\n\r\n // let newUrlWithQuery = '';\r\n // if(searchKey != ''){\r\n // const index = redirectUrl.indexOf(searchKey);\r\n // const stringLength = redirectUrl.length;\r\n // const queryPrams = redirectUrl.substring(index,stringLength);\r\n // const newParam = queryPrams.replace('%3F','');\r\n // newUrlWithQuery = newParam.replace('%3D',':');\r\n // }\r\n // return {newUrlWithQuery};\r\n // }\r\n\r\n getFormDataInMultiformCollection(multiformCollection:any,formValue:any,index?:any){\r\n let data:any = {};\r\n if(index>=0 && multiformCollection && multiformCollection.length >= 1 && multiformCollection[index] && multiformCollection[index]['data']){\r\n data = multiformCollection[index]['data'];\r\n }else{\r\n let dummyData:any = {};\r\n if(multiformCollection && multiformCollection.length > 0){\r\n multiformCollection.forEach((element:any,index:any) => {\r\n let currentData:any ={};\r\n if(element.data){\r\n currentData = element.data;\r\n }\r\n if(index == 0){\r\n dummyData = currentData;\r\n }else{\r\n Object.keys(currentData).forEach(key => {\r\n dummyData[key] = currentData[key];\r\n });\r\n }\r\n\r\n });\r\n }\r\n if(Object.keys(formValue).length > 0){\r\n Object.keys(formValue).forEach(key => {\r\n dummyData[key] = formValue[key];\r\n });\r\n }\r\n data = dummyData;\r\n }\r\n return data;\r\n }\r\n\r\n convertListOfStringToListObject(list_of_populated_fields:any,keysList:any,seprator:any){\r\n let listOfObjects:any = [];\r\n list_of_populated_fields.forEach((element: string) => {\r\n let object:any = {}\r\n let source_targetList:any = element.split(seprator);\r\n keysList.forEach((key: string,i: string) => {\r\n object[key] = source_targetList[i];\r\n });\r\n\r\n listOfObjects.push(object);\r\n });\r\n return listOfObjects;\r\n }\r\n\r\n // Commenting unused Function\r\n // updateUserPreference(data:object,fieldName:string,parent?:string){\r\n // let payloadData = this.getUserPreferenceObj(data,fieldName,parent);\r\n // let payload = {\r\n // \"curTemp\" : \"user_preference\",\r\n // \"data\" : payloadData\r\n // }\r\n // this.apiService.SaveFormData(payload);\r\n // }\r\n\r\n // getUserPreferenceByFieldName(fieldName:string){\r\n // let data = [];\r\n // let userPreference = this.storageService.getUserPreference();\r\n // if(userPreference && userPreference[fieldName]){\r\n // data = userPreference[fieldName];\r\n // }\r\n // return data;\r\n // }\r\n\r\n // getUserPreferenceObj(data:any,fieldName:string,parent?:string){\r\n // let refObj:any = this.getReferenceObject(data);\r\n // if(parent != ''){\r\n // refObj = parent;\r\n // }\r\n // if(fieldName == \"favoriteMenus\"){\r\n // refObj = data;\r\n // }\r\n // let uRef:any = {};\r\n // let userPreference = this.storageService.getUserPreference();\r\n // if(userPreference && userPreference._id && userPreference._id != null && userPreference._id != ''){\r\n // let fieldData = userPreference[fieldName];\r\n // if(fieldData && fieldData.length > 0){\r\n // let matchIndex = -1;\r\n // for (let index = 0; index < fieldData.length; index++) {\r\n // const element = fieldData[index];\r\n // if(element._id == refObj._id){\r\n // matchIndex = index;\r\n // break;\r\n // }\r\n // }\r\n // if(matchIndex > -1){\r\n // if(parent != ''){\r\n // let submenu = fieldData[matchIndex].submenu;\r\n // let submenuMatchIndex = -1;\r\n // if(submenu && submenu.length > 0){\r\n // for (let j = 0; j < submenu.length; j++) {\r\n // const subMenu = submenu[j];\r\n // if(subMenu._id == data._id){\r\n // submenuMatchIndex = j;\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // if(submenuMatchIndex > -1){\r\n // submenu.splice(submenuMatchIndex);\r\n // if(fieldData[matchIndex].submenu.length == 0){\r\n // fieldData.splice(matchIndex);\r\n // }else{\r\n // fieldData[matchIndex].submenu = submenu;\r\n // }\r\n // }else{\r\n // if(submenu.length > 0){\r\n // fieldData[matchIndex].submenu.push(data);\r\n // }else{\r\n // fieldData[matchIndex].submenu = []\r\n // fieldData[matchIndex].submenu.push(data);\r\n // }\r\n // }\r\n // }else{\r\n // fieldData.splice(matchIndex, 1);\r\n // }\r\n // }else{\r\n // if(parent != ''){\r\n // refObj['submenu'] = [];\r\n // refObj['submenu'].push(data);\r\n // fieldData.push(refObj);\r\n // }else{\r\n // fieldData.push(refObj);\r\n // }\r\n // }\r\n // }else{\r\n // fieldData = [];\r\n // fieldData.push(refObj);\r\n // }\r\n // userPreference[fieldName] = fieldData;\r\n // uRef = userPreference;\r\n // }else{\r\n // let user = this.storageService.GetUserInfo();\r\n // let userRef = this.getReferenceObject(user);\r\n // let dataList = [];\r\n // dataList.push(refObj);\r\n // uRef['userId'] = userRef;\r\n // uRef[fieldName] = dataList;\r\n // }\r\n // return uRef\r\n // }\r\n getReferenceObject(obj:any){\r\n let ref:any = {}\r\n ref[\"_id\"]=obj._id;\r\n ref[\"code\"] = obj.code;\r\n ref[\"name\"] = obj.name;\r\n if(obj.version != null){\r\n ref[\"version\"] = obj.version\r\n }\r\n return ref;\r\n }\r\n dateDiff(dateSent:any){\r\n let obj:any={};\r\n let currentDate = new Date();\r\n dateSent = new Date(dateSent);\r\n // let diff = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()) - Date.UTC(dateSent.getFullYear(), dateSent.getMonth(), dateSent.getDate());\r\n let diff = currentDate.getTime() - dateSent.getTime();\r\n let days = Math.floor(diff / (60 * 60 * 24 * 1000));\r\n let hours = Math.floor(diff / (60 * 60 * 1000)) - (days * 24);\r\n let minutes = Math.floor(diff / (60 * 1000)) - ((days * 24 * 60) + (hours * 60));\r\n let seconds = Math.floor(diff / 1000) - ((days * 24 * 60 * 60) + (hours * 60 * 60) + (minutes * 60));\r\n obj['days'] = days;\r\n obj['hours'] = hours;\r\n obj['minutes'] = minutes;\r\n obj['seconds'] = seconds;\r\n\r\n return obj;\r\n }\r\n getDay(data:any):String{\r\n let createdDate = data.createdDate;\r\n if(createdDate){\r\n let obj = this.dateDiff(createdDate);\r\n if(obj && obj['days'] == 0){\r\n if(obj['hours'] == 0){\r\n return obj['minutes']+\" Minutes ago\";\r\n }else{\r\n return obj['hours'] +\" hours \"+obj['minutes']+\" Minutes ago\";\r\n }\r\n }else{\r\n return obj['days'] +\" days ago\";\r\n }\r\n }\r\n return \"\";\r\n }\r\n updateFieldInList(fieldName:any,list:any){\r\n let modifyList:any = [];\r\n if(list && list.length > 0){\r\n list.forEach((element: any) => {\r\n let value = JSON.parse(JSON.stringify(element));\r\n value[fieldName] = true;\r\n modifyList.push(value);\r\n });\r\n }\r\n return modifyList;\r\n }\r\n // manufactured_as_customer(templateForm: FormGroup) {\r\n // (<FormGroup>templateForm.controls[\"sample_details\"]).controls[\"mfg_by\"].patchValue(templateForm.value.account.name);\r\n // }\r\n\r\n // supplied_as_customer(templateForm: FormGroup) {\r\n // (<FormGroup>templateForm.controls[\"sample_details\"]).controls[\"supplied_by\"].patchValue(templateForm.value.account.name);\r\n // }\r\n\r\n funModeTravelChange(value:any){\r\n\r\n let obj1 = {\r\n distanceInKm:'',\r\n localTa:''\r\n }\r\n let obj = {\r\n claimSheet:obj1\r\n }\r\n return obj;\r\n }\r\n print(data:any): void {\r\n let popupWin;\r\n popupWin = window.open('', '_blank', 'top=0,left=0,height=100%,width=auto');\r\n popupWin!.document.write('<div class=\"noprint\" style=\"text-align:right;\"><a onClick=\"window.print()\" style=\"text-align: right;display: inline-block;cursor: pointer;border: 2px solid #4285f4!important;background-color: transparent!important;color: #4285f4!important;box-shadow: 0 2px 5px 0 rgba(0,0,0,.16), 0 2px 10px 0 rgba(0,0,0,.12);padding: 7px 25px;font-size: .81rem;transition: .2s ease-in-out;margin: .375rem;text-transform: uppercase;\">Print</a></div><style>@media print{.noprint{display:none;}}</style>'+data);\r\n popupWin!.document.close();\r\n popupWin!.print()\r\n }\r\n isArray(obj : any ) {\r\n return Array.isArray(obj)\r\n }\r\n\r\n donotResetField(tableFields:any,FormValue:any){\r\n let donotResetFieldLists:any={};\r\n tableFields.forEach((tablefield:any) => {\r\n if(tablefield.do_not_refresh_on_add && tablefield.type != \"list_of_fields\" && tablefield.type != \"group_of_fields\" && tablefield.type != \"stepper\"){\r\n donotResetFieldLists[tablefield.field_name] = FormValue[tablefield.field_name];\r\n }else if(tablefield.type == \"group_of_fields\"){\r\n if(tablefield.list_of_fields && tablefield.list_of_fields.length > 0){\r\n tablefield.list_of_fields.forEach((field:any) => {\r\n if(field.do_not_refresh_on_add){\r\n donotResetFieldLists[tablefield.field_name][field.field_name] = FormValue[tablefield.field_name][field.field_name];\r\n }\r\n });\r\n }\r\n }else if(tablefield.type == \"stepper\"){\r\n if(tablefield.list_of_fields && tablefield.list_of_fields.length > 0){\r\n tablefield.list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields && step.list_of_fields.length > 0){\r\n step.list_of_fields.forEach((field:any) => {\r\n if(field.do_not_refresh_on_add){\r\n donotResetFieldLists[step.field_name][field.field_name] = FormValue[step.field_name][field.field_name];\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n return donotResetFieldLists;\r\n }\r\n\r\n // modifyFileSetValue(files:any){\r\n // let fileName = '';\r\n // let fileLength = files.length;\r\n // let file = files[0];\r\n // if(fileLength == 1 && (file.fileName || file.rollName)){\r\n // fileName = file.fileName || file.rollName;\r\n // }else if(fileLength > 1){\r\n // fileName = fileLength + \" Files\";\r\n // }\r\n // return fileName;\r\n // }\r\n // modifyUploadFiles(files:any){\r\n // const fileList:any = [];\r\n // if(files && files.length > 0){\r\n // files.forEach((element:any) => {\r\n // if(element._id){\r\n // fileList.push(element)\r\n // }else{\r\n // if(!element.uploadData){\r\n // fileList.push({uploadData:[element]});\r\n // }else{\r\n // fileList.push(element);\r\n // }\r\n // }\r\n // });\r\n // }\r\n // return fileList;\r\n // }\r\n getFirstCharOfString(char:any){\r\n if(this.coreFunctionService.isNotBlank(char)){\r\n return char.charAt(0)\r\n }else{\r\n return '';\r\n }\r\n }\r\n removeItem(data:any,column:any,i:number){\r\n data[column.field_name].splice(i,1);\r\n return data[column.field_name];\r\n }\r\n checkObjecOrString(data:any){\r\n if(data._id){\r\n return data._id;\r\n }else{\r\n return data;\r\n }\r\n }\r\n\r\n copyGridCellText(value:any){\r\n if(value){\r\n navigator.clipboard.writeText(value);\r\n this.notificationService.notify(\"bg-success\",\"Text Copied\");\r\n }\r\n }\r\n\r\n copyGridColumnText(head:any,data:any,elements?:any){\r\n let columnData = \"\";\r\n if(data.length>0){\r\n let field_name=head.field_name;\r\n if(head.type == \"info\" && elements && elements.length>0){\r\n if(head.gridColumns){\r\n let childGridColumn = head.gridColumns;\r\n let childFieldName = childGridColumn[0]['field_name'];\r\n columnData=elements.map((ele:any)=>{\r\n let childData;\r\n if(ele[field_name] && this.isArray(ele[field_name]) && ele[field_name].length > 0){\r\n childData= ele[field_name].map((chidData:any) =>{\r\n return chidData[childFieldName];\r\n }).join('\\n').trim();\r\n }\r\n return childData;\r\n }).join('\\n').trim();\r\n }\r\n }else{\r\n columnData=data.map((ele:any)=>{\r\n if(ele[field_name]!=undefined) return ele[field_name];\r\n }).join('\\n').trim();\r\n }\r\n navigator.clipboard.writeText(columnData);\r\n }\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthDataShareService {\r\n\r\n signinResponse:Subject<any> = new Subject();\r\n authenticated:Subject<boolean> = new BehaviorSubject<boolean>(false);\r\n forgot:Subject<any> = new Subject<any>();\r\n settingData:Subject<any> = new Subject<any>();\r\n signUpResponse:Subject<any> = new Subject();\r\n otpResponse:Subject<any> = new Subject();\r\n OtpAutoLoginData:any = {}\r\n createPwd:Subject<any> = new Subject();\r\n userInfo:Subject<any> = new Subject();\r\n sessionexpired:Subject<any> = new Subject();\r\n resetPass:Subject<any> = new Subject();\r\n authResponce:Subject<any> = new Subject();\r\n\r\n\r\n constructor() { }\r\n\r\n setSigninResponse(responce:any){\r\n this.signinResponse.next(responce);\r\n }\r\n setAuthentication(responce:boolean){\r\n this.authenticated.next(responce);\r\n }\r\n getAuthentication(){\r\n return this.authenticated;\r\n }\r\n setForgot(responce:any){\r\n this.forgot.next(responce);\r\n }\r\n restSettingModule(value:any){\r\n this.settingData.next(value)\r\n }\r\n setSignUpResponse(response:any){\r\n this.signUpResponse.next(response);\r\n }\r\n setOtpResponse(response:any){\r\n this.otpResponse.next(response);\r\n }\r\n setOtpAutoLogin(response:any){\r\n this.OtpAutoLoginData = response\r\n }\r\n getOtpAutoLogin(){\r\n return this.OtpAutoLoginData;\r\n }\r\n setChangePwd(responce:any){\r\n this.createPwd.next(responce);\r\n }\r\n setUserInfo(responce:any){\r\n this.userInfo.next(responce);\r\n }\r\n setSessionExpired(responce:any){\r\n this.sessionexpired.next(responce);\r\n }\r\n resetPassword(responce:any){\r\n this.resetPass.next(responce);\r\n }\r\n setAuthenticationResponce(responce:any){\r\n this.authResponce.next(responce);\r\n }\r\n\r\n}\r\n","import { StorageService } from './../storage/storage.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { CommonFunctionService } from '../common-utils/common-function.service';\r\nimport { NotificationService } from '../notify/notification.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CheckIfService {\r\n\r\n constructor(\r\n private commonFunctionService:CommonFunctionService,\r\n private storageService:StorageService,\r\n private notificationService:NotificationService\r\n ) { }\r\n checkIsDisable(parent:any,chield:any,updateMode:boolean,formValue:any,templateForm:UntypedFormGroup){\r\n let responce = {\r\n tobedesabled:'',\r\n templateForm:templateForm\r\n }\r\n if(parent == ''){\r\n responce.tobedesabled = this.isDisable(chield,updateMode,formValue)\r\n if(responce.tobedesabled){\r\n if(!responce.templateForm.controls[chield.field_name].disabled){\r\n responce.templateForm.controls[chield.field_name].disable()\r\n }\r\n }else{\r\n if(responce.templateForm.controls[chield.field_name].disabled){\r\n responce.templateForm.controls[chield.field_name].enable()\r\n }\r\n }\r\n }else{\r\n responce.tobedesabled = this.isDisable(chield,updateMode,formValue)\r\n if(responce.tobedesabled){\r\n (<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].disable()\r\n }else{\r\n (<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].enable()\r\n }\r\n }\r\n return responce;\r\n }\r\n checkIsMendetory(parent:any,chield:any,formValue:any,templateForm:UntypedFormGroup){\r\n let responce = {\r\n tobedesabled:'',\r\n templateForm:templateForm\r\n }\r\n if(parent == ''){\r\n responce.tobedesabled = this.isMendetory(chield,formValue)\r\n if(responce.tobedesabled){\r\n if(responce.templateForm.controls[chield.field_name].status == 'VALID'){\r\n responce.templateForm.controls[chield.field_name].setValidators([Validators.required]);\r\n responce.templateForm.controls[chield.field_name].updateValueAndValidity();\r\n }\r\n }else{\r\n if(responce.templateForm.controls[chield.field_name].status == 'INVALID'){\r\n responce.templateForm.controls[chield.field_name].clearValidators();\r\n responce.templateForm.controls[chield.field_name].updateValueAndValidity();\r\n }\r\n }\r\n }else{\r\n responce.tobedesabled = this.isMendetory(chield,formValue)\r\n if(responce.tobedesabled){\r\n if((<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].status == 'VALID'){\r\n (<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].setValidators([Validators.required]);\r\n (<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].updateValueAndValidity();\r\n }\r\n }else{\r\n if((<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].status == 'INVALID'){\r\n (<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].clearValidators();\r\n (<UntypedFormGroup>responce.templateForm.controls[parent]).controls[chield.field_name].updateValueAndValidity();\r\n }\r\n }\r\n }\r\n return responce;\r\n }\r\n checkShowIfListOfFiedlds(parent:any,field:any,formValue:any){\r\n //let formValue = this.getFormValue(true);\r\n let fieldValue = formValue[parent];\r\n if(fieldValue && fieldValue.length > 0 && field && field.show_if && field.show_if != null && field.show_if != ''){\r\n let check = 0;\r\n for (let index = 0; index < fieldValue.length; index++) {\r\n const value = fieldValue[index];\r\n formValue[parent] = value;\r\n if(this.showIf(field,formValue)){\r\n check = 1;\r\n break;\r\n }\r\n }\r\n if(check == 1){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }\r\n checkAddNewButtonOnGridSelection(buttons:any){\r\n let check = false;\r\n if(buttons && buttons.length >0){\r\n for (let i = 0; i < buttons.length; i++) {\r\n const btn = buttons[i];\r\n if(btn && btn.onclick && btn.onclick.api && btn.onclick.api == \"save\"){\r\n check = true;\r\n break;\r\n }\r\n }\r\n }\r\n return check;\r\n }\r\n checkFieldShowOrHide(field:any,showIfFieldList:any){\r\n let check = false;\r\n for (let index = 0; index < showIfFieldList.length; index++) {\r\n const element = showIfFieldList[index];\r\n if(element.field_name == field.field_name){\r\n if(element.show){\r\n check = true;\r\n break;\r\n }else{\r\n check=false;\r\n break;\r\n }\r\n }\r\n\r\n }\r\n return check;\r\n }\r\n checkDublicateOnForm(fields:any,value:any,list:any,i:any,showIfFieldList:any,custmizedFormValue:any,dataListForUpload:any,templateForm:UntypedFormGroup,parent?:any){\r\n let checkDublic = {\r\n status : false,\r\n msg : \"\"\r\n }\r\n if(fields && fields.length > 0){\r\n let checkValue = 0;\r\n let field_control:any = \"\";\r\n let list_of_field_data = value;\r\n for (let index = 0; index < fields.length; index++) {\r\n const element = fields[index];\r\n let custmizedKey = '';\r\n let custmizedData = '';\r\n if(parent && parent != ''){\r\n custmizedKey = this.commonFunctionService.custmizedKey(parent);\r\n field_control = templateForm.controls[parent.field_name];\r\n }\r\n if(custmizedKey && custmizedKey != ''){\r\n if(custmizedFormValue[custmizedKey] && custmizedFormValue[custmizedKey][element.field_name]) {\r\n custmizedData = custmizedFormValue[custmizedKey][element.field_name]\r\n }\r\n if(dataListForUpload[custmizedKey] && dataListForUpload[custmizedKey][element.field_name]) {\r\n custmizedData = dataListForUpload[custmizedKey][element.field_name]\r\n }\r\n }else{\r\n if(custmizedFormValue[element.field_name] && custmizedFormValue[element.field_name].length > 0){\r\n custmizedData = custmizedFormValue[element.field_name]\r\n }\r\n }\r\n let mendatory = false;\r\n if(element.is_mandatory){\r\n if(element && element.show_if && element.show_if != ''){\r\n if(this.checkFieldShowOrHide(element,showIfFieldList)){\r\n mendatory = true;\r\n }else{\r\n mendatory = false;\r\n }\r\n }else{\r\n mendatory = true;\r\n }\r\n }\r\n switch (element.datatype) {\r\n case 'list_of_object':\r\n if (list_of_field_data[element.field_name] == '' || list_of_field_data[element.field_name] == null) {\r\n if(mendatory && custmizedData == ''){\r\n if(custmizedData.length == 0){\r\n checkValue = 1;\r\n checkDublic.status = true\r\n checkDublic.msg = \"Please Enter \" + element.label;\r\n //this.notificationService.notify(\"bg-danger\", \"Please Enter \" + element.label);\r\n return checkDublic;\r\n }\r\n }\r\n }else{\r\n checkDublic.status = true\r\n checkDublic.msg = 'Entered value for '+element.label+' is not valid. !!!';\r\n //this.notificationService.notify('bg-danger','Entered value for '+element.label+' is not valid. !!!');\r\n return checkDublic;\r\n }\r\n break;\r\n case 'object':\r\n if (list_of_field_data[element.field_name] == '' || list_of_field_data[element.field_name] == null) {\r\n if(mendatory){\r\n checkValue = 1;\r\n checkDublic.status = true\r\n checkDublic.msg = \"Please Enter \" + element.label;\r\n //this.notificationService.notify(\"bg-danger\", \"Please Enter \" + element.label);\r\n return checkDublic;\r\n }\r\n }else if(typeof list_of_field_data[element.field_name] != 'object'){\r\n checkDublic.status = true\r\n checkDublic.msg = 'Entered value for '+element.label+' is not valid. !!!';\r\n //this.notificationService.notify('bg-danger','Entered value for '+element.label+' is not valid. !!!');\r\n return checkDublic;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (element.type) {\r\n case 'list_of_string':\r\n if (list_of_field_data[element.field_name] == '' || list_of_field_data[element.field_name] == null) {\r\n if(mendatory && custmizedData == ''){\r\n if(custmizedData.length == 0){\r\n checkValue = 1;\r\n checkDublic.status = true\r\n checkDublic.msg = \"Please Enter \" + element.label;\r\n //this.notificationService.notify(\"bg-danger\", \"Please Enter \" + element.label);\r\n return checkDublic;\r\n }\r\n }\r\n }else{\r\n checkDublic.status = true\r\n checkDublic.msg = 'Entered value for '+element.label+' is not valid. !!!';\r\n //this.notificationService.notify('bg-danger','Entered value for '+element.label+' is not valid. !!!');\r\n return checkDublic;\r\n }\r\n break;\r\n case 'file':\r\n if(mendatory && custmizedData == ''){\r\n if(custmizedData.length == 0){\r\n checkValue = 1;\r\n checkDublic.status = true\r\n checkDublic.msg = \"Please Enter \" + element.label;\r\n //this.notificationService.notify(\"bg-danger\", \"Please Enter \" + element.label);\r\n return checkDublic;\r\n }\r\n }\r\n break;\r\n case 'typeahead':\r\n if(element.datatype == \"text\"){\r\n if (list_of_field_data[element.field_name] == '' || list_of_field_data[element.field_name] == null) {\r\n if(mendatory){\r\n if(custmizedData.length == 0){\r\n checkValue = 1;\r\n checkDublic.status = true\r\n checkDublic.msg = \"Please Enter \" + element.label;\r\n //this.notificationService.notify(\"bg-danger\", \"Please Enter \" + element.label);\r\n return checkDublic;\r\n }\r\n }\r\n }else if(field_control && field_control != \"\" ){\r\n if( field_control.get(element.field_name).errors?.required || field_control.get(element.field_name).errors?.validDataText){\r\n checkDublic.status = true\r\n checkDublic.msg = 'Entered value for '+element.label+' is invalidData. !!!';\r\n //this.notificationService.notify('bg-danger','Entered value for '+element.label+' is invalidData. !!!');\r\n return checkDublic;\r\n }\r\n }\r\n\r\n }\r\n break;\r\n default:\r\n if (list_of_field_data[element.field_name] == '' || list_of_field_data[element.field_name] == null) {\r\n if(mendatory ){\r\n checkValue = 1;\r\n checkDublic.msg = \"Please Enter \" + element.label;\r\n //this.notificationService.notify(\"bg-danger\", \"Please Enter \" + element.label);\r\n }\r\n }\r\n break;\r\n }\r\n if(element.primary_key_for_list){\r\n let primary_key_field_value = value[element.field_name];\r\n let alreadyAdded = {\r\n status : false,\r\n msg : \"\"\r\n };\r\n if(list && list.length > 0){\r\n alreadyAdded = this.checkDataAlreadyAddedInListOrNot(element,primary_key_field_value,list,i);\r\n }\r\n if(alreadyAdded && alreadyAdded.status){\r\n checkDublic.status = true;\r\n if(alreadyAdded.msg && alreadyAdded.msg != \"\"){\r\n checkDublic.msg = alreadyAdded.msg;\r\n }else{\r\n checkDublic.msg = \"Entered value for \"+element.label+\" is already added. !!!\";\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n if (checkValue == 1) {\r\n checkDublic.status = true;\r\n }\r\n }\r\n return checkDublic;\r\n }\r\n isGridFieldExist(tab:any,fieldName:any){\r\n if(tab.grid && tab.grid[fieldName] && tab.grid[fieldName] != undefined && tab.grid[fieldName] != null && tab.grid[fieldName] != ''){\r\n return true;\r\n }\r\n return false;\r\n }\r\n checkShowIf(field:any,selectedRow:any,formValue:any){\r\n const objectc = selectedRow?selectedRow:{}\r\n const object = JSON.parse(JSON.stringify(objectc));\r\n if(formValue && typeof formValue == 'object' && Object.keys(formValue).length > 0){\r\n Object.keys(formValue).forEach(key => {\r\n object[key] = formValue[key];\r\n })\r\n }\r\n const display = this.showIf(field,object);\r\n const modifiedField = JSON.parse(JSON.stringify(field));\r\n modifiedField['display'] = display;\r\n field = modifiedField;\r\n return display;\r\n }\r\n showIf(field:any, formValue:any) {\r\n if (field.show_if && field.show_if != null && field.show_if != '') {\r\n const showIf = field.show_if.split(';')\r\n let checkIf = true;\r\n for (let index = 0; index < showIf.length; index++) {\r\n checkIf = this.checkIfConditionForArrayListValue(showIf[index], formValue);\r\n if (!checkIf) {\r\n return;\r\n }\r\n }\r\n if (checkIf) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n checkIfConditionForArrayListValue(data:any, formValue:any){\r\n let condition = []\r\n condition = data.split('#');\r\n if (condition.length == 4 && condition[3] != 'dynamic' && condition[3] != 'STATIC') {\r\n let check = \"\";\r\n let checkList = [];\r\n let setValue = formValue ? this.commonFunctionService.getObjectValue(condition[0], formValue) : \"\";\r\n if(setValue && setValue.length > 0){\r\n for (let index = 0; index < setValue.length; index++) {\r\n const element = setValue[index];\r\n let value = this.commonFunctionService.getObjectValue(condition[3],element);\r\n if(value && value != ''){\r\n check = check + value + \"#\";\r\n for (let index = 0; index < condition.length; index++) {\r\n const conditons = condition[index];\r\n if(index == 1){\r\n check = check + conditons + '#';\r\n }else if(index == 2){\r\n check = check + conditons + '#STATIC';\r\n }\r\n }\r\n checkList.push(check);\r\n check = \"\";\r\n }else{\r\n return false;\r\n }\r\n }\r\n }else{\r\n return false;\r\n }\r\n if(checkList && checkList.length > 0){\r\n for (let index = 0; index < checkList.length; index++) {\r\n const condition = checkList[index];\r\n let result = this.checkIfCondition(condition,formValue);\r\n if(result){\r\n return true;\r\n }\r\n }\r\n return false;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return this.checkIfCondition(data,formValue);\r\n }\r\n\r\n }\r\n\r\n\r\n isDisable(tableField:any, updateMode:any, formValue:any) {\r\n if (tableField.is_disabled) {\r\n return true;\r\n } else {\r\n if (tableField.disable_if && tableField.disable_if != '') {\r\n return this.checkIfCondition(tableField.disable_if, formValue)\r\n }\r\n\r\n if (updateMode) {\r\n if (tableField.disable_on_update != undefined && tableField.disable_on_update) {\r\n return this.checkAddUpdateIf(tableField,'can_update_if');\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (tableField.disable_on_add != undefined && tableField.disable_on_add) {\r\n return this.checkAddUpdateIf(tableField,'can_add_if');\r\n }else{\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n is_check_role(id: any) {\r\n const userInfo = this.storageService.GetUserInfo();\r\n let check = 0;\r\n if (userInfo.roles && userInfo.roles != null && userInfo.roles != \"\" && this.commonFunctionService.isArray(userInfo.roles) && userInfo.roles.length > 0) {\r\n for (let index = 0; index < userInfo.roles.length; index++) {\r\n const element = userInfo.roles[index];\r\n if (element._id == id) {\r\n check = 1;\r\n break;\r\n } else {\r\n check = 0;\r\n }\r\n }\r\n } else {\r\n check = 0;\r\n }\r\n if(check == 1){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }\r\n isMendetory(tableField:any, formValue:any) {\r\n if (tableField.is_mandatory) {\r\n return true;\r\n } else {\r\n if (tableField.mandatory_if && tableField.mandatory_if != '') {\r\n return this.checkIfCondition(tableField.mandatory_if, formValue)\r\n }else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n checkIfCondition(data:any, formValue:any,datatype?:any) {\r\n let condition = []\r\n condition = data.split('#')\r\n if (condition.length >= 2) {\r\n if(condition[3] != null && condition[3] != \"\" && condition[3] == 'dynamic'){\r\n condition[2] = this.commonFunctionService.getObjectValue(condition[2], formValue)+\"\";\r\n }\r\n let setValue:any = \"\";\r\n if(condition.length > 3 && condition[3] == 'STATIC'){\r\n setValue = condition[0];\r\n }else{\r\n setValue = formValue ? this.commonFunctionService.getObjectValue(condition[0], formValue) : \"\";\r\n }\r\n if (setValue === undefined || setValue === \"\") {\r\n setValue = \"\";\r\n } else {\r\n setValue = setValue + \"\";\r\n }\r\n if(datatype){\r\n switch (datatype) {\r\n case \"date\":\r\n setValue = this.commonFunctionService.dateFormat(setValue);\r\n condition[2] = this.commonFunctionService.dateFormat(condition[2]);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n switch (condition[1]) {\r\n case 'eq':\r\n case 'equal':\r\n if (condition.length > 2) {\r\n //console.log('setValue');\r\n return setValue === condition[2];\r\n } else {\r\n return JSON.parse(setValue);\r\n }\r\n case 'in':\r\n if ((condition[2].split(\":\")).includes(setValue)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n case 'nin':\r\n if (!(condition[2].split(\":\")).includes(setValue)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n\r\n case 'gte':\r\n return parseFloat(setValue) >= parseFloat(condition[2]);\r\n case 'lte':\r\n return parseFloat(setValue) <= parseFloat(condition[2]);\r\n case 'exists':\r\n if (setValue != null && setValue != undefined && setValue != '' && setValue != 'null') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n case 'notexist':\r\n if (setValue == null || setValue == undefined || setValue == '' || setValue == 'null') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n case \"neq\":\r\n case \"notequal\":\r\n if (condition.length > 2) {\r\n //console.log('setValue');\r\n return !(setValue === condition[2]);\r\n } else {\r\n return !JSON.parse(setValue);\r\n }\r\n default:\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n checkAddUpdateIf(tableField:any,fieldName:any){\r\n let fieldValue = tableField[fieldName];\r\n if (fieldValue != undefined && fieldValue.has_role != null && fieldValue.has_role != undefined && this.commonFunctionService.isArray(fieldValue.has_role) && fieldValue.has_role.length > 0) {\r\n let check = 0;\r\n for (let index = 0; index < fieldValue.has_role.length; index++) {\r\n const element = fieldValue.has_role[index];\r\n if (this.is_check_role(element._id)) {\r\n check = 1;\r\n break;\r\n } else {\r\n check = 0;\r\n }\r\n }\r\n if(check == 1){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n checkDisableRowIf(field:string,formValue:string){\r\n let check = false;\r\n if(this.checkIfCondition(field,formValue)){\r\n check = true;\r\n }else{\r\n check = false;\r\n }\r\n return check;\r\n }\r\n checkRowIf(data:any,field:any){\r\n let check = false;\r\n if(data.selected || field.checkDisableRowIf){\r\n let condition = '';\r\n if(field.disableRowIf && field.disableRowIf != ''){\r\n condition = field.disableRowIf;\r\n }\r\n if(condition != ''){\r\n if(this.checkDisableRowIf(condition,data)){\r\n check = true;\r\n }else{\r\n check = false;\r\n }\r\n }\r\n }\r\n return check;\r\n }\r\n checkDisableInRow(editedColumns:any,row:any){\r\n for (let index = 0; index < editedColumns.length; index++) {\r\n const column = editedColumns[index];\r\n row[column.field_name+\"_disabled\"] = this.isDisableRow(column,row);\r\n }\r\n }\r\n\r\n isDisableRow(field:any, data:any) {\r\n const updateMode = false;\r\n if (field.is_disabled) {\r\n return true;\r\n }\r\n if(data.disabled){\r\n return data.disabled;\r\n }\r\n if (field.etc_fields && field.etc_fields.disable_if && field.etc_fields.disable_if != '') {\r\n return this.isDisable(field.etc_fields, updateMode, data);\r\n }\r\n return false;\r\n }\r\n isDisableRuntime(column:any, data:any,i:number,gridData:any,field:any,filterData:any) {\r\n const updateMode = false;\r\n if (column.is_disabled) {\r\n return true;\r\n }\r\n if(data.disabled){\r\n return data.disabled;\r\n }\r\n if (column.etc_fields && column.etc_fields.disable_if && column.etc_fields.disable_if != '') {\r\n let indx:any = this.commonFunctionService.getCorrectIndex(data,i,field,gridData,filterData);\r\n data = gridData[indx];\r\n return this.isDisable(field.etc_fields, updateMode, data);\r\n }\r\n return false;\r\n }\r\n checkDataAlreadyAddedInListOrNot(field:any,incomingData:any,alreadyDataAddedlist:any,i?:any){\r\n if(field && field.type && field.type == \"date\"){\r\n incomingData = \"\"+incomingData;\r\n }\r\n let checkStatus = {\r\n status : false,\r\n msg : \"\"\r\n };\r\n if(field && field.allowDuplicacy){\r\n checkStatus.status = false;\r\n return checkStatus;\r\n }else{\r\n let primary_key = field.field_name\r\n let criteria = primary_key+\"#eq#\"+incomingData;\r\n let primaryCriteriaList=[];\r\n primaryCriteriaList.push(criteria);\r\n if(field && field.primaryKeyCriteria && Array.isArray(field.primaryKeyCriteria) && field.primaryKeyCriteria.length > 0){\r\n field.primaryKeyCriteria.forEach((criteria:any) => {\r\n const crList = criteria.split(\"#\");\r\n const cr = crList[0]+\"#\"+crList[1]+\"#\"+incomingData;\r\n primaryCriteriaList.push(cr);\r\n });\r\n }\r\n if(alreadyDataAddedlist == undefined){\r\n alreadyDataAddedlist = [];\r\n }\r\n let alreadyExist = false;\r\n if(typeof incomingData == 'object'){\r\n alreadyDataAddedlist.forEach((element:any) => {\r\n if(element._id && element._id == incomingData._id){\r\n alreadyExist = true;\r\n }\r\n });\r\n }\r\n else if(typeof incomingData == 'string'){\r\n for (let index = 0; index < alreadyDataAddedlist.length; index++) {\r\n const element = alreadyDataAddedlist[index];\r\n if(i == undefined || i == -1){\r\n if(typeof element == 'string'){\r\n if(element == incomingData){\r\n alreadyExist = true;\r\n }\r\n }else{\r\n if(primaryCriteriaList && primaryCriteriaList.length > 0){\r\n for (let index = 0; index < primaryCriteriaList.length; index++) {\r\n const cri = primaryCriteriaList[index];\r\n alreadyExist = this.checkIfCondition(cri,element,field.type);\r\n if(alreadyExist){\r\n const crList = cri.split(\"#\");\r\n switch (crList[1]) {\r\n case \"lte\":\r\n checkStatus.msg = \"Entered value for \"+ (field.label?field.label:'') +\" is gretter than to \"+crList[0]+\". !!!\";\r\n break;\r\n case \"gte\":\r\n checkStatus.msg = \"Entered value for \"+ (field.label?field.label:'') +\" is less than to \"+crList[0]+\". !!!\";\r\n break;\r\n default:\r\n checkStatus.msg = \"Entered value for \"+ (field.label?field.label:'') +\" is already added. !!!\";\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if(alreadyExist){\r\n break;\r\n }\r\n }else{\r\n break;\r\n }\r\n };\r\n }else{\r\n alreadyExist = false;\r\n }\r\n if(alreadyExist){\r\n checkStatus.status = true;\r\n return checkStatus;\r\n }else{\r\n checkStatus.status = false;\r\n return checkStatus;\r\n }\r\n }\r\n\r\n }\r\n checkCustmizedValuValidation(fields:any, value:any) {\r\n let validate:any = [];\r\n let response:any = {\r\n status : false,\r\n msg : \"\"\r\n }\r\n fields.forEach((element:any) => {\r\n switch (element.type) {\r\n case \"grid_selection\":\r\n case \"list_of_string\":\r\n if (element.is_mandatory) {\r\n if (value[element.field_name] === undefined || value[element.field_name] === '' || value[element.field_name] === null || !this.commonFunctionService.isArray(value[element.field_name])) {\r\n validate.push(element);\r\n } else if (this.commonFunctionService.isArray(value[element.field_name])) {\r\n if (value[element.field_name].length <= 0) {\r\n validate.push(element);\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n validate = validate;\r\n }\r\n });\r\n if (validate.length > 0) {\r\n let fieldName = '';\r\n validate.forEach((element:any) => {\r\n if (fieldName == '') {\r\n fieldName += element.label\r\n } else {\r\n fieldName += ', ' + element.label\r\n }\r\n\r\n });\r\n response.msg = fieldName + ' Required.';\r\n response.status = false;\r\n // this.notificationService.notify('bg-danger', fieldName + ' Required.')\r\n } else {\r\n response.status = true;\r\n }\r\n return response;\r\n }\r\n\r\n checkCallGridData(ObjectValue:any,gridDisable:boolean){\r\n let check = false;\r\n if(gridDisable){\r\n let list = Object.values(ObjectValue);\r\n for (let index = 0; index < list.length; index++) {\r\n const val = list[index];\r\n if(val != '') {\r\n check = true;\r\n break;\r\n }\r\n }\r\n }else {\r\n check = true;\r\n }\r\n return check;\r\n }\r\n\r\n checkUpdatePermission(rowdata:any,details:any){\r\n if(details && details.permission_key && details.permission_key != '' && details.permission_value && details.permission_value != ''){\r\n const value = this.commonFunctionService.getObjectValue(details.permission_key,rowdata)\r\n if(value == details.permission_value){\r\n this.notificationService.notify(\"btn-danger\",\"Cannot be update!!!\")\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n checkFieldsAvailability(formName:string,tab:any,gridButtons:any){\r\n if(tab && tab?.forms){\r\n let form = this.commonFunctionService.getForm(tab.forms,formName,gridButtons);\r\n if(form && form?.['tableFields'] && form?.['tableFields']?.length > 0 ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import { CheckIfService } from './../../check-if/check-if.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { StorageService } from '../../storage/storage.service';\r\nimport { CoreFunctionService } from '../../common-utils/core-function/core-function.service';\r\nimport { ApiService } from '../../api/api.service';\r\nimport { Common } from '../../../shared/enums/common.enum';\r\nimport { ModelService } from '../../model/model.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiCallService {\r\n pageNumber: number = Common.PAGE_NO;\r\n itemNumOfGrid: any = Common.ITEM_NUM_OF_GRID;\r\n\r\n constructor(\r\n private commonFunctionService:CommonFunctionService,\r\n private storageService:StorageService,\r\n private coreFunctionService:CoreFunctionService,\r\n private apiService:ApiService,\r\n private checkIfService:CheckIfService,\r\n private modalService: ModelService,\r\n ) { }\r\n\r\n getOnchangePayload(tableFields:any,formValue:any,formValueWithCustomData:any){\r\n let staticModal:any = []\r\n if(tableFields && tableFields.length > 0){\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name && element.field_name != ''){\r\n if (element.onchange_api_params && element.onchange_call_back_field && !element.do_not_auto_trigger_on_edit) {\r\n const checkFormGroup = element.onchange_call_back_field.indexOf(\"FORM_GROUP\");\r\n const checkCLTFN = element.onchange_api_params.indexOf('CLTFN')\r\n if(checkFormGroup == -1 && checkCLTFN == -1){\r\n\r\n const payload = this.getPaylodWithCriteria(element.onchange_api_params, element.onchange_call_back_field, element.onchange_api_params_criteria, formValueWithCustomData)\r\n if(element.onchange_api_params.indexOf('QTMP') >= 0){\r\n if(element && element.formValueAsObjectForQtmp){\r\n payload[\"data\"]=formValue;\r\n }else{\r\n payload[\"data\"]=formValueWithCustomData;\r\n }\r\n }\r\n staticModal.push(payload);\r\n }\r\n }\r\n switch (element.type) {\r\n case \"stepper\":\r\n if (element.list_of_fields.length > 0) {\r\n element.list_of_fields.forEach((step:any) => {\r\n if (step.list_of_fields.length > 0) {\r\n step.list_of_fields.forEach((data:any) => {\r\n if (data.onchange_api_params && data.onchange_call_back_field && !data.do_not_auto_trigger_on_edit) {\r\n const checkFormGroup = data.onchange_call_back_field.indexOf(\"FORM_GROUP\");\r\n if(checkFormGroup == -1){\r\n\r\n const payload = this.getPaylodWithCriteria(data.onchange_api_params, data.onchange_call_back_field, data.onchange_api_params_criteria, formValueWithCustomData)\r\n if(data.onchange_api_params.indexOf('QTMP') >= 0){\r\n if(element && element.formValueAsObjectForQtmp){\r\n payload[\"data\"]=formValue;\r\n }else{\r\n payload[\"data\"]=formValueWithCustomData;\r\n }\r\n }\r\n staticModal.push(payload);\r\n }\r\n }\r\n if(data.tree_view_object && data.tree_view_object.field_name != \"\"){\r\n let editeTreeModifyData = JSON.parse(JSON.stringify(data.tree_view_object));\r\n if (editeTreeModifyData.onchange_api_params && editeTreeModifyData.onchange_call_back_field) {\r\n staticModal.push(this.getPaylodWithCriteria(editeTreeModifyData.onchange_api_params, editeTreeModifyData.onchange_call_back_field, editeTreeModifyData.onchange_api_params_criteria, formValueWithCustomData));\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n if(element.tree_view_object && element.tree_view_object.field_name != \"\"){\r\n let editeTreeModifyData = JSON.parse(JSON.stringify(element.tree_view_object));\r\n if (editeTreeModifyData.onchange_api_params && editeTreeModifyData.onchange_call_back_field) {\r\n staticModal.push(this.getPaylodWithCriteria(editeTreeModifyData.onchange_api_params, editeTreeModifyData.onchange_call_back_field, editeTreeModifyData.onchange_api_params_criteria, formValueWithCustomData));\r\n }\r\n }\r\n }\r\n if(element.type && element.type == 'pdf_view'){\r\n staticModal.push(this.getPaylodWithCriteria(element.onchange_api_params,element.onchange_call_back_field,element.onchange_api_params_criteria,formValueWithCustomData))\r\n }\r\n });\r\n }\r\n return staticModal;\r\n }\r\n getStaticDataPayload(staticModal:any,object:any,formDataObject:any,multipleFormCollection:any,tableFields:any,formFieldButtons:any,tab:any,form:any,saveResponceData:any,editedRowIndex:any){\r\n let formValue = object;\r\n if(multipleFormCollection && multipleFormCollection.length > 0){\r\n let multiCollection = JSON.parse(JSON.stringify(multipleFormCollection));\r\n formValue = this.commonFunctionService.getFormDataInMultiformCollection(multiCollection,object);\r\n }\r\n let staticModalG = this.commanApiPayload([],tableFields,formFieldButtons,formValue);\r\n if(staticModalG && staticModalG.length > 0){\r\n staticModalG.forEach((element:any) => {\r\n staticModal.push(element);\r\n });\r\n }\r\n if(tab && tab.api_params && tab.api_params != null && tab.api_params != \"\" && tab.api_params != undefined){\r\n let criteria = [];\r\n if(tab.api_params_criteria && tab.api_params_criteria != null){\r\n criteria=tab.api_params_criteria\r\n }\r\n staticModal.push(this.getPaylodWithCriteria(tab.api_params,tab.call_back_field,criteria,{}))\r\n\r\n }\r\n if(form && form.api_params && form.api_params != null && form.api_params != \"\" && form.api_params != undefined){\r\n if(form.api_params == 'QTMP:EMAIL_WITH_TEMP:QUOTATION_LETTER'){\r\n object = saveResponceData;\r\n }\r\n let criteria = [];\r\n if(form.api_params_criteria && form.api_params_criteria != null){\r\n criteria=form.api_params_criteria\r\n }\r\n if(editedRowIndex > -1){\r\n formDataObject = formValue;\r\n }\r\n staticModal.push(this.getPaylodWithCriteria(form.api_params,form.call_back_field,criteria,formDataObject))\r\n }\r\n return staticModal;\r\n }\r\n getOnClickLoadDataPayloads(field:any,multipleFormCollection:any,formValue:any,formValueWithCustomData:any){\r\n let api_params = field.onClickApiParams;\r\n let callBackfield = field.onClickCallBackField;\r\n let criteria = field.onClickApiParamsCriteria\r\n const payload = this.getPaylodWithCriteria(api_params,callBackfield,criteria,formValue);\r\n let payloads = [];\r\n payloads.push(this.checkQtmpApi(api_params,field,payload,multipleFormCollection,formValue,formValueWithCustomData));\r\n return payloads;\r\n }\r\n getPaylodWithCriteria(params:any, callback:any, criteria:any, object:any,data_template?:any) {\r\n const tabName = this.storageService.GetActiveMenu();\r\n let activeRole = this.storageService.getActiveRole();\r\n let tab = '';\r\n let roleName = \"\";\r\n if(tabName && tabName.name && tabName.name != ''){\r\n tab = tabName.name;\r\n }\r\n if(activeRole && activeRole.name != ''){\r\n roleName = activeRole.name;\r\n }\r\n let staticModal:any = {\r\n \"key\": this.commonFunctionService.getRefcode(),\r\n \"key2\": this.storageService.getAppId(),\r\n \"value\": params,\r\n \"log\": this.storageService.getUserLog(),\r\n \"crList\": [],\r\n \"module\": this.storageService.getModule(),\r\n \"tab\": tab\r\n }\r\n if(roleName != ''){\r\n staticModal['role'] = roleName;\r\n }\r\n if(data_template){\r\n staticModal['data_template'] = data_template;\r\n }\r\n if(callback && callback != ''){\r\n staticModal['key3'] = callback;\r\n }\r\n if(params.indexOf(\"FORM_GROUP\") >= 0 || params.indexOf(\"QTMP\") >= 0){\r\n staticModal[\"data\"]=object;\r\n }\r\n if (criteria && criteria.length > 0) {\r\n const crList = this.getCriteriaList(criteria,object);\r\n if(crList && crList.length > 0){\r\n crList.forEach((element: any) => {\r\n staticModal.crList.push(element);\r\n });\r\n }\r\n }\r\n return staticModal;\r\n }\r\n getCriteriaList(criteria:any,object:any){\r\n const crList:any = [];\r\n criteria.forEach((element: string) => {\r\n const criteria = element.split(\";\");\r\n const fValue = criteria[2]\r\n let fvalue ='';\r\n if(criteria[3] && criteria[3] == 'STATIC'){\r\n fvalue = fValue;\r\n }else{\r\n fvalue = this.commonFunctionService.getObjectValue(fValue, object)\r\n }\r\n const list = {\r\n \"fName\": criteria[0],\r\n \"fValue\": fvalue,\r\n \"operator\": criteria[1]\r\n }\r\n if(this.coreFunctionService.isNotBlank(fvalue)){\r\n crList.push(list);\r\n }\r\n });\r\n return crList;\r\n }\r\n getTabsPayloadForCountList(tabs:any){\r\n let payloads:any = [];\r\n if(tabs && tabs.length >= 1){\r\n tabs.forEach((tab: any) => {\r\n if(tab.grid){\r\n let grid_api_params_criteria = [];\r\n if(this.checkIfService.isGridFieldExist(tab,\"api_params_criteria\")){\r\n grid_api_params_criteria = tab.grid.api_params_criteria;\r\n }\r\n const payload = this.getPaylodWithCriteria(tab.tab_name,tab.tab_name+\"_\"+tab.name,grid_api_params_criteria,{});\r\n payload['countOnly'] = true;\r\n payloads.push(payload);\r\n }\r\n });\r\n }\r\n return payloads;\r\n }\r\n getTabsCountPyload(tabs:any){\r\n let payloads = this.getTabsPayloadForCountList(tabs);\r\n if(payloads && payloads.length > 0){\r\n this.apiService.getGridCountData(payloads);\r\n }\r\n }\r\n commanApiPayload(headElement:any,tableField:any,actionButton:any,object?:any){\r\n const staticModalGroup:any = [];\r\n let staticModal:any = {};\r\n if(headElement.length > 0){\r\n headElement.forEach((element: any) => {\r\n if (element.api_params && element.api_params != '') {\r\n let call_back_field = '';\r\n let criteria = [];\r\n if(element.call_back_field && element.call_back_field != ''){\r\n call_back_field = element.call_back_field;\r\n }\r\n if(element.api_params_criteria && element.api_params_criteria != ''){\r\n criteria = element.api_params_criteria;\r\n }\r\n staticModal = this.getPaylodWithCriteria(element.api_params,call_back_field,criteria,object?object:{});\r\n if(element.adkey && element.adkey != '' && element.adkey != null){\r\n staticModal['adkeys'] = element.adkey;\r\n staticModalGroup.push(staticModal);\r\n }else{\r\n staticModalGroup.push(staticModal);\r\n }\r\n\r\n }\r\n\r\n });\r\n }\r\n\r\n if(actionButton.length > 0){\r\n actionButton.forEach((element: any) => {\r\n if (element.api_params && element.api_params != '') {\r\n let call_back_field = '';\r\n let criteria = [];\r\n if(element.call_back_field && element.call_back_field != ''){\r\n call_back_field = element.call_back_field;\r\n }\r\n if(element.api_params_criteria && element.api_params_criteria != ''){\r\n criteria = element.api_params_criteria;\r\n }\r\n const staticModal = this.getPaylodWithCriteria(element.api_params,call_back_field,criteria,object?object:{});\r\n\r\n staticModalGroup.push(staticModal);\r\n }\r\n });\r\n }\r\n\r\n if(tableField.length > 0){\r\n\r\n tableField.forEach((element:any) => {\r\n let call_back_field = '';\r\n let criteria = [];\r\n if (element.api_params && element.api_params != '' && element.type != \"typeahead\") {\r\n if(element.call_back_field && element.call_back_field != ''){\r\n call_back_field = element.call_back_field;\r\n }\r\n if(element.api_params_criteria && element.api_params_criteria != ''){\r\n criteria = element.api_params_criteria;\r\n }\r\n const staticModal = this.getPaylodWithCriteria(element.api_params,call_back_field,criteria,object?object:{},element.data_template);\r\n if(element.api_params.indexOf(\"html_view\") >= 0){\r\n staticModal[\"data\"]=object;\r\n }\r\n staticModalGroup.push(staticModal);\r\n }\r\n switch (element.type) {\r\n case \"list_of_fields\":\r\n case \"group_of_fields\":\r\n if (element.list_of_fields && element.list_of_fields.length > 0) {\r\n element.list_of_fields.forEach((data:any) => {\r\n if(data && data != null){\r\n let call_back_field = '';\r\n let criteria = [];\r\n if (data.api_params && data.api_params != '' && data.type != \"typeahead\") {\r\n\r\n if(data.call_back_field && data.call_back_field != ''){\r\n call_back_field = data.call_back_field;\r\n }\r\n if(data.api_params_criteria && data.api_params_criteria != ''){\r\n criteria = data.api_params_criteria;\r\n }\r\n const staticModalListOfFields = this.getPaylodWithCriteria(data.api_params,call_back_field,criteria,object?object:{},element.data_template);\r\n if(data.api_params.indexOf(\"html_view\") >= 0){\r\n staticModalListOfFields[\"data\"]=object;\r\n }\r\n staticModalGroup.push(staticModalListOfFields);\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n case \"stepper\":\r\n if (element.list_of_fields && element.list_of_fields.length > 0) {\r\n element.list_of_fields.forEach((step:any) => {\r\n step.list_of_fields.forEach((data:any) => {\r\n let call_back_field = '';\r\n let criteria = [];\r\n if (data.api_params && data.api_params != '' && data.type != \"typeahead\") {\r\n\r\n if(data.call_back_field && data.call_back_field != ''){\r\n call_back_field = data.call_back_field;\r\n }\r\n if(data.api_params_criteria && data.api_params_criteria != ''){\r\n criteria = data.api_params_criteria;\r\n }\r\n const staticModalListOfFields = this.getPaylodWithCriteria(data.api_params,call_back_field,criteria,object?object:{},element.data_template);\r\n if(data.api_params.indexOf(\"html_view\") >= 0){\r\n staticModalListOfFields[\"data\"]=object;\r\n }\r\n staticModalGroup.push(staticModalListOfFields);\r\n }\r\n });\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n return staticModalGroup;\r\n }\r\n getfilterCrlist(headElements:any,formValue:any) {\r\n const filterList:any = []\r\n if(formValue != undefined && headElements && headElements.length > 0){\r\n const criteria:any = [];\r\n headElements.forEach((element: any) => {\r\n if(element != null && element.type != null){\r\n let fieldName = element.field_name;\r\n let value = formValue[element.field_name];\r\n switch (element.type.toLowerCase()) {\r\n case \"button\":\r\n case \"text\":\r\n case \"tree_view_selection\":\r\n case \"dropdown\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName] != ''){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0 && element.type != 'dropdown'){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else if (element.multi_select && element.datatype == \"object\"){\r\n let fvalue = '';\r\n if(value && value.length > 0){\r\n value.forEach((vl: string, i: number) => {\r\n if((value.length - 1) == i){\r\n fvalue = fvalue + vl;\r\n }else{\r\n fvalue = fvalue + vl + \":\";\r\n }\r\n });\r\n }\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": fvalue,\r\n \"operator\": \"in\"\r\n }\r\n )\r\n }\r\n else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.getValueForDotFieldName(value,fieldName),\r\n \"operator\": this.storageService.getDefaultSearchOperator()\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n case \"number\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName] != ''){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.commonFunctionService.getddnDisplayVal(value),\r\n \"operator\": \"eq\"\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n case \"typeahead\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName] != ''){\r\n if(this.commonFunctionService.isArray(element.dataFilterCriteria) && element.dataFilterCriteria.length > 0){\r\n element.dataFilterCriteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.getValueForDotFieldName(value,fieldName),\r\n \"operator\": this.storageService.getDefaultSearchOperator()\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n case \"info\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName] != ''){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.commonFunctionService.getddnDisplayVal(value),\r\n \"operator\": this.storageService.getDefaultSearchOperator()\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n case \"reference_names\":\r\n case \"chips\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName] != ''){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName+\".name\",\r\n \"fValue\": this.commonFunctionService.getddnDisplayVal(value),\r\n \"operator\": this.storageService.getDefaultSearchOperator()\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n case \"date\":\r\n case \"datetime\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName] != ''){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.commonFunctionService.dateFormat(value),\r\n \"operator\": \"eq\"\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n case \"daterange\":\r\n if(formValue && formValue[fieldName] && formValue[fieldName].start != '' && formValue[fieldName].end != null){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.commonFunctionService.dateFormat(value.start),\r\n \"operator\": \"gte\"\r\n }\r\n )\r\n }\r\n }\r\n if(formValue && formValue[fieldName] && formValue[fieldName].end != '' && formValue[fieldName].end != null){\r\n if(this.commonFunctionService.isArray(element.api_params_criteria) && element.api_params_criteria.length > 0){\r\n element.api_params_criteria.forEach((cri: any) => {\r\n criteria.push(cri)\r\n });\r\n }else{\r\n filterList.push(\r\n {\r\n \"fName\": fieldName,\r\n \"fValue\": this.commonFunctionService.dateFormat(value.end),\r\n \"operator\": \"lte\"\r\n }\r\n )\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n });\r\n if(criteria && criteria.length > 0){\r\n const crList = this.getCriteriaList(criteria,formValue);\r\n if(crList && crList.length > 0){\r\n crList.forEach((element: any) => {\r\n filterList.push(element);\r\n });\r\n }\r\n }\r\n }\r\n return filterList;\r\n }\r\n getValueForDotFieldName(value:any,fieldName:any){\r\n let crValue = \"\";\r\n if(typeof value == \"string\"){\r\n crValue = value;\r\n }else if(typeof value == \"object\"){\r\n let fName = fieldName.indexOf('.') != -1 ? (fieldName).split('.')[0]:fieldName;\r\n let objectValue:any = {};\r\n objectValue[fName] = value\r\n crValue = fieldName.indexOf('.') != -1 ?this.commonFunctionService.getObjectValue(fieldName,objectValue): this.commonFunctionService.getddnDisplayVal(value);\r\n }\r\n return crValue;\r\n }\r\n\r\n getUserPrefrerence(user:any) {\r\n let criteria = \"userId._id;eq;\"+user._id+\";STATIC\";\r\n let myData = this.setPageNoAndSize(this.getPaylodWithCriteria(\"user_preference\", \"\", [criteria], {}),1);\r\n const payloadData = {\r\n path: null,\r\n data : myData\r\n }\r\n this.apiService.getFavouriteData(payloadData);\r\n }\r\n getUserNotification(pageNo:any){\r\n let user = this.storageService.GetUserInfo();\r\n const userId = user._id;\r\n if(userId && userId != null && userId != ''){\r\n let criteraiList:any=[];\r\n criteraiList.push(\"userId._id;eq;\"+userId+\";STATIC\");\r\n criteraiList.push(\"notificationStatus;eq;UNREAD;STATIC\");\r\n const payload = this.setPageNoAndSize(this.getPaylodWithCriteria('user_notification_master','',criteraiList,{}),pageNo);\r\n const callPayload = {\r\n \"path\" : null,\r\n \"data\": payload\r\n }\r\n this.apiService.getUserNotification(callPayload);\r\n }\r\n }\r\n getUserNotificationSetting(){\r\n this.apiService.getUserNotificationSetting();\r\n }\r\n\r\n getApplicationAllSettings() {\r\n const payload1 = this.setPageNoAndSize(this.getPaylodWithCriteria(\"application_setting\", \"\", [], {}), 1);\r\n this.apiService.getAplicationsSetting(payload1);\r\n const payload = this.setPageNoAndSize(this.getPaylodWithCriteria(\"application_theme_setting\", \"\", [], {}), 1);\r\n this.apiService.getAplicationsThemeSetting(payload);\r\n }\r\n getDataForGrid(page:any,tab:any,currentMenu:any,headElements:any,filterForm:any,selectContact:any){\r\n // let grid_api_params_criteria = [];\r\n // if(tab.grid && tab.grid.grid_page_size && tab.grid.grid_page_size != null && tab.grid.grid_page_size != ''){\r\n // this.itemNumOfGrid = tab.grid.grid_page_size;\r\n // }\r\n // if(this.checkIfService.isGridFieldExist(tab,\"api_params_criteria\")){\r\n // grid_api_params_criteria = tab.grid.api_params_criteria;\r\n // }\r\n //const data = this.setPageNoAndSize(this.getPaylodWithCriteria(currentMenu.name,'',grid_api_params_criteria,''),page);\r\n //let crList=[];\r\n // this.getfilterCrlist(headElements,filterForm).forEach((element: any) => {\r\n // crList.push(element);\r\n // });\r\n let payload = this.getDataForGridFilter(page,tab,currentMenu,headElements,filterForm);\r\n if(selectContact != ''){\r\n const tabFilterCrlist = {\r\n \"fName\": 'account._id',\r\n \"fValue\": selectContact,\r\n \"operator\": 'eq'\r\n }\r\n if(payload?.data?.crList.length > 0) payload.data.crList.push(tabFilterCrlist);\r\n }\r\n return payload;\r\n // const getFilterData = {\r\n // data: data,\r\n // path: null\r\n // }\r\n // return getFilterData;\r\n }\r\n preparePayloadWithCrlist(tab:any,currentMenu:any,headElements:any,filterForm:any){\r\n let grid_api_params_criteria = [];\r\n if(this.checkIfService.isGridFieldExist(tab,\"api_params_criteria\")){\r\n grid_api_params_criteria = tab.grid.api_params_criteria;\r\n }\r\n const payload = this.getPaylodWithCriteria(currentMenu.name,'',grid_api_params_criteria,'');\r\n let crList:any = [];\r\n this.getfilterCrlist(headElements,filterForm).forEach((element: any) => {\r\n crList.push(element);\r\n });\r\n //advanced filter crlist get or add in crlist\r\n let advancedCrlist = JSON.parse(<any>sessionStorage.getItem(\"ADVANCE_CRITERIA_LIST\"));\r\n if(advancedCrlist){\r\n if(advancedCrlist[currentMenu.name]){\r\n let list = advancedCrlist[currentMenu.name];\r\n if(list && list.length > 0){\r\n list.forEach((adCriteria:any) => {\r\n crList.push(adCriteria);\r\n });\r\n }\r\n }\r\n }\r\n if(crList && crList.length>0){\r\n if(payload && payload?.crList && payload.crList.length > 0){\r\n crList.forEach((cr:any) => {\r\n payload.crList.push(cr);\r\n });\r\n }else{\r\n payload.crList = crList;\r\n }\r\n }\r\n return payload;\r\n }\r\n\r\n\r\n getDataForGridFilter(page:any,tab:any,currentMenu:any,headElements:any,filterForm:any){\r\n const data = this.preparePayloadWithCrlist(tab,currentMenu,headElements,filterForm);\r\n if(tab && tab?.grid && tab?.grid?.grid_page_size){\r\n this.itemNumOfGrid = tab.grid.grid_page_size;\r\n }\r\n this.setPageNoAndSize(data,page);\r\n const getFilterData = {\r\n data: data,\r\n path: null\r\n }\r\n return getFilterData;\r\n }\r\n getPage(page: number,tab:any,currentMenu:string,headElements:object,filterForm:object,selectContact:any) {\r\n return this.getDataForGrid(page,tab,currentMenu,headElements,filterForm,selectContact);\r\n }\r\n getRealTimeGridData(currentMenu:any, object:any) {\r\n let grid_api_params_criteria = [];\r\n let page = 1;\r\n let criteria = \"_id;eq;\" + object._id + \";STATIC\";\r\n grid_api_params_criteria.push(criteria);\r\n const data = this.setPageNoAndSize(this.getPaylodWithCriteria(currentMenu.name,'',grid_api_params_criteria,''),page);\r\n const getFilterData = {\r\n data: data,\r\n path: null\r\n }\r\n this.apiService.getGridRunningData(getFilterData);\r\n }\r\n\r\n getFormForTds(data:any,currentMenu:any, object:any){\r\n let payloadData:any = {};\r\n if(currentMenu != ''){\r\n payloadData = this.getPaylodWithCriteria(currentMenu, '', [], '')\r\n payloadData['data']=object\r\n }\r\n const getFormData = {\r\n _id : data._id,\r\n data: payloadData\r\n }\r\n return getFormData;\r\n }\r\n getPdf(data:any,currentMenu:any) {\r\n let payloadData = {};\r\n if(currentMenu != ''){\r\n payloadData = this.getPaylodWithCriteria(currentMenu, '', [], '')\r\n }\r\n const getFileData:any = {\r\n _id: data._id,\r\n data: payloadData,\r\n responce: { responseType: \"arraybuffer\" }\r\n }\r\n let fileName = currentMenu;\r\n fileName = fileName.charAt(0).toUpperCase() + fileName.slice(1)\r\n const downloadPdfCheck = fileName + '-' + new Date().toLocaleDateString();\r\n if(getFileData._id && getFileData._id != undefined && getFileData._id != null && getFileData._id != ''){\r\n getFileData.data['data']=data;\r\n this.apiService.GetFileData(getFileData);\r\n }\r\n return downloadPdfCheck;\r\n }\r\n downloadPdf(data:any, currentMenu:any) {\r\n let payloadData = {};\r\n if (currentMenu != '') {\r\n payloadData = this.getPaylodWithCriteria(currentMenu, '', [], '')\r\n }\r\n const getPdfData:any = {\r\n _id: data._id,\r\n data: payloadData,\r\n responce: { responseType: \"arraybuffer\" }\r\n }\r\n let fileName = currentMenu;\r\n fileName = fileName.charAt(0).toUpperCase() + fileName.slice(1)\r\n const downloadPdfCheck = fileName + '-' + new Date().toLocaleDateString();\r\n if (getPdfData._id && getPdfData._id != undefined && getPdfData._id != null && getPdfData._id != '') {\r\n getPdfData.data['data'] = data;\r\n this.apiService.GetPdfData(getPdfData);\r\n }\r\n return downloadPdfCheck;\r\n }\r\n getTemData(tempName:any) {\r\n //const params = \"form_template\";\r\n //const criteria = [\"name;eq;\"+tempName+\";STATIC\"];\r\n //const payload = this.getPaylodWithCriteria(params,'',criteria,{});\r\n // const getTemplates = {\r\n // crList: [{\r\n // \"fName\": \"name\",\r\n // \"fValue\": tempName,\r\n // \"operator\": \"eq\"\r\n // }],\r\n // key2: this.storageService.getAppId(),\r\n // refCode: this.getRefcode(),\r\n // log: this.storageService.getUserLog(),\r\n // value: \"form_template\"\r\n // }\r\n const payload = this.getTempPayload(tempName,'eq');\r\n return payload;\r\n }\r\n getTempPayload(value:any,operator:string){\r\n const params = \"form_template\";\r\n const criteria = [\"name;\"+operator+\";\"+value+\";STATIC\"];\r\n const payload = this.getPaylodWithCriteria(params,'',criteria,{});\r\n return payload;\r\n }\r\n setPageNoAndSize(payload:any,page:number){\r\n payload['pageNo'] = page - 1;\r\n payload['pageSize'] = this.itemNumOfGrid;\r\n return payload;\r\n }\r\n checkQtmpApi(params:any,field:any,payload:any,multipleFormCollection:any,object:any,objectWithCustom:any){\r\n if(params.indexOf(\"FORM_GROUP\") >= 0 || params.indexOf(\"QTMP\") >= 0){\r\n let multiCollection = JSON.parse(JSON.stringify(multipleFormCollection));\r\n if(field && field.formValueAsObjectForQtmp){\r\n let formValue = this.commonFunctionService.getFormDataInMultiformCollection(multiCollection,object);\r\n payload[\"data\"]=formValue;\r\n }else{\r\n let formValue = this.commonFunctionService.getFormDataInMultiformCollection(multiCollection,objectWithCustom);\r\n payload[\"data\"]=formValue;\r\n }\r\n }\r\n return payload;\r\n }\r\n previewModal(gridData:any, currentMenu:any, modalId:any) {\r\n const getpreviewHtml = {\r\n _id: gridData._id,\r\n data: this.getPaylodWithCriteria(currentMenu.name, '', [], '')\r\n }\r\n this.apiService.GetPreviewHtml(getpreviewHtml);\r\n const alertData = {\r\n gridData: gridData,\r\n currentPage: currentMenu.name\r\n }\r\n this.modalService.open(modalId, alertData);\r\n }\r\n preview(gridData:any, currentMenu:any, modalId:any) {\r\n const getpreviewHtml = {\r\n _id: gridData._id,\r\n data: this.getPaylodWithCriteria(currentMenu.name, '', [], '')\r\n }\r\n getpreviewHtml.data['data'] = gridData;\r\n this.apiService.GetPreviewHtml(getpreviewHtml);\r\n }\r\n}\r\n","import { ApiCallService } from './../../api/api-call/api-call.service';\r\nimport { Injectable,OnInit} from '@angular/core';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { StorageService } from '../../storage/storage.service';\r\nimport { StorageTokenStatus } from '../../../shared/enums/storage-token-status.enum';\r\nimport { Router } from '@angular/router';\r\nimport { EncryptionService } from '../../encryption/encryption.service';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { ApiService } from '../api.service';\r\nimport { CoreFunctionService } from '../../common-utils/core-function/core-function.service';\r\nimport { AuthDataShareService } from '../../data-share/auth-data-share/auth-data-share.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService implements OnInit{\r\n\r\n\r\n constructor(\r\n private http:HttpClient,\r\n private envService:EnvService,\r\n private apiService:ApiService,\r\n private storageService:StorageService,\r\n private router:Router,\r\n private encryptionService:EncryptionService,\r\n private commonFunctionService:CommonFunctionService,\r\n private coreFunctionService:CoreFunctionService,\r\n private authDataShareService: AuthDataShareService,\r\n private apiCallService:ApiCallService\r\n ) { }\r\n\r\n\r\n ngOnInit(){\r\n\r\n }\r\n\r\n Logout(payload:any){\r\n this.resetData();\r\n this.logOutRedirection();\r\n this.authDataShareService.restSettingModule('logged_out');\r\n }\r\n SessionExpired(payload?:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: ''\r\n };\r\n this.resetData();\r\n this.logOutRedirection();\r\n response.class = \"bg-info\";\r\n response.status = \"success\";\r\n response.msg = \"Session Expired, Kindly Login Again.\";\r\n this.authDataShareService.setSessionExpired(response);\r\n if(this.storageService.checkPlatForm() != 'mobile'){\r\n this.authDataShareService.restSettingModule('logged_out');\r\n }\r\n }\r\n resetData(){\r\n this.storageService.removeDataFormStorage();\r\n this.apiService.resetMenuData();\r\n this.apiService.resetTempData();\r\n this.apiService.resetGridData();\r\n this.envService.setRequestType('PUBLIC');\r\n this.apiCallService.getApplicationAllSettings();\r\n }\r\n logOutRedirection(){\r\n if (this.envService.checkRedirectionUrl()) {\r\n window.location.href = this.envService.checkRedirectionUrl();\r\n }else{\r\n this.redirectToSignPage();\r\n }\r\n }\r\n gotToSigninPage(){\r\n this.resetData()\r\n this.redirectToSignPage();\r\n }\r\n\r\n GetUserInfoFromToken(payload:any, loginRedirect?:string){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: ''\r\n };\r\n let api = \"\";\r\n let reqBody = {};\r\n if(payload && payload.roleName && payload.roleName != ''){\r\n api = this.envService.getAuthApi('GET_USER_PERMISSION')+\"/\"+payload.roleName;\r\n reqBody = { key: payload.token };\r\n }else{\r\n api = this.envService.getAuthApi('GET_USER_PERMISSION')+\"/\"+null;\r\n reqBody = { key: payload };\r\n }\r\n\r\n this.http.post(api, reqBody).subscribe(\r\n (respData:any) =>{\r\n if (respData && respData.user) {\r\n let modifyData = this.coreFunctionService.getModulesFromMapObject(respData);\r\n this.storageService.SetUserInfo(modifyData);\r\n this.storageService.GetUserInfo();\r\n this.envService.setRequestType('PRIVATE');\r\n this.apiCallService.getApplicationAllSettings();\r\n this.authDataShareService.restSettingModule('logged_in');\r\n this.apiService.gitVersion('');\r\n this.apiCallService.getUserPrefrerence(respData.user);\r\n // this.apiCallService.getUserNotification(1);\r\n this.redirectionWithMenuType(loginRedirect);\r\n response.status = \"success\";\r\n this.authDataShareService.setUserInfo(response);\r\n } else {\r\n this.envService.setRequestType('PUBLIC');\r\n this.redirectToSignPage();\r\n }\r\n },\r\n (error)=>{\r\n if(error.status == 403){\r\n this.envService.setRequestType('PUBLIC');\r\n this.redirectToSignPage();\r\n }else{\r\n if(error && error.status == 403){\r\n response.msg = 'Username password does not match.';\r\n }else if(error && error.error && error.error.message){\r\n response.msg = error.error.message;\r\n }else{\r\n response.msg = error.message;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.setUserInfo(response);\r\n }\r\n }\r\n )\r\n }\r\n redirectionWithMenuType(loginRedirectUrl?:string){\r\n const menuType = this.storageService.GetMenuType();\r\n const redirectUrl = this.storageService.getRedirectUrl();\r\n const childWindowUrl = this.storageService.getChildWindowUrl();\r\n let route = '/dashboard';\r\n if(menuType == 'Horizontal'){\r\n route = '/home';\r\n }\r\n if(redirectUrl && redirectUrl != '' && redirectUrl != '/'){\r\n route = redirectUrl;\r\n }else if(childWindowUrl && childWindowUrl != '' && childWindowUrl != '/'){\r\n route = childWindowUrl;\r\n }else if(loginRedirectUrl && loginRedirectUrl != '' && loginRedirectUrl != '/'){\r\n route = loginRedirectUrl;\r\n }\r\n this.router.navigate([route]);\r\n }\r\n redirectToSignPage(){\r\n this.router.navigate(['/signin']);\r\n }\r\n Signin(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: '',\r\n message:'',\r\n wrongLoginAttempt:0\r\n };\r\n let api = this.envService.getAuthApi('AU_SIGNIN');\r\n this.http.post(api, this.encryptionService.encryptRequest(payload)).subscribe(\r\n (respData:any) =>{\r\n if(respData && respData['token']){\r\n const cognitoIdToken = respData['token'];\r\n const cognitoExpiresIn = 86400;\r\n // const cognitoExpiresIn = 420;\r\n this.storageService.setExpiresIn(cognitoExpiresIn);\r\n this.storageService.SetIdToken(cognitoIdToken);\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n response.msg = 'Login Successful.';\r\n if(respData['message']){\r\n response.message = respData['message'];\r\n }\r\n this.authDataShareService.setAuthentication(true);\r\n } else if(respData && respData['message']){\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n response.msg = respData['message'];\r\n response.wrongLoginAttempt = respData?.wrongLoginAttempt;\r\n }else if (respData.hasOwnProperty('error')) {\r\n if (respData[\"error\"] == \"not_confirmed\") {\r\n response.msg = 'User Not Confirmed ';\r\n } else if (respData[\"error\"] == \"user_name_password_does_not_match\") {\r\n response.msg = 'Username password does not match ';\r\n }else {\r\n response.msg = 'Username password does not match ';\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n response.wrongLoginAttempt = respData?.wrongLoginAttempt;\r\n }\r\n this.authDataShareService.setSigninResponse(response);\r\n },\r\n (error)=>{\r\n if(error && error.status == 403){\r\n console.log(\"Sign In first error handling.\" + JSON.stringify(error));\r\n response.msg = 'Username password does not match.';\r\n }else if(error && error.error && error.error.message){\r\n console.log(\"Sign In Secong error handling.\" + JSON.stringify(error));\r\n response.msg = error.error.message;\r\n response.wrongLoginAttempt = error.error?.wrongLoginAttempt;\r\n }else{\r\n console.log(\"Sign In Third error handling.\" + JSON.stringify(error));\r\n response.msg = error.message;\r\n response.wrongLoginAttempt = error?.wrongLoginAttempt;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n\r\n this.authDataShareService.setSigninResponse(response);\r\n }\r\n )\r\n }\r\n Signup(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: '',\r\n appPresentAlert: false,\r\n autoLogin:false,\r\n payload: {}\r\n };\r\n let newPayload :any = '';\r\n let isHybridPlatform = false;\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n isHybridPlatform = true;\r\n newPayload = payload.data;\r\n }else{\r\n newPayload = payload;\r\n }\r\n let api = this.envService.getAuthApi('AU_SIGNUP');\r\n this.http.post(api, this.encryptionService.encryptRequest(newPayload)).subscribe(\r\n (respData:any) =>{\r\n if(respData && respData['message'] == 'User registered successfully'){\r\n if(payload.autologin && isHybridPlatform){\r\n response.msg = 'Successfully Registered.';\r\n response.autoLogin = payload.autologin;\r\n response.payload = { userId: newPayload.userId, password: newPayload.password };\r\n // this.Signin(appPayload);\r\n }else{\r\n if(this.envService.getVerifyType() == 'mobile'){\r\n response.msg = 'OTP has been sent to your registered Mobile no.';\r\n response.payload = { userId: newPayload.userId, password: newPayload.password };\r\n if(isHybridPlatform){\r\n response.appPresentAlert = true;\r\n // this.router.navigate([payload.redirection +'/'+payload.data.userId]);\r\n }else{\r\n // this.router.navigate(['otp_varify'+'/'+payload.userId]);\r\n }\r\n }else{\r\n if(newPayload.admin){\r\n response.msg = 'A verification link has been sent to your email account. If not received, please connect to admin to verify your email.';\r\n }else{\r\n response.msg = 'A verification link has been sent to your email account. please click on the link to verify your email and continue the registration process.';\r\n }\r\n response.appPresentAlert = true;\r\n }\r\n }\r\n } else if(respData && respData['message']){\r\n response.msg = respData['message'];\r\n }\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n this.authDataShareService.setSignUpResponse(response);\r\n },\r\n (error)=>{\r\n if(error && error.error && error.error.message){\r\n console.log(\"Sign In Secong error handling.\" + JSON.stringify(error));\r\n response.msg = error.error.message;\r\n }else{\r\n console.log(\"Sign In Third error handling.\" + JSON.stringify(error));\r\n response.msg = error.message;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.setSignUpResponse(response);\r\n }\r\n )\r\n }\r\n TryForgotPassword(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: ''\r\n };\r\n let api = this.envService.getAuthApi('AUTH_FORGET_PASSWORD');\r\n this.http.post(api, this.encryptionService.encryptRequest(payload)).subscribe(\r\n (respData:any) =>{\r\n if(respData && respData['message']){\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n response.msg = respData['message'];\r\n }\r\n this.authDataShareService.setForgot(response);\r\n },\r\n (error)=>{\r\n if(error && error.error && error.error.message){\r\n response.msg = error.error.message;\r\n }else{\r\n response.msg = error.message;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.setForgot(response);\r\n }\r\n )\r\n }\r\n SaveNewPassword(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: ''\r\n };\r\n let api = this.envService.getAuthApi('AUTH_RESET_PASSWORD');\r\n this.http.post(api, this.encryptionService.encryptRequest(payload)).subscribe(\r\n (respData:any) =>{\r\n if(respData && respData['message']){\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n response.msg = respData['message'];\r\n }\r\n this.authDataShareService.resetPassword(response);\r\n },\r\n (error)=>{\r\n if(error && error.error && error.error.message){\r\n response.msg = error.error.message;\r\n }else{\r\n response.msg = error.message;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.resetPassword(response);\r\n }\r\n )\r\n }\r\n ResetPass(payload:any){\r\n let api = this.envService.getAuthApi('RESET_PASSWORD');\r\n this.http.post(api,this.encryptionService.encryptRequest(payload)).subscribe(\r\n (respData:any) =>{\r\n if (respData && respData.hasOwnProperty('success')) {\r\n // this.notificationService.notify(\"bg-success\", \" New Password Set Successfully.\");\r\n this.router.navigate(['/admin']);\r\n } else if (respData.hasOwnProperty('error')) {\r\n if (respData[\"error\"] == \"not_confirmed\") {\r\n // this.notificationService.notify(\"bg-danger\", \"User Not Confirmed \");\r\n } else if (respData[\"error\"] == \"user_name_password_does_not_match\") {\r\n // this.notificationService.notify(\"bg-danger\", \"Username password does not match \");\r\n }\r\n }\r\n },\r\n (error)=>{\r\n // this.notificationService.notify(\"bg-danger\", error.message);\r\n }\r\n )\r\n }\r\n TryVerify(payload:object){\r\n console.log(payload);\r\n }\r\n changePassword(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: ''\r\n };\r\n let api = this.envService.getAuthApi('AUTH_CHANGE_PASSWORD')\r\n this.http.post(api, this.encryptionService.encryptRequest(payload)).subscribe(\r\n (respData:any) => {\r\n if(respData && respData['message']){\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n response.msg = respData['message'];\r\n }\r\n this.authDataShareService.setChangePwd(response);\r\n },\r\n (error) => {\r\n if(error && error.status == 403){\r\n response.msg = \"Invalid current password.\";\r\n }else if(error && error.error && error.error.message){\r\n response.msg = error.error.message;\r\n }else{\r\n response.msg = error.message;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.setChangePwd(response);\r\n }\r\n )\r\n }\r\n userVarify(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: '',\r\n autoLogin:false,\r\n };\r\n let newPayload :any = '';\r\n let isHybridPlatform = false;\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n isHybridPlatform = true;\r\n newPayload = payload.data;\r\n }else{\r\n newPayload = payload;\r\n }\r\n let api = this.envService.getAuthApi('USER_VARIFY');\r\n this.http.post(api, this.encryptionService.encryptRequest(newPayload)).subscribe(\r\n (respData:any) =>{\r\n if(respData && respData['message'] == \"User has been verified successfully\"){\r\n response.msg = respData['message'];\r\n if(payload.autologin){\r\n response.autoLogin = payload.autologin;\r\n }\r\n // if(this.storageService.getVerifyType() == 'mobile'){\r\n // }\r\n }else if(respData && respData['message']){\r\n response.msg = respData['message'];\r\n }\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n this.authDataShareService.setOtpResponse(response);\r\n },\r\n (error)=>{\r\n if(error && error.error && error.error.message){\r\n response.msg = error.error.message;\r\n }else{\r\n response.msg = error.message;\r\n }\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.setOtpResponse(response);\r\n }\r\n )\r\n }\r\n checkIdTokenStatus(){\r\n let statusWithMsg={\r\n \"status\":false,\r\n \"msg\" : \"\"\r\n };\r\n if (this.storageService != null && this.storageService.GetIdToken() != null) {\r\n if(this.storageService.GetIdTokenStatus() == StorageTokenStatus.ID_TOKEN_ACTIVE){\r\n statusWithMsg.status = true;\r\n }else{\r\n statusWithMsg.status = false;\r\n this.SessionExpired();\r\n }\r\n }else{\r\n statusWithMsg.status=false;\r\n statusWithMsg.msg=\"Your are already logout !!!\";\r\n }\r\n return statusWithMsg;\r\n }\r\n checkApplicationSetting(){\r\n let exists = false;\r\n let applicationSetting = this.storageService.getApplicationSetting();\r\n if(applicationSetting){\r\n exists = true;\r\n }else{\r\n exists = false;\r\n }\r\n return exists;\r\n }\r\n\r\n authenticateUser(payload:any){\r\n let response = {\r\n status: '',\r\n class: '',\r\n msg: '',\r\n message:''\r\n };\r\n let api = this.envService.getAuthApi('TWO_FACTOR_AUTHENTICATION');\r\n this.http.post(api, this.encryptionService.encryptRequest(payload)).subscribe(\r\n (respData:any) =>{\r\n if(respData && respData['token']){\r\n const cognitoIdToken = respData['token'];\r\n const cognitoExpiresIn = 86400;\r\n this.storageService.setExpiresIn(cognitoExpiresIn);\r\n this.storageService.SetIdToken(cognitoIdToken);\r\n response.status = 'success';\r\n response.class = 'bg-success';\r\n response.msg = 'Login Successful.';\r\n if(respData['message']){\r\n response.message = respData['message'];\r\n }\r\n this.authDataShareService.setAuthentication(true);\r\n this.authDataShareService.setAuthenticationResponce(response);\r\n }\r\n },\r\n (error)=>{\r\n response.msg = error.message;\r\n response.status = 'error';\r\n response.class = 'bg-danger';\r\n this.authDataShareService.setAuthenticationResponce(response);\r\n }\r\n )\r\n }\r\n}\r\n","import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from \"@angular/router\";\r\nimport { Injectable } from '@angular/core';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { AuthService } from \"./auth.service\";\r\nimport { StorageService } from \"../../storage/storage.service\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate{\r\n \r\n constructor(\r\n private storageService:StorageService,\r\n private router: Router,\r\n private authService:AuthService\r\n ){\r\n\r\n }\r\n \r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Promise<boolean>{\r\n // return this.dataShareService.getAuthentication().pipe(\r\n // map((data:boolean) =>{\r\n // return data;\r\n // })\r\n // );\r\n const childWindowUrl = this.storageService.getChildWindowUrl();\r\n if(state.url.startsWith(\"/browse\") && (childWindowUrl == undefined || childWindowUrl == '/')){\r\n this.storageService.setRedirectUrl(state.url);\r\n }\r\n var isAuthenticated = this.authService.checkIdTokenStatus().status;\r\n if (!isAuthenticated) { \r\n this.authService.redirectToSignPage();\r\n }\r\n return isAuthenticated;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { DataShareService } from '../../data-share/data-share.service';\r\nimport { EnvService } from '../../env/env.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonApiService {\r\n\r\n constructor(\r\n private dataShareService:DataShareService,\r\n private http:HttpClient,\r\n private envService:EnvService,\r\n ) { } \r\n\r\n SaveNavigation(payload:object){\r\n let api = this.envService.getApi('SAVE_NAVIGATION');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n console.log(respData)\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n\r\n GetNavigation(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setNavigationData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n\r\n SavePermission(payload:object){\r\n let api = this.envService.getApi('SAVE_PERMISSION');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n //this.dataShareService.setNavigationData(respData);\r\n console.log(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n GetPermission(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setPermissionData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n SaveInformation(payload:object){\r\n let api = this.envService.getApi('SAVE_QUOTE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setQuoteData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n ResetSave(){\r\n this.dataShareService.setQuoteData(null);\r\n }\r\n GetDepartments(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setDepartmentData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n \r\n GetCategory(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setCategoryData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n GetProductsByCategory(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setProductData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n GetTestParameter(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.dataShareService.setTestParameter(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n \r\n}\r\n","import { Injectable,EventEmitter } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocDataShareService {\r\n\r\n\r\n docData:Subject<any>= new BehaviorSubject<any>(null);\r\n vdrData:Subject<any>= new BehaviorSubject<any>(null);\r\n moveFolderData:Subject<any>= new BehaviorSubject<any>(null);\r\n moveFolderChild:Subject<any>= new BehaviorSubject<any>(null);\r\n uploadResponce:Subject<any>= new BehaviorSubject<any>(null);\r\n createFolderData:Subject<any>= new BehaviorSubject<any>(null);\r\n docAudit:Subject<any>= new BehaviorSubject<any>(null);\r\n docFiledownloadLink:Subject<any>= new BehaviorSubject<any>(null);\r\n docFileViewLink:Subject<any>= new BehaviorSubject<any>(null);\r\n docDeleteResponce:Subject<any>= new BehaviorSubject<any>(null);\r\n docShareResponce:Subject<any>= new BehaviorSubject<any>(null);\r\n folder:Subject<any>= new BehaviorSubject<any>(null);\r\n vdrPermission:Subject<any>= new BehaviorSubject<any>(null);\r\n\r\n\r\n // docData:Subject<any> = new Subject<any>();\r\n // vdrData:Subject<any>= new Subject<any>();\r\n // moveFolderData:Subject<any>= new Subject<any>();\r\n // moveFolderChild:Subject<any>= new Subject<any>();\r\n // uploadResponce:Subject<any>= new Subject<any>();\r\n // createFolderData:Subject<any>= new Subject<any>();\r\n // docAudit:Subject<any>= new Subject<any>();\r\n // docFiledownloadLink:Subject<any>= new Subject<any>();\r\n // docFileViewLink:Subject<any>= new Subject<any>();\r\n // docDeleteResponce:Subject<any>= new Subject<any>();\r\n // docShareResponce:Subject<any> = new Subject<any>();\r\n // folder:Subject<any> = new Subject<any>();\r\n // vdrPermission:Subject<any> = new Subject<any>();\r\n\r\n constructor() { }\r\n\r\n setDocData(data:object){\r\n this.docData.next(data);\r\n }\r\n setVdrData(vdrData:object){\r\n this.vdrData.next(vdrData);\r\n }\r\n setMoveFolderData(moveData:object){\r\n this.moveFolderData.next(moveData)\r\n }\r\n setMoveFolderChildData(moveChildData:object){\r\n this.moveFolderChild.next(moveChildData)\r\n }\r\n setDocUploadResponce(responce:object){\r\n this.uploadResponce.next(responce);\r\n }\r\n setCreateFolder(createFolderData:object){\r\n this.createFolderData.next(createFolderData);\r\n }\r\n setDocAudit(data:object){\r\n this.docAudit.next(data);\r\n }\r\n setDocFileDownloadLink(responce:string){\r\n this.docFiledownloadLink.next(responce);\r\n }\r\n setDocFileViewLink(responce:object){\r\n this.docFileViewLink.next(responce);\r\n }\r\n setDocDeleteResponce(responce:any){\r\n this.docDeleteResponce.next(responce);\r\n }\r\n setDocShareResponce(responce:object){\r\n this.docShareResponce.next(responce);\r\n }\r\n setFolderData(responce:object){\r\n this.folder.next(responce);\r\n }\r\n setVdrPermissionData(vdrData:object){\r\n this.vdrPermission.next(vdrData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { DocDataShareService } from '../../data-share/doc-data-share/doc-data-share.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocApiService {\r\n\r\n constructor(\r\n private http:HttpClient,\r\n private envService:EnvService,\r\n private docDataShare:DocDataShareService\r\n ) { }\r\n\r\n SearchDocData(payload:object){\r\n let api = this.envService.getApi('GET_CUSTOM_TEMPLATE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setDocData(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n // GetHomeVdr(payload){\r\n // let api = this.envService.getApi('GET_VDR_DATA');\r\n // this.http.post(api + '/' + payload.appId+ '/' + payload.refCode, payload.log).subscribe(\r\n // (respData) =>{\r\n // if(respData['success']){\r\n // this.docDataShare.setVdrData(respData['success']);\r\n // this.docDataShare.setMoveFolderData(respData['success']);\r\n // }\r\n // },\r\n // (error)=>{\r\n // console.log(error);\r\n // }\r\n // )\r\n // }\r\n\r\n\r\n GetHomeVdr(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData:any) =>{\r\n if(respData['success']){\r\n this.docDataShare.setVdrData(respData['success']);\r\n this.docDataShare.setMoveFolderData(respData['success']);\r\n }\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n \r\n GetHomeVdrBack(payload:any){\r\n let api = this.envService.getApi('GET_VDR_DATA');\r\n this.http.post(api + '/' + payload.appId+ '/' + payload.refCode, payload.log, payload.crList).subscribe(\r\n (respData:any) =>{\r\n if(respData['success']){\r\n this.docDataShare.setMoveFolderData(respData['success']);\r\n }\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n GetMoveFolderData(payload:object){\r\n let api = this.envService.getApi('GET_VDR_DATA');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setMoveFolderData(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n GetMoveFolderChild(payload:object){\r\n let api = this.envService.getApi('MOVE_FOLDER_CHILD');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setMoveFolderChildData(respData);\r\n this.docDataShare.setMoveFolderData(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n SaveUploadFile(payload:object){\r\n let api = this.envService.getApi('INSERT_FILE_AFTER_UPLOAD');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setDocUploadResponce(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n CreateFolder(payload:object){\r\n let api = this.envService.getApi('CREATE_FOLDER');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setCreateFolder(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n GetFolderChild(payload:object){\r\n let api = this.envService.getApi('MOVE_FOLDER_CHILD');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setVdrData(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n GetFolderChild1(payload:any){\r\n let api = this.envService.getApi('GET_GRID_DATA');\r\n this.http.post(api + '/' + payload.path, payload.data).subscribe(\r\n (respData) => {\r\n this.docDataShare.setVdrData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n\r\n // let api = this.envService.getApi('MOVE_FOLDER_CHILD');\r\n // this.http.post(api, payload).subscribe(\r\n // (respData) =>{\r\n // this.docDataShare.setVdrData(respData);\r\n // },\r\n // (error)=>{\r\n // console.log(error);\r\n // }\r\n // )\r\n }\r\n\r\n GetFolderByKey(payload:object){\r\n let api = this.envService.getApi('GET_CHILD_FOLDER_BY_KEY');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) =>{\r\n this.docDataShare.setVdrData(respData['success']); \r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n\r\n\r\n \r\n GetDocAudit(payload:object){\r\n let api = this.envService.getApi('GET_DOC_AUDIT');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setDocAudit(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n ResetAudit(){\r\n this.docDataShare.setDocAudit([]);\r\n }\r\n DocFileDownload(payload:object){\r\n let api = this.envService.getApi('DOC_FILE_DOWNLOAD');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) =>{\r\n this.docDataShare.setDocFileDownloadLink(respData['success']);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n SetDocFileAutditAfterDownload(payload:object){ \r\n let api = this.envService.getApi('SET_DOC_FILE_AUDIT_AFTER_DOWNLOAD');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) =>{\r\n this.docDataShare.setDocFileDownloadLink(respData['success']);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n ResetDownloadLink(){\r\n this.docDataShare.setDocFileDownloadLink('');\r\n }\r\n GetDocFileViewLink(payload:object){\r\n let api = this.envService.getApi('DOC_FILE_VIEW');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) =>{\r\n const data = respData['success'];\r\n this.docDataShare.setDocFileViewLink(data);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n DocDelete(payload:any){\r\n let api = this.envService.getApi('DOC_DELETE');\r\n this.http.post(api + payload.action + \"/\" + payload.projectMod, payload.data).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setDocDeleteResponce(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n ResetDeleteDocResponce(){\r\n this.docDataShare.setDocDeleteResponce(null);\r\n }\r\n GetBackFoldersByKey(payload:object){\r\n let api = this.envService.getApi('GET_CHILD_FOLDER_BY_KEY');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) =>{\r\n this.docDataShare.setMoveFolderChildData(respData);\r\n this.docDataShare.setMoveFolderData(respData['success']);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n GetBackHomeVdr(payload:object){\r\n let api = this.envService.getApi('GET_VDR_DATA');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setMoveFolderChildData(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n toShare(payload:object){\r\n let api = this.envService.getApi('DOC_SHARE');\r\n this.http.post(api, payload).subscribe(\r\n (respData) =>{\r\n this.docDataShare.setDocShareResponce(respData);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n getFoderByKey(payload:object){\r\n let api = this.envService.getApi('GET_FOLDER_BY_KEY');\r\n this.http.post(api, payload).subscribe(\r\n (respData:any) =>{\r\n this.docDataShare.setFolderData(respData['success']);\r\n },\r\n (error)=>{\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n\r\n\r\n SetDocPermission(payload:object){\r\n let api = this.envService.getApi('DOC_PERMISSION');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.docDataShare.setVdrPermissionData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Injectable,EventEmitter } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PublicDataShareService {\r\n\r\n saveContactUsData:Subject<any> = new Subject();\r\n saveCarrerWithUsData: Subject<any> = new Subject();\r\n staticData: Subject<any> = new BehaviorSubject<any>(null);\r\n\r\n constructor() { }\r\n\r\n setContactUsData(responce: Object){\r\n this.saveContactUsData.next(responce);\r\n }\r\n setCarrerwithUs(responce: Object){\r\n this.saveCarrerWithUsData.next(responce);\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { PublicDataShareService } from '../../data-share/public-data-share/public-data-share.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PublicApiService {\r\n\r\n constructor(\r\n private publicDataShare:PublicDataShareService,\r\n private http:HttpClient,\r\n private envService:EnvService,\r\n ) { }\r\n\r\n SaveContactUs(payload:any){\r\n let api = this.envService.getApi('PATAINT_REPORT');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.publicDataShare.setContactUsData(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n SaveCareerWithUs(payload:any){\r\n let api = this.envService.getApi('SAVE_CAREER_WITH_US');\r\n this.http.post(api, payload).subscribe(\r\n (respData) => {\r\n this.publicDataShare.setCarrerwithUs(respData);\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n ) \r\n }\r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable,EventEmitter } from '@angular/core';\r\nimport { json2csv } from 'json-2-csv';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChartService {\r\n\r\n filterRest:EventEmitter<any> = new EventEmitter<any>(false);\r\n constructor(\r\n private datePipe:DatePipe\r\n ) { }\r\n\r\n async getDownloadData(chart:any,object:any){\r\n let DataList:any = [];\r\n let fileName = object.name;\r\n let blobUrl :any = '';\r\n await chart.getData().then((chartdata: any) => {\r\n let data = chartdata.documents;\r\n let fields = chartdata.fields;\r\n if(data && data.length > 0){\r\n data.forEach((obj:any) => {\r\n let modifyObj:any = {};\r\n Object.keys(fields).forEach((key) => {\r\n const value = fields[key];\r\n const val = obj[key]\r\n if(val && val.constructor && val.constructor.name == \"Date\"){\r\n const format = object.dateFormat ? object.dateFormat : 'dd/MM/yyyy';\r\n modifyObj[value] = this.datePipe.transform(val,format);\r\n }else{\r\n modifyObj[value] = obj[key];\r\n }\r\n });\r\n DataList.push(modifyObj);\r\n });\r\n }\r\n if(DataList && DataList.length > 0){\r\n //blobUrl = this.downloadFile(DataList);\r\n let csvData = json2csv(DataList);\r\n blobUrl = this.createBlobUrl(csvData);\r\n }\r\n });\r\n return {\r\n url: blobUrl,\r\n name: fileName\r\n }\r\n\r\n }\r\n downloadFile(data: any) {\r\n const replacer = (key:any, value:any) => (value === null ? '' : value); // specify how you want to handle null values here\r\n const header = Object.keys(data[0]);\r\n const csv = data.map((row:any) =>\r\n header\r\n .map((fieldName) => JSON.stringify(row[fieldName], replacer))\r\n .join(',')\r\n );\r\n csv.unshift(header.join(','));\r\n const csvArray = csv.join('\\r\\n');\r\n return this.createBlobUrl(csvArray);\r\n }\r\n createBlobUrl(value:any){\r\n return new Blob([value], { type: 'text/csv' });\r\n }\r\n downlodBlobData(blob:any,fileName:string){\r\n const a = document.createElement('a');\r\n const url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n a.remove();\r\n }\r\n resetChartFilter(){\r\n this.filterRest.emit(true);\r\n }\r\n getFilterData(dashbord:any,formValue:any){\r\n let fields = dashbord.fields && dashbord.fields.length > 0 ? dashbord.fields : [];\r\n let filterValue = this.getMongochartFilterValue(fields,formValue);\r\n let filterData = this.getMongodbFilterObject(filterValue);\r\n return filterData;\r\n }\r\n getMongochartFilterValue(fields:any,object:any){\r\n let modifyObject:any = {};\r\n let objectCopy = JSON.parse(JSON.stringify(object));\r\n if(fields && fields.length > 0 && Object.keys(objectCopy).length > 0){\r\n fields.forEach((field:any) => {\r\n let key = field.field_name;\r\n if(object && object[key] && object[key] != ''){\r\n let newDateObjec:any = {};\r\n let date = new Date();\r\n switch (field.type) {\r\n case 'typeahead':\r\n if(objectCopy[key] && typeof objectCopy[key] == 'object'){\r\n modifyObject[key+'._id'] = objectCopy[key]._id;\r\n }else{\r\n modifyObject[key] = objectCopy[key];\r\n }\r\n break;\r\n case 'dropdown':\r\n if(field.datatype == \"object\"){\r\n if(field.multi_select){\r\n let idList:any = [];\r\n if(object[key] && object[key].length > 0){\r\n object[key].forEach((data:any) => {\r\n idList.push(data._id);\r\n });\r\n }\r\n if(idList && idList.length > 0){\r\n modifyObject[key+'._id'] = idList;\r\n }\r\n }else{\r\n modifyObject[key+'._id'] = objectCopy[key]._id;\r\n }\r\n }else{\r\n modifyObject[key] = objectCopy[key];\r\n }\r\n break;\r\n case 'date':\r\n let formateDate:any = this.datePipe.transform(objectCopy[key], 'yyyy-MM-dd');\r\n let selectedDate = new Date(formateDate);\r\n selectedDate.setTime(selectedDate.getTime()+(24*3600000));\r\n newDateObjec = {};\r\n date = new Date(formateDate);\r\n newDateObjec['$gt'] = date;\r\n newDateObjec['$lte'] = selectedDate;\r\n modifyObject[key] = newDateObjec;\r\n break;\r\n case 'daterange':\r\n if(object[key].start && object[key].end && object[key].start != '' && object[key].end != ''){\r\n let startDate:any = this.datePipe.transform(object[key].start,'yyyy-MM-dd');\r\n let endDate:any = this.datePipe.transform(object[key].end,'yyyy-MM-dd');\r\n let modifyEndDate = new Date(endDate);\r\n modifyEndDate.setTime(modifyEndDate.getTime()+(24*3600000));\r\n newDateObjec = {};\r\n newDateObjec['$gt'] = new Date(startDate);\r\n newDateObjec['$lte'] = new Date(modifyEndDate);\r\n modifyObject[key] = newDateObjec;\r\n }\r\n break;\r\n default:\r\n modifyObject[key] = objectCopy[key];\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n return modifyObject;\r\n }\r\n getMongodbFilterObject(data:any){\r\n let object:any = {};\r\n if(Object.keys(data).length > 0){\r\n Object.keys(data).forEach(key => {\r\n if(data[key] && data[key] != ''){\r\n object[key] = data[key];\r\n }\r\n });\r\n }\r\n return object;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { DataShareService } from '../data-share/data-share.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomvalidationService {\r\n\r\n constructor(\r\n private dataShareService:DataShareService\r\n ) { }\r\n\r\n patternValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n return null!;\r\n }\r\n const regex = new RegExp('^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[~!@#$%^&*?.=()-+])(?=.*?[0-9]).{8,}$');\r\n let valid = regex.test(control.value);\r\n let msg = \"Minimum 8 characters\";\r\n if(!valid){\r\n //let checkNo = new RegExp('^(?=.*?[0-9])$').test(control.value);\r\n if(!new RegExp('[0-9]').test(control.value)){\r\n msg = \"At least one number\";\r\n }else if(!new RegExp('[A-Z]').test(control.value)){\r\n msg = \"At least one uppercase letter\";\r\n }else if(!new RegExp('[~!@#$%^&*?.=()-+]').test(control.value)){\r\n msg = \"At least one special character\";\r\n }else if(!new RegExp('[a-z]').test(control.value)){\r\n msg = \"At least one lowercase letter\";\r\n }else{\r\n msg = \"Minimum 8 characters\";\r\n }\r\n }else if(this.checkCommonPassword(control.value)){\r\n valid = false\r\n msg = \"Common Passwords are not allowed\";\r\n }\r\n return valid ? null! : { invalidPassword: msg };\r\n };\r\n }\r\n checkCommonPassword(value:string){\r\n let check = false;\r\n let commonPasswordList = ['Test@123','Test@12345'];\r\n for (let index = 0; index < commonPasswordList.length; index++) {\r\n const element = commonPasswordList[index];\r\n if(element === value){\r\n check = true;\r\n break;\r\n }\r\n }\r\n return check;\r\n }\r\n checkDates(endDate: string, startDate: string) {\r\n return (formGroup: UntypedFormGroup) => {\r\n const startDateControl = formGroup.controls[startDate];\r\n const endDateControl = formGroup.controls[endDate];\r\n const date1 =new Date(startDateControl.value);\r\n const date2 =new Date(endDateControl.value);\r\n if(date1 > date2) {\r\n endDateControl.setErrors({ notValid: true });\r\n }else{\r\n endDateControl.setErrors(null);\r\n }\r\n }\r\n }\r\n\r\n MatchPassword(password: any, confirmPassword: any) {\r\n return (formGroup: UntypedFormGroup):any => {\r\n const passwordControl = formGroup.controls[password];\r\n const confirmPasswordControl = formGroup.controls[confirmPassword];\r\n\r\n if (!passwordControl || !confirmPasswordControl) {\r\n return null;\r\n }\r\n\r\n if (confirmPasswordControl.errors && !confirmPasswordControl.errors.passwordMismatch) {\r\n return null;\r\n }\r\n\r\n if (passwordControl.value !== confirmPasswordControl.value) {\r\n confirmPasswordControl.setErrors({ passwordMismatch: true });\r\n } else {\r\n confirmPasswordControl.setErrors(null);\r\n }\r\n }\r\n }\r\n\r\n userNameValidator(userControl: AbstractControl) {\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n if (this.validateUserName(userControl.value)) {\r\n resolve({ userNameNotAvailable: true });\r\n } else {\r\n resolve(null);\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n validateUserName(userName: string) {\r\n const UserList = ['ankit', 'admin', 'user', 'superuser'];\r\n return (UserList.indexOf(userName) > -1);\r\n }\r\n checkLimit(min: number, max: number): ValidatorFn {\r\n return (c: AbstractControl): { [key: string]: boolean } | null => {\r\n if (c.value && (isNaN(c.value) || c.value < min || c.value > max)) {\r\n return { 'range': true };\r\n }\r\n return null;\r\n };\r\n }\r\n isValidGSTNumber(control: AbstractControl): Promise<ValidationErrors | null> {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n let gstin = control.value;\r\n if (gstin == \"\" || gstin == null || gstin == undefined || (gstin.length == 2 && gstin.toUpperCase() == \"NA\")) {\r\n resolve( null );\r\n }\r\n if (gstin != null && gstin.length !== 15) {\r\n resolve({ invalidGSTNumber: true });\r\n }\r\n if (this.validatePattern(gstin)) {\r\n const check = gstin[14];\r\n const checkCondition = check === this.calcCheckSum(gstin.toUpperCase())\r\n if(checkCondition){\r\n resolve(null);\r\n const object = {\r\n \"name\" : \"gst_number\",\r\n \"value\" : control.value\r\n }\r\n this.dataShareService.setValidationCondition(object);\r\n }else{\r\n resolve({ invalidGSTNumber: true });\r\n const object = {\r\n \"name\" : \"invalid\"\r\n }\r\n this.dataShareService.setValidationCondition(object);\r\n }\r\n }\r\n resolve({ invalidGSTNumber: true });\r\n const object = {\r\n \"name\" : \"invalid\"\r\n }\r\n this.dataShareService.setValidationCondition(object);\r\n }, 1000);\r\n });\r\n }\r\n calcCheckSum(gstin:any) {\r\n var GSTN_CODEPOINT_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n var factor = 2;\r\n var sum = 0;\r\n var checkCodePoint = 0;\r\n var mod = GSTN_CODEPOINT_CHARS.length;\r\n var i;\r\n\r\n for (i = gstin.length - 2; i >= 0; i--) {\r\n var codePoint = -1;\r\n for (var j = 0; j < GSTN_CODEPOINT_CHARS.length; j++) {\r\n if (GSTN_CODEPOINT_CHARS[j] === gstin[i]) {\r\n codePoint = j;\r\n }\r\n }\r\n var digit = factor * codePoint;\r\n factor = factor === 2 ? 1 : 2;\r\n digit = Math.floor(digit / mod) + (digit % mod);\r\n sum += digit;\r\n }\r\n checkCodePoint = (mod - (sum % mod)) % mod;\r\n return GSTN_CODEPOINT_CHARS[checkCodePoint];\r\n }\r\n\r\n // GSTIN Regex validation result\r\n validatePattern(gstin:any) {\r\n // eslint-disable-next-line max-len\r\n // var gstinRegexPattern = /^([0-2][0-9]|[3][0-8])[A-Z]{3}[ABCFGHLJPTK][A-Z]\\d{4}[A-Z][A-Z0-9][Z][A-Z0-9]$/;\r\n const regex = new RegExp('^[0-9]{2}[A-Z]{4}[A-Z0-9]{1}[0-9]{4}[A-Z]{1}[1-9]{1}[A-Z]{1}[A-Z0-9]{1}$');\r\n const valid = regex.test(gstin);\r\n return valid;\r\n //return gstinRegexPattern.test(gstin);\r\n }\r\n isValidData(control: AbstractControl): Promise<ValidationErrors | null> {\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n let data = control.value;\r\n if (data == \"\" || data == null || data == undefined) {\r\n resolve( null );\r\n }else if(typeof data == 'object'){\r\n resolve(null);\r\n }else{\r\n resolve({ invaliData: true });\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CommonFunctionService } from '../common-utils/common-function.service';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FileHandlerService {\r\n\r\n constructor(\r\n private commonFunctionService:CommonFunctionService\r\n ) { }\r\n\r\n\r\n modifyUploadFiles(files:any){\r\n const fileList:any = [];\r\n if(files && files.length > 0){\r\n files.forEach((element:any) => {\r\n if(element._id){\r\n fileList.push(element)\r\n }else{\r\n if(element && element.uploadData){\r\n let file = element.uploadData[0];\r\n fileList.push(file);\r\n }else {\r\n fileList.push({uploadData:[element]})\r\n }\r\n }\r\n });\r\n }\r\n return fileList;\r\n }\r\n modifyFileSetValue(files:any){\r\n let fileName = '';\r\n let fileLength = files.length;\r\n let file = files[0];\r\n if(fileLength == 1 && (file.fileName || file.rollName)){\r\n fileName = file.fileName || file.rollName;\r\n }else if(fileLength > 1){\r\n fileName = fileLength + \" Files\";\r\n }\r\n return fileName;\r\n }\r\n getFileTooltipMsg(fileList:any){\r\n let msg = \"\";\r\n if(fileList.length > 0){\r\n fileList.forEach((element:any) => {\r\n if(msg != ''){\r\n msg = msg + '\\n' + element.fileName;\r\n }else{\r\n msg = element.fileName;\r\n }\r\n });\r\n }\r\n return msg;\r\n }\r\n updateFileUploadResponce(curFileUploadFieldparentfield:any,curFileUploadField:any,dataListForUpload:any,templateForm:any,tableFields:any,responceData:any){\r\n let responce ={\r\n dataListForUpload:dataListForUpload,\r\n templateForm:templateForm,\r\n tableFields:tableFields\r\n }\r\n let curFieldName = '';\r\n let parentIndex = -1;\r\n let curIndex = -1;\r\n if(curFileUploadField && curFileUploadField.field_name){\r\n curFieldName = curFileUploadField.field_name;\r\n parentIndex = curFileUploadField['parentIndex'];\r\n curIndex = curFileUploadField['curIndex'];\r\n }\r\n if(curFileUploadFieldparentfield != '' && curFieldName != ''){\r\n const custmizedKey = this.commonFunctionService.custmizedKey(curFileUploadFieldparentfield);\r\n\r\n if (!responce.dataListForUpload[custmizedKey]) responce.dataListForUpload[custmizedKey] = {};\r\n if (!responce.dataListForUpload[custmizedKey][curFieldName]) responce.dataListForUpload[custmizedKey][curFieldName] = [];\r\n responce.dataListForUpload[custmizedKey][curFieldName] = responceData;\r\n\r\n\r\n if(responce.dataListForUpload[custmizedKey][curFieldName] && responce.dataListForUpload[custmizedKey][curFieldName].length > 0){\r\n let fileName = \"\";\r\n if(curFileUploadField.type == 'input_with_uploadfile'){\r\n let fileList = responce.dataListForUpload[custmizedKey][curFieldName];\r\n fileName = this.modifyFileSetValue(fileList);\r\n let tooltipMsg = this.getFileTooltipMsg(fileList);\r\n responce.tableFields[parentIndex].list_of_fields[curIndex]['tooltipMsg'] = tooltipMsg;\r\n \r\n }\r\n\r\n (<UntypedFormGroup>responce.templateForm.controls[curFileUploadFieldparentfield.field_name]).controls[curFieldName].setValue(fileName);\r\n }else{\r\n (<UntypedFormGroup>responce.templateForm.controls[curFileUploadFieldparentfield.field_name]).controls[curFieldName].setValue('');\r\n if(curFileUploadField.type == 'input_with_uploadfile'){\r\n responce.tableFields[parentIndex].list_of_fields[curIndex]['tooltipMsg'] = '';\r\n }\r\n }\r\n\r\n }else{\r\n if(curFieldName != ''){\r\n if (!responce.dataListForUpload[curFieldName]) responce.dataListForUpload[curFieldName] = [];\r\n responce.dataListForUpload[curFieldName] = responceData;\r\n\r\n if(responce.dataListForUpload[curFieldName] && responce.dataListForUpload[curFieldName].length > 0){\r\n let fileList = responce.dataListForUpload[curFieldName];\r\n let fileName = this.modifyFileSetValue(fileList);\r\n if(curFileUploadField.type == 'input_with_uploadfile'){\r\n let tooltipMsg = this.getFileTooltipMsg(fileList);\r\n responce.tableFields[curIndex]['tooltipMsg'] = tooltipMsg;\r\n }\r\n responce.templateForm.controls[curFieldName].setValue(fileName);\r\n }else{\r\n responce.templateForm.controls[curFieldName].setValue('');\r\n if(curFileUploadField.type == 'input_with_uploadfile'){\r\n responce.tableFields[curIndex]['tooltipMsg'] = '';\r\n }\r\n }\r\n }\r\n }\r\n return responce;\r\n }\r\n removeAttachedDataFromList(parent:any,child:any,index:any,dataListForUpload:any){\r\n let fieldName = child.field_name;\r\n if(parent && parent != ''){\r\n let custmisedKey = this.commonFunctionService.custmizedKey(parent);\r\n dataListForUpload[custmisedKey][fieldName].splice(index,1);\r\n }else{\r\n dataListForUpload[fieldName].splice(index,1)\r\n }\r\n return dataListForUpload;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CoreFunctionService } from '../../common-utils/core-function/core-function.service';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { FileHandlerService } from '../../fileHandler/file-handler.service';\r\nimport { CheckIfService } from '../../check-if/check-if.service';\r\nimport { StorageService } from '../../storage/storage.service';\r\nimport { DatePipe,CurrencyPipe } from '@angular/common';\r\nimport { DataShareService } from '../../data-share/data-share.service';\r\nimport { ApiCallService } from '../../api/api-call/api-call.service';\r\nimport { ApiService } from '../../api/api.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GridCommonFunctionService {\r\n\r\nconstructor(\r\n private CommonFunctionService:CommonFunctionService,\r\n private coreFunctionService:CoreFunctionService,\r\n private fileHandlerService: FileHandlerService,\r\n private checkIfService:CheckIfService,\r\n private storageService:StorageService,\r\n private datePipe: DatePipe,\r\n private CurrencyPipe: CurrencyPipe,\r\n private dataShareService: DataShareService,\r\n private apiCallService:ApiCallService,\r\n private apiService:ApiService\r\n) { }\r\n modifyGridData(gridData:any,gridColumns:any,field:any,editableGridColumns:any,typographyCrList:any){\r\n let modifiedData = [];\r\n if(gridColumns.length > 0){\r\n for (let i = 0; i < gridData.length; i++) {\r\n const row = gridData[i];\r\n let modifyRow = this.rowModify(row,field,gridColumns,editableGridColumns,typographyCrList);\r\n modifiedData.push(modifyRow);\r\n }\r\n }\r\n return modifiedData;\r\n }\r\n rowModify(row:any,field:any,gridColumns:any,editableGridColumns:any,typographyCrList:any){\r\n let modifyRow = JSON.parse(JSON.stringify(row));\r\n modifyRow[\"disabled\"] = this.checkIfService.checkRowIf(row,field);\r\n for (let j = 0; j < gridColumns.length; j++) {\r\n const column = gridColumns[j];\r\n if(!column.editable || editableGridColumns.length == 0){\r\n modifyRow[column.field_name] = this.getValueForGrid(column,row);\r\n }\r\n modifyRow[column.field_name+\"_tooltip\"] = this.getValueForGridTooltip(column,row);\r\n if(column.editable){\r\n modifyRow[column.field_name+\"_disabled\"] = this.checkIfService.isDisableRow(column,row);\r\n if(column.type == 'file' && editableGridColumns.length > 0) {\r\n if(row && row[column.field_name] && this.CommonFunctionService.isArray(row[column.field_name]) && row[column.field_name].length > 0) {\r\n modifyRow[column.field_name] = this.fileHandlerService.modifyUploadFiles(row[column.field_name]);\r\n } else {\r\n modifyRow[column.field_name] = row[column.field_name];\r\n }\r\n }\r\n }\r\n }\r\n if(editableGridColumns && (editableGridColumns.length == 1 || (field && !field.grid_row_selection) || row.selected)){\r\n modifyRow[\"column_edit\"] = true;\r\n }else{\r\n modifyRow[\"column_edit\"] = false;\r\n }\r\n if(editableGridColumns && editableGridColumns.length == 0 && field && Object.keys(field).length > 0){\r\n modifyRow['actionBtnDisplay'] = this.checkRowDisabledIf(field,row);\r\n }\r\n if(typographyCrList && typographyCrList.length > 0){\r\n modifyRow['background-color'] = this.checkTypgraphCondition(typographyCrList,row,'background-color');\r\n }\r\n return modifyRow;\r\n }\r\n\r\n getListByKeyValueToList(list:any,key:string,value:any){\r\n let getlist = [];\r\n for (let i = 0; i < list.length; i++) {\r\n const element = list[i];\r\n if(element && element[key] == value){\r\n getlist.push(element);\r\n }\r\n }\r\n return getlist;\r\n }\r\n modifyGridColumns(gridColumns:any,parentObject:any){\r\n let modifyGridColumns = [];\r\n if(gridColumns && gridColumns.length > 0){\r\n modifyGridColumns = this.CommonFunctionService.updateFieldInList('display',gridColumns);\r\n for (let i = 0; i < modifyGridColumns.length; i++) {\r\n const field = modifyGridColumns[i];\r\n if (this.coreFunctionService.isNotBlank(field.show_if)) {\r\n if (!this.checkIfService.showIf(field, parentObject)) {\r\n field['display'] = false;\r\n field['show'] = true;\r\n } else {\r\n if(field.hide != undefined && field.hide){\r\n field['display'] = false;\r\n }else{\r\n field['display'] = true;\r\n }\r\n }\r\n } else {\r\n if(field && field.hide) {\r\n field['display'] = false;\r\n }\r\n else{\r\n field['display'] = true;\r\n }\r\n }\r\n if(field['field_class']){\r\n field['field_class'] = field['field_class'].trim();\r\n }\r\n field['width'] = this.getGridColumnWidth(field,gridColumns);\r\n if(field && field.type && field.type !=''){\r\n switch(field.type.toLowerCase()){\r\n case \"info\":\r\n case \"html\" :\r\n case \"file\":\r\n case \"template\":\r\n case \"image\":\r\n case \"icon\":\r\n case \"download_file\":\r\n case \"redirect\":\r\n case \"color\":\r\n field['hideCopy']=true;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n }\r\n return modifyGridColumns;\r\n }\r\n getGridColumnWidth(column:any,listOfGridFieldName:any) {\r\n if (column.width && column.width != '0') {\r\n return column.width;\r\n }\r\n // else {\r\n // if (listOfGridFieldName.length > 8) {\r\n // return '150px';\r\n // }\r\n else {\r\n return '';\r\n }\r\n // }\r\n }\r\n updateGridDataToModifiedData(grid_row_selection:any,gridData:any,modifiedGridData:any,listOfGridFieldName:any){\r\n let gridSelectedData:any = [];\r\n let modifiedSelectedData:any = [];\r\n if (grid_row_selection == false) {\r\n gridSelectedData = [...gridData];\r\n modifiedSelectedData = [...modifiedGridData];\r\n }\r\n else {\r\n gridSelectedData = this.getListByKeyValueToList(gridData,\"selected\",true);\r\n modifiedSelectedData = this.getListByKeyValueToList(modifiedGridData,\"selected\",true);\r\n }\r\n if(listOfGridFieldName.length > 0){\r\n gridSelectedData.forEach((data:any,i:number) => {\r\n listOfGridFieldName.forEach((column:any) => {\r\n if(column.editable || column.type == 'number'){\r\n switch (column.type) {\r\n case 'file':\r\n gridSelectedData[i][column.field_name] = this.fileHandlerService.modifyUploadFiles(modifiedSelectedData[i][column.field_name]);\r\n break\r\n default:\r\n gridSelectedData[i][column.field_name] = modifiedSelectedData[i][column.field_name];\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n return gridSelectedData;\r\n }\r\n\r\n applyOnGridFilter(field:any) {\r\n if (field && field.etc_fields && field.etc_fields.on_grid_filter === 'false') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n applyOnGridFilterLabel(field:any) {\r\n if (field && field.etc_fields && field.etc_fields.on_grid_filter_label != '') {\r\n return field.etc_fields.on_grid_filter_label;\r\n }\r\n return \"Search Parameter ...\";\r\n }\r\n modifyTableFields(tablefields:any){\r\n\r\n }\r\n gridDataModify(modifyData:any,data:any,fields:any,field_name:any,key:any,object:any){\r\n let modifyObject = {\r\n \"modifyData\" : modifyData,\r\n \"fields\" : fields,\r\n \"field_index\" : -1\r\n };\r\n if(fields && fields.length > 0){\r\n for (let i = 0; i < fields.length; i++) {\r\n const element = fields[i];\r\n const type = element.type;\r\n const fieldName = element.field_name;\r\n if(type && type.startsWith(key) && field_name == fieldName){\r\n if(element && fieldName && data && data[fieldName]){\r\n const cData = data[fieldName];\r\n if(Array.isArray(cData) && cData.length > 0){\r\n const gridColumns = element.gridColumns;\r\n let typographyCrList = [];\r\n if(element['colorCriteria'] && element['colorCriteria'].length > 0){\r\n typographyCrList = element['colorCriteria'];\r\n }\r\n const modifyList = this.modifyGridData(cData,gridColumns,element,[],typographyCrList);\r\n modifyData[fieldName] = modifyList;\r\n element.gridColumns = this.modifyGridColumns(gridColumns,object);\r\n modifyObject.field_index = i;\r\n }else {\r\n modifyData[fieldName] = cData;\r\n }\r\n }\r\n }else if(type && type.startsWith('list_of_fields') && element.datatype == \"list_of_object_with_popup\" && field_name == fieldName){\r\n if(element && fieldName && data && data[fieldName]){\r\n const cData = data[fieldName];\r\n if(Array.isArray(cData) && cData.length > 0){\r\n const gridColumns = element.list_of_fields;\r\n const modifyList = this.modifyListofFieldsData({},cData,gridColumns)['data'];\r\n modifyData[fieldName] = modifyList;\r\n modifyObject.field_index = i;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n modifyObject.modifyData = modifyData;\r\n modifyObject.fields = fields;\r\n return modifyObject;\r\n }\r\n\r\n modifyListofFieldsData(parentField:any,data:any,fields:any){\r\n let modifyListoffieldObject:any = {};\r\n let modifyData = [];\r\n if(fields && fields.length > 0 && data && data.length > 0){\r\n for (let index = 0; index < data.length; index++) {\r\n const object = data[index];\r\n const mObject = this.getModifyListOfFieldsObject(parentField,object,fields);\r\n modifyData.push(mObject);\r\n }\r\n modifyListoffieldObject['data'] = modifyData;\r\n }\r\n return modifyListoffieldObject;\r\n }\r\n getModifyListOfFieldsObject(parentField:any,object:any,fields:any){\r\n let mObject:any = {};\r\n if(fields && fields.length > 0){\r\n for (let index = 0; index < fields.length; index++) {\r\n const element = fields[index];\r\n let fieldName = element.field_name;\r\n mObject[fieldName] = this.showListFieldValue(object,element);\r\n }\r\n mObject['actionBtnDisplay'] = this.checkRowDisabledIf(parentField,object);\r\n }\r\n return mObject;\r\n }\r\n showListFieldValue(listOfField:any, item:any) {\r\n switch (item.type) {\r\n case \"typeahead\":\r\n if(item.datatype == \"list_of_object\"){\r\n if (Array.isArray(listOfField[item.field_name]) && listOfField[item.field_name].length > 0 && listOfField[item.field_name] != null && listOfField[item.field_name] != undefined && listOfField[item.field_name] != '') {\r\n item['hideCopy']=true;\r\n return '<i class=\"fa fa-eye cursor-pointer\"></i>';\r\n } else {\r\n return '-';\r\n }\r\n }else if(item.datatype == \"object\"){\r\n if (item.display_name && item.display_name != \"\") {\r\n return this.CommonFunctionService.getObjectValue(item.display_name, listOfField);\r\n } else {\r\n return listOfField[item.field_name];\r\n }\r\n }\r\n else if(item.datatype == \"text\"){\r\n if (item.display_name && item.display_name != \"\") {\r\n return this.CommonFunctionService.getObjectValue(item.display_name, listOfField);\r\n } else {\r\n return listOfField[item.field_name];\r\n }\r\n }\r\n break;\r\n case \"list_of_string\":\r\n case \"list_of_checkbox\":\r\n case \"grid_selection\":\r\n case \"list_of_fields\":\r\n if (Array.isArray(listOfField[item.field_name]) && listOfField[item.field_name].length > 0 && listOfField[item.field_name] != null && listOfField[item.field_name] != undefined && listOfField[item.field_name] != '') {\r\n item['hideCopy']=true;\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"material-symbols-outlined cursor-pointer\">visibility</span>';\r\n }else{\r\n return '<i class=\"fa fa-eye cursor-pointer\"></i>';\r\n }\r\n } else {\r\n return '-';\r\n }\r\n case \"checkbox\":\r\n let value:any = false;\r\n if (item.display_name && item.display_name != \"\") {\r\n value = this.CommonFunctionService.getObjectValue(item.display_name, listOfField);\r\n } else {\r\n value = this.getValueForGrid(item,listOfField);\r\n }\r\n return value ? \"Yes\" : \"No\";\r\n default:\r\n if (item.display_name && item.display_name != \"\") {\r\n return this.CommonFunctionService.getObjectValue(item.display_name, listOfField);\r\n } else {\r\n return this.getValueForGrid(item,listOfField);\r\n }\r\n }\r\n\r\n }\r\n checkRowDisabledIf(field:any,data:any){\r\n if(field && field.disableRowIf && field.disableRowIf != ''){\r\n const condition = field.disableRowIf;\r\n if(condition){\r\n if(field.disableRowIfOnlySelection){\r\n return true;\r\n }else{\r\n return !this.checkIfService.checkDisableRowIf(condition,data);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n checkTypgraphCondition(typographyCrList:any,object:any,name:any){\r\n let background = '';\r\n if(typographyCrList && typographyCrList.length >= 1){\r\n let criteriaMatched = false;\r\n let matchedelement:any = {};\r\n for (let index = 0; index < typographyCrList.length; index++) {\r\n const element = typographyCrList[index];\r\n let crList = element['crList'];\r\n let childConditionsMatched = false;\r\n for (let j = 0; j < crList.length; j++) {\r\n const child = crList[j];\r\n let modify = child.replaceAll(';', \"#\");\r\n if(!this.checkIfService.checkIfConditionForArrayListValue(modify,object)){\r\n childConditionsMatched = false;\r\n break;\r\n }else{\r\n childConditionsMatched = true;\r\n }\r\n }\r\n if(childConditionsMatched){\r\n matchedelement = typographyCrList[index]\r\n criteriaMatched = true;\r\n break;\r\n }else{\r\n criteriaMatched = false;\r\n }\r\n }\r\n if(criteriaMatched){\r\n let typograpy = matchedelement['typoGraphy'];\r\n let value = '';\r\n switch (name) {\r\n case 'background-color':\r\n value = typograpy['background_color'];\r\n break;\r\n default:\r\n break;\r\n }\r\n background = value;\r\n }\r\n }\r\n return background;\r\n }\r\n modifiedGridColumns(gridColumns:any,selectedRow:any,formValue:any){\r\n if(gridColumns.length > 0){\r\n gridColumns.forEach((field:any) => {\r\n if(this.coreFunctionService.isNotBlank(field.show_if)){\r\n if(!this.checkIfService.checkShowIf(field,selectedRow,formValue)){\r\n field['display'] = false;\r\n }else{\r\n field['display'] = true;\r\n }\r\n }else{\r\n field['display'] = true;\r\n }\r\n });\r\n }\r\n return gridColumns;\r\n }\r\n checkGridSelectionMendetory(gridSelectionMendetoryList:any,selectedRow:any,formValue:any,custmizedFormValue:any){\r\n let validation = {\r\n 'status' : true,\r\n 'msg' : ''\r\n }\r\n if(gridSelectionMendetoryList && gridSelectionMendetoryList.length > 0){\r\n let check = 0;\r\n gridSelectionMendetoryList.forEach((field:any) => {\r\n let data:any = [];\r\n if(custmizedFormValue[field.field_name]){\r\n data = custmizedFormValue[field.field_name];\r\n }\r\n if(field.mendetory_fields && field.mendetory_fields.length > 0){\r\n field.mendetory_fields = this.modifiedGridColumns(field.mendetory_fields,selectedRow,formValue)\r\n if(data && data.length > 0){\r\n field.mendetory_fields.forEach((mField:any) => {\r\n const fieldName = mField.field_name;\r\n if(mField.display){\r\n data.forEach((row:any) => {\r\n if(row && row[fieldName] == undefined || row[fieldName] == '' || row[fieldName] == null){\r\n if(validation.msg == ''){\r\n validation.msg = mField.label + ' of ' + field.label+' is required.';\r\n }\r\n check = 1;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n if(check != 0){\r\n validation.status = false;\r\n return validation;\r\n }else{\r\n return validation\r\n }\r\n }else{\r\n return validation;\r\n }\r\n }\r\n\r\n getGridSelectedData(data:any,field:any){\r\n let responce:any ={\r\n gridSelectedData:[],\r\n customEntryData:[]\r\n }\r\n if(data && data.length > 0 && field.add_new_enabled){\r\n data.forEach((grid:any) => {\r\n if(grid && grid.customEntry){\r\n responce.customEntryData[field.field_name].push(grid);\r\n }else{\r\n responce.gridSelectedData.push(grid);\r\n }\r\n });\r\n }else {\r\n responce.gridSelectedData = data;\r\n }\r\n return responce;\r\n }\r\n getModifiedGridColumns(gridColumns:any,object:any){\r\n if(gridColumns.length > 0){\r\n gridColumns.forEach((field:any) => {\r\n if(this.coreFunctionService.isNotBlank(field.show_if)){\r\n if(!this.checkIfService.showIf(field,object)){\r\n field['display'] = false;\r\n }else{\r\n field['display'] = true;\r\n }\r\n }else{\r\n field['display'] = true;\r\n }\r\n });\r\n }\r\n return gridColumns;\r\n }\r\n\r\n isDate(date:any) {\r\n let dateValue:any = new Date(date);\r\n return (dateValue !== \"Invalid Date\") && !isNaN(dateValue);\r\n }\r\n\r\n getValueForGrid(field:any, object:any) {\r\n let value:any = '';\r\n let fieldName: any= '';\r\n if (field) {\r\n if(this.coreFunctionService.isNotBlank(field.display_name)){\r\n fieldName= field.display_name;\r\n }\r\n else if(this.coreFunctionService.isNotBlank(field.field_name)){\r\n fieldName= field.field_name;\r\n }\r\n }\r\n if(fieldName !=''){\r\n value= this.CommonFunctionService.getObjectValue(fieldName, object)\r\n }\r\n if (!field.type) field.type = \"Text\";\r\n let returnValue:any = '';\r\n switch (field.type.toLowerCase()) {\r\n case 'datetime':\r\n if(value && value != ''){\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n returnValue = this.datePipe.transform(value, 'medium');\r\n }else{\r\n returnValue = this.datePipe.transform(value, 'dd/MM/yyyy h:mm a');\r\n }\r\n }\r\n return returnValue\r\n case 'date':\r\n case 'daterange':\r\n if(value && value != ''){\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n returnValue = this.datePipe.transform(value, 'mediumDate');\r\n }else{\r\n returnValue = this.datePipe.transform(value, 'dd/MM/yyyy');\r\n }\r\n }\r\n return returnValue;\r\n case 'time': return this.isDate(value) ? this.datePipe.transform(value, 'h:mm a') : value;\r\n case \"boolean\": return value ? \"Yes\" : \"No\";\r\n case \"currency\": return this.CurrencyPipe.transform(value, 'INR');\r\n \t case \"dropdown\": return value && value.name ? value.name : value;\r\n case \"typeahead\": return value && value.name ? value.name : value;\r\n case \"info\":\r\n if (value && value != '') {\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"material-symbols-outlined cursor-pointer\">visibility</span>';\r\n }else{\r\n return '<i class=\"fa fa-eye cursor-pointer\"></i>';\r\n }\r\n } else {\r\n return '-';\r\n }\r\n\r\n case \"html\" :\r\n if (value && value != '') {\r\n return '<span class=\"material-icons cursor-pointer\">preview</span>';\r\n } else {\r\n return '-';\r\n }\r\n case \"file\":\r\n case \"file_with_preview\":\r\n case \"file_with_print\":\r\n if (value && value != '') {\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"material-symbols-outlined cursor-pointer\">text_snippet</span>';\r\n }else{\r\n return '<span class=\"material-icons cursor-pointer\">text_snippet</span>';\r\n }\r\n } else {\r\n return '-';\r\n }\r\n case \"template\":\r\n if (value && value != '') {\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"material-symbols-outlined\">description</span>';\r\n }else{\r\n return '<i class=\"fa fa-file cursor-pointer\" aria-hidden=\"true\"></i>';\r\n }\r\n } else {\r\n return '-';\r\n }\r\n case \"image\":\r\n return '<img src=\"data:image/jpg;base64,' + value + '\" />';\r\n case \"icon\":\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"material-symbols-outlined cursor-pointer\">' + field.field_class + '</span>';\r\n }else{\r\n return '<span class=\"material-icons cursor-pointer\">' + field.field_class + '</span>';\r\n }\r\n case \"redirect\":\r\n if (value) {\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"fa fa-external-link\" aria-hidden=\"true\"></span>';\r\n }else{\r\n return '<i class=\"fa fa-external-link\" aria-hidden=\"true\"></i>';\r\n }\r\n }else{\r\n return '-';\r\n }\r\n case \"download_file\":\r\n if (value && value != '') {\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n return '<span class=\"material-symbols-outlined cursor-pointer\">' + field.field_class + '</span>';\r\n }else{\r\n return '<span class=\"material-icons cursor-pointer\">' + field.field_class + '</span>';\r\n }\r\n }else{\r\n return '-';\r\n }\r\n case \"trim_of_string\":\r\n if(value != undefined && value != null && value != ''){\r\n if(typeof value == 'string'){\r\n let stringObject = value.split('/');\r\n if(stringObject.length > 0){\r\n return stringObject[0]\r\n }else{\r\n return value;\r\n }\r\n }else{\r\n return value;\r\n }\r\n }else{\r\n return value;\r\n }\r\n\r\n case \"color\":\r\n break;\r\n\r\n case \"pattern\":\r\n if(object != null){\r\n return this.CommonFunctionService.getConvertedString(object,field.field_name);\r\n }\r\n break;\r\n case \"chips\":\r\n if(this.coreFunctionService.isNotBlank(value) && this.CommonFunctionService.isArray(value)){\r\n let name = \"\";\r\n for(let i=0 ;i<value.length; i++){\r\n if(this.coreFunctionService.isNotBlank(value[i]['name'])){\r\n name = name+', '+value[i]['name'];\r\n }else{\r\n name = name+', '+value[i];\r\n }\r\n }\r\n return name.substring(2);;\r\n }\r\n return \"-\";\r\n case \"reference_names\":\r\n if(this.coreFunctionService.isNotBlank(value) && this.CommonFunctionService.isArray(value)){\r\n let name = '';\r\n for(let i=0 ;i<value.length; i++){\r\n if(this.coreFunctionService.isNotBlank(value[i]['name'])){\r\n name = name+', '+value[i]['name'];\r\n }\r\n }\r\n if(name.length > 1){\r\n name = name.substring(2);\r\n }\r\n return name;\r\n }else{\r\n return \"-\";\r\n }\r\n default: return value;\r\n }\r\n }\r\n getValueForGridTooltip(field:any, object:any) {\r\n let value = '';\r\n if (field.field_name != undefined && field.field_name != null && field.field_name != '') {\r\n value = this.CommonFunctionService.getObjectValue(field.field_name, object)\r\n }\r\n if (!field.type) field.type = \"Text\";\r\n switch (field.type.toLowerCase()) {\r\n case 'datetime': return this.datePipe.transform(value, 'dd/MM/yyyy h:mm a');\r\n case 'date': return this.datePipe.transform(value, 'dd/MM/yyyy');\r\n case 'time': return this.isDate(value) ? this.datePipe.transform(value, 'h:mm a') : value;\r\n case \"boolean\": return value ? \"Yes\" : \"No\";\r\n case \"currency\": return this.CurrencyPipe.transform(value, 'INR');\r\n case \"info\":\r\n case \"file\":\r\n case \"template\":\r\n case \"image\":\r\n case \"icon\":\r\n case \"html\":\r\n return '';\r\n default: return value;\r\n }\r\n }\r\n getNoOfItems(grid:any, defaultNoOfItem:any) {\r\n if(grid && grid.details && grid.details.numberOfItems) {\r\n defaultNoOfItem = grid.details.numberOfItems;\r\n }\r\n return defaultNoOfItem;\r\n }\r\n setOldTabCount(tab:any) {\r\n let dataCount:any = {};\r\n let count:any = {};\r\n let totalDataCount:any = {};\r\n const currentTabName = this.storageService.GetActiveMenu()['name'];\r\n const key = currentTabName+\"_\"+tab.name;\r\n totalDataCount = this.dataShareService.getGridCountData();\r\n let oldDataSize = totalDataCount[key];\r\n count[key] = oldDataSize;\r\n dataCount['count'] = count;\r\n dataCount['gridCountData'] = totalDataCount;\r\n this.dataShareService.shareGridCountData(dataCount);\r\n }\r\n compareAuditHistoryData(formFieldsData:any,currentObjectData:any,previousObjectData:any){\r\n let formFields = formFieldsData;\r\n let currentObj = {};\r\n let previousObject = {};\r\n for (let i = 0; i < formFields.length; i++ ) {\r\n let field = formFields[i];\r\n let isChanged = false;\r\n if(field && field.field_name) {\r\n currentObj = currentObjectData[field.field_name];\r\n previousObject = previousObjectData[field.field_name];\r\n if(currentObj != null && currentObj != undefined && typeof currentObj == 'object'){\r\n currentObj = currentObjectData[field.field_name].name;\r\n previousObject = previousObjectData[field.field_name].name;\r\n if(currentObj != previousObject) {\r\n isChanged = true;\r\n }\r\n }else {\r\n if(currentObj != previousObject){\r\n isChanged = true;\r\n }\r\n }\r\n field['isChanged'] = isChanged;\r\n formFieldsData[i] = field;\r\n }\r\n }\r\n }\r\n copmareListOfFields(fields:any,currentObjectData:any,previousObjectData:any){\r\n let currentData:any[] = currentObjectData[fields.field_name];\r\n let previousData:any[] = previousObjectData[fields.field_name];\r\n let currentObj:any;\r\n let previousObject:any;\r\n if(currentObjectData[fields.field_name] && currentObjectData[fields.field_name].length > 0) {\r\n for (let i = 0; i < fields.list_of_fields.length; i++) {\r\n let isChanged = false;\r\n const field = fields.list_of_fields[i]\r\n for (let j = 0; j < currentData.length; j++) {\r\n let comparecurrentObj = currentData[j];\r\n comparecurrentObj = comparecurrentObj[field.field_name];\r\n let comparepreviousObject = previousData[j];\r\n comparepreviousObject = comparepreviousObject[field.field_name];\r\n\r\n if(comparecurrentObj != null && comparecurrentObj != undefined && typeof comparecurrentObj == 'object'){\r\n currentObj = comparecurrentObj[field.field_name].name;\r\n previousObject = comparepreviousObject[field.field_name].name;\r\n if(comparecurrentObj != comparepreviousObject) {\r\n isChanged = true;\r\n }\r\n }else {\r\n if(comparecurrentObj != comparepreviousObject){\r\n if(comparecurrentObj != null && comparecurrentObj != undefined && comparepreviousObject != null && comparepreviousObject != undefined ) {\r\n isChanged = true;\r\n }else {\r\n isChanged = false;\r\n }\r\n }\r\n }\r\n }\r\n field['isChanged'] = isChanged;\r\n fields[i] = field;\r\n }\r\n }\r\n }\r\n getPage(page: number,selectContact:any,tabFilterData:any,tab:any,currentMenu:any,headElements:any,filterFormValue:any,sortingColumnName:string,recordId:any,rowId:any,queryParams:any,itemNumOfGrid:any,gridDisable:any,modifyGridData:any,elements:any) {\r\n let responce = {\r\n \"pageNumber\":page,\r\n \"modifyGridData\":modifyGridData,\r\n \"elements\":elements\r\n }\r\n // this.pageNumber = page;\r\n let contact:any = {};\r\n let leadId = '';\r\n if(selectContact != ''){\r\n tabFilterData.forEach((element:any) => {\r\n if(element._id == selectContact['_id']){\r\n contact = element;\r\n }\r\n });\r\n if(contact['lead'] && contact['lead']._id){\r\n leadId = contact['lead']._id;\r\n }\r\n }\r\n const pagePayload:any = this.apiCallService.getPage(page,tab,currentMenu,headElements,filterFormValue,leadId)\r\n if(sortingColumnName){\r\n pagePayload[\"path\"] = sortingColumnName;\r\n }\r\n let crList = pagePayload.data.crList;\r\n let criteriaList = [];\r\n if(recordId){\r\n let criteria = \"_id;eq;\"+recordId+\";STATIC\";\r\n criteriaList.push(criteria);\r\n }\r\n if(rowId){\r\n let criteria = \"serialId;eq;\"+rowId+\";STATIC\";\r\n criteriaList.push(criteria);\r\n }\r\n if(Object.keys(queryParams).length > 0){\r\n Object.keys(queryParams).forEach(key =>{\r\n let criteria = key+\";eq;\"+queryParams[key]+\";STATIC\";\r\n criteriaList.push(criteria);\r\n })\r\n }\r\n if(criteriaList.length > 0){\r\n this.apiCallService.getCriteriaList(criteriaList,{}).forEach((element:any) => {\r\n crList.push(element);\r\n });\r\n pagePayload.data.crList = crList;\r\n }\r\n pagePayload.data.pageSize = itemNumOfGrid;\r\n this.getGridPayloadData(pagePayload,filterFormValue,gridDisable,tab,responce);\r\n return responce;\r\n }\r\n onSort(columnObject:any,filterFormValue:any,gridDisable:boolean,tab:any,sortingColumnName:any,sortIcon:any,orderBy:any,headElements:any,currentMenu:any,pageNumber:number) {\r\n let responce = {\r\n \"sortingColumnName\":sortingColumnName,\r\n \"sortIcon\":sortIcon,\r\n \"orderBy\":orderBy\r\n }\r\n responce.sortingColumnName = responce.orderBy + columnObject.field_name;\r\n const getSortData = this.apiCallService.getDataForGridFilter(pageNumber,tab,currentMenu,headElements,filterFormValue);\r\n getSortData['path'] = responce.sortingColumnName;\r\n this.getGridPayloadData(getSortData,filterFormValue,gridDisable,tab,responce);\r\n if (responce.orderBy == '-') {\r\n responce.orderBy = '';\r\n } else {\r\n responce.orderBy = '-';\r\n }\r\n responce.sortIcon==\"down\"? (responce.sortIcon=\"up-alt\"): (responce.sortIcon=\"down\");\r\n return responce;\r\n }\r\n applyFilter(modifyGridData:any,elements:any,tab:any,currentMenu:any,headElements:any,filterValue:any,selectContact:any,itemNumOfGrid:any,gridDisable:boolean,sortingColumnName:any) {\r\n let responce = {\r\n \"modifyGridData\":modifyGridData,\r\n \"elements\":elements,\r\n \"pageNumber\":1\r\n }\r\n let pagePayload = this.apiCallService.getDataForGrid(responce.pageNumber,tab,currentMenu,headElements,filterValue,selectContact);\r\n if(sortingColumnName){\r\n pagePayload[\"path\"] = sortingColumnName;\r\n }\r\n pagePayload.data.pageSize = itemNumOfGrid;\r\n this.getGridPayloadData(pagePayload,filterValue,gridDisable,tab,responce);\r\n return responce;\r\n }\r\n getGridPayloadData(pagePayload:any,value:any,gridDisable:boolean,tab:any,responce:any) {\r\n if(this.checkIfService.checkCallGridData(value,gridDisable)){\r\n this.apiService.getGridData(pagePayload);\r\n }else {\r\n responce.modifyGridData = [];\r\n responce.elements = [];\r\n this.setOldTabCount(tab);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GridSelectionService {\r\n\r\n constructor() { }\r\n toggle(index:any,checked:any,field:any,staticData:any,custmizedFormValue:any) {\r\n let responce = {\r\n staticData:staticData,\r\n custmizedFormValue:custmizedFormValue\r\n }\r\n if (checked) {\r\n responce.staticData[field.ddn_field][index].selected=true;\r\n } else {\r\n responce.staticData[field.ddn_field][index].selected=false;\r\n }\r\n responce.custmizedFormValue[field.field_name] = [];\r\n responce.staticData[field.ddn_field].forEach((element:any) => {\r\n if(element.selected){\r\n responce.custmizedFormValue[field.field_name].push(element);\r\n }\r\n });\r\n return responce;\r\n }\r\n isIndeterminate(ddn_field:any,staticData:any) {\r\n let check = 0;\r\n if(staticData[ddn_field].length > 0){\r\n staticData[ddn_field].forEach((row:any) => {\r\n if(row.selected){\r\n check = check + 1;\r\n }\r\n });\r\n }\r\n return (check > 0 && !this.isChecked(ddn_field,staticData));\r\n };\r\n isChecked(ddn_field:any,staticData:any) {\r\n let check = 0;\r\n if(staticData[ddn_field].length > 0){\r\n staticData[ddn_field].forEach((row:any) => {\r\n if(row.selected){\r\n check = check + 1;\r\n }\r\n });\r\n }\r\n return staticData[ddn_field].length === check;\r\n };\r\n toggleAll(checked:any,field:any,staticData:any,custmizedFormValue:any) {\r\n let responce = {\r\n staticData:staticData,\r\n custmizedFormValue:custmizedFormValue\r\n }\r\n if (checked ) {\r\n if(responce.staticData[field.ddn_field].length > 0){\r\n responce.staticData[field.ddn_field].forEach((row:any) => {\r\n row.selected=true;\r\n });\r\n }\r\n }else{\r\n if(responce.staticData[field.ddn_field].length > 0){\r\n responce.staticData[field.ddn_field].forEach((row:any) => {\r\n row.selected=false;\r\n });\r\n }\r\n }\r\n responce.custmizedFormValue[field.field_name] = [];\r\n responce.staticData[field.ddn_field].forEach((element:any) => {\r\n if(element.selected){\r\n responce.custmizedFormValue[field.field_name].push(element);\r\n }\r\n });\r\n return responce;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n public isLoading:BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n \r\n\r\nconstructor() { }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthService } from '../api/auth/auth.service';\r\nimport { NotificationService } from '../notify/notification.service';\r\nimport { StorageService } from '../storage/storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissionService {\r\n permission:any;\r\n\r\n constructor(\r\n private storageService:StorageService,\r\n private authService:AuthService,\r\n private notificationService:NotificationService\r\n ) {\r\n\r\n }\r\n\r\n checkPermission(template:string,option:string){\r\n this.permission = this.storageService.GetPermission();\r\n let check = false;\r\n if(this.permission && typeof this.permission == 'object' && Object.keys(this.permission).length > 0){\r\n check = this.checkList(template,option);\r\n }\r\n return check;\r\n }\r\n checkPermissionWithParent(template:any,option:string){\r\n this.permission = this.storageService.GetPermission();\r\n let check = false;\r\n if(this.permission && typeof this.permission == 'object' && Object.keys(this.permission).length > 0){\r\n let name:string = template.name;\r\n check = this.checkList(name,option);\r\n if(!check){\r\n if(template && template.tab_name && template.tab_name != ''){\r\n name = template.tab_name;\r\n check = this.checkList(name,option);\r\n }\r\n }\r\n }\r\n return check;\r\n }\r\n checkList(template:string,option:string){\r\n if(this.permission[template]){\r\n let permissionList = this.permission[template]\r\n return this.check(permissionList,option);\r\n }else{\r\n return false;\r\n }\r\n }\r\n check(list:any,actionName:string){\r\n let check = false;\r\n if(list && list.length > 0){\r\n let action:string = '';\r\n if(actionName == 'auditHistory'){\r\n action = 'AUDIT_HISTORY';\r\n }else{\r\n action = actionName.toUpperCase();\r\n }\r\n for (let i = 0; i < list.length; i++) {\r\n const permission = list[i];\r\n if(permission == action){\r\n check = true;\r\n break;\r\n }\r\n }\r\n }else{\r\n check = false;\r\n }\r\n return check;\r\n }\r\n checkTokenStatusForPermission(){\r\n let getTokenStatus = this.authService.checkIdTokenStatus()\r\n if(getTokenStatus.status){\r\n this.notificationService.notify(\"bg-danger\", \"Permission denied !!!\");\r\n }else{\r\n if(getTokenStatus.msg != \"\"){\r\n this.notificationService.notify(\"bg-info\", getTokenStatus.msg);\r\n }\r\n this.authService.gotToSigninPage();\r\n }\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonAppDataShareService {\r\n\r\n moduleList : any = [];\r\n moduleIndex:any = -1;\r\n tabIndex:any=-1;\r\n parentRouting:any = '';\r\n formId:any = '';\r\n \r\n shareCardList:EventEmitter<any> = new EventEmitter<any>();\r\n cardList:any = [];\r\n nestedCardId:any = '';\r\n nestedCard:EventEmitter<any> = new EventEmitter<any>();\r\n multipleCardCollection:any=[];\r\n\r\n constructor() { }\r\n\r\n\r\n setModuleList(modules:any){\r\n this.moduleList = modules;\r\n }\r\n getModuleList(){\r\n return this.moduleList;\r\n }\r\n resetModuleList(){\r\n this.moduleList = [];\r\n }\r\n setModuleIndex(index:any){\r\n this.moduleIndex = index;\r\n }\r\n getModuleIndex(){\r\n return this.moduleIndex;\r\n }\r\n setSelectedTabIndex(index:any){\r\n this.tabIndex = index;\r\n }\r\n getSelectdTabIndex(){\r\n return this.tabIndex;\r\n }\r\n setParentRouting(routeLink:any){\r\n this.parentRouting = routeLink\r\n }\r\n getParentRouting(){\r\n return this.parentRouting;\r\n }\r\n setFormId(id:any){\r\n this.formId = id;\r\n }\r\n getFormId(){\r\n return this.formId;\r\n }\r\n sharecardlist(cardList:any){\r\n this.shareCardList.emit(cardList);\r\n }\r\n setCardList(value:any){\r\n this.cardList=value;\r\n }\r\n getCardList(){\r\n return this.cardList;\r\n }\r\n setNestedCardId(id:any){\r\n this.nestedCardId=id;\r\n }\r\n getNestedCardId(){\r\n return this.nestedCardId;\r\n }\r\n setNestedCard(responce:any){\r\n this.nestedCard.emit(responce);\r\n }\r\n setMultipleCardCollection(response:any){\r\n this.multipleCardCollection=response;\r\n }\r\n getMultipleCardCollection(){\r\n return this.multipleCardCollection;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { StorageService } from '../storage/storage.service';\r\nimport { ApiService } from '../api/api.service';\r\nimport { DataShareService } from '../data-share/data-share.service';\r\nimport { CommonFunctionService } from '../common-utils/common-function.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserPrefrenceService {\r\n constructor(\r\n private storageService: StorageService,\r\n private apiService: ApiService,\r\n private dataShareService: DataShareService,\r\n private commonFunctionService: CommonFunctionService\r\n ) {}\r\n\r\n updateUserPreference(data: object, fieldName: string, parent?: string): Promise<{ success: boolean }> {\r\n return new Promise(async (resolve) => {\r\n try {\r\n let payloadData;\r\n \r\n switch (fieldName) {\r\n case 'preferenceMap':\r\n payloadData = this.modifiedMenuObj(data, fieldName, parent);\r\n break;\r\n case 'tab':\r\n payloadData = this.addOrRemoveTabs(data);\r\n break;\r\n case 'preference':\r\n payloadData = this.saveColumn(data);\r\n break;\r\n default:\r\n payloadData = this.storageService.getUserPreference();\r\n break;\r\n }\r\n const payload = {\r\n curTemp: 'user_preference',\r\n data: payloadData,\r\n };\r\n this.apiService.SaveFormData(payload);\r\n\r\n resolve({ success: true });\r\n } catch (error) {\r\n resolve({ success: false });\r\n }\r\n });\r\n } \r\n\r\n addOrRemoveTabs(tab: any) {\r\n let menuIndexs = this.dataShareService.getMenuOrSubmenuIndexs();\r\n let modules = this.storageService.GetModules();\r\n let extractedMenu = this.extractMenuDetails(tab, modules, menuIndexs);\r\n // let userPreference = this.updateFavTabs(extractedMenu, tab);\r\n let userPreference = this.createUserPreference('preferenceMap')\r\n userPreference['preferenceMap'] = extractedMenu;\r\n return userPreference;\r\n }\r\n // Modifies the user preference object with the provided data\r\n modifiedMenuObj(data: any, fieldName: string, parent?: string) {\r\n let modifiedMenuObj = this.prepareMenuJson(data, fieldName, parent);\r\n // let userPreference = this.storageService.getUserPreference();\r\n // userPreference[fieldName] = this.mergeMenus(userPreference[fieldName],modifiedMenuObj,parent);\r\n let userPreference = this.createUserPreference(fieldName);\r\n userPreference[fieldName] = modifiedMenuObj;\r\n return userPreference;\r\n }\r\n // Prepares a menu object from menu items\r\n prepareMenuJson(menuItems: any, fieldName: string, parent?: any) {\r\n const menu: any = {};\r\n const itemsArray = Array.isArray(menuItems) ? menuItems : [menuItems];\r\n itemsArray.forEach((item) => {\r\n const moduleName:string | null = this.storageService.getModule();\r\n const menuReference = {\r\n ...this.commonFunctionService.getReferenceObject(item),\r\n allSelected: true,\r\n };\r\n\r\n let menuData: any;\r\n // let menus = userPreference[fieldName];\r\n if (parent) {\r\n // If parent exists and has a submenu, add the current menu to the existing submenu\r\n let refObj: any = {\r\n favourite: item.favourite,\r\n reference: {\r\n ...this.commonFunctionService.getReferenceObject(menuItems),\r\n allSelected: true,\r\n },\r\n };\r\n let parObjRef: any = this.commonFunctionService.getReferenceObject(parent);\r\n menuData = {\r\n reference: parObjRef,\r\n favourite: item.favourite,\r\n submenus: {\r\n [menuItems.name]: refObj,\r\n },\r\n };\r\n if(moduleName!=null){\r\n menu[moduleName]={\r\n favourite: item.favourite,\r\n reference : this.getModuleRef(moduleName),\r\n menus:{\r\n [parent.name] : menuData\r\n }\r\n }\r\n return menu;\r\n }\r\n } else {\r\n menuData = {\r\n reference: menuReference,\r\n favourite: item.favourite,\r\n };\r\n if(moduleName!== null){\r\n menu[moduleName]={\r\n reference : this.getModuleRef(moduleName),\r\n favourite: item.favourite,\r\n menus:{\r\n [item.name] : menuData\r\n }\r\n }\r\n return menu;\r\n }\r\n }\r\n });\r\n return menu;\r\n }\r\n //Create UserPreference when not exist\r\n createUserPreference(fieldName:string){\r\n let uref: any = {};\r\n let userRef = this.commonFunctionService.getReferenceObject(\r\n this.storageService.GetUserInfo()\r\n );\r\n uref['userId'] = userRef;\r\n //set empty obj for required key\r\n uref[fieldName] = {}\r\n return uref;\r\n }\r\n //Get Module Reference by Module Name\r\n getModuleRef(moduleName:any){\r\n let Allmodules = this.storageService.GetModules();\r\n let module = Allmodules.filter((module:any)=>{\r\n return module.name == moduleName;\r\n })\r\n return this.commonFunctionService.getReferenceObject(module[0]);\r\n }\r\n\r\n // GetTemplateTabs in current Menu\r\n getTemplateTabs(){\r\n const tabsData = this.dataShareService.getTempData();\r\n const templateTabs = tabsData?.[0]?.templateTabs ?? null;\r\n return templateTabs;\r\n }\r\n // Gets all tab's reference Obj from the provided array of tabs\r\n getAllTabs(tabs: any) {\r\n if (!tabs) {\r\n return {};\r\n }\r\n const allTabs = tabs.reduce((acc: any, tab: any) => {\r\n const tabRef = this.getTabRef(tab);\r\n if (tabRef && Object.keys(tabRef).length > 0) {\r\n Object.assign(acc, tabRef);\r\n }\r\n return acc;\r\n }, {});\r\n\r\n return allTabs;\r\n }\r\n // Gets only the tab's reference Obj with favourite set to true from the provided array of tabs\r\n getFebTabs(tabs: any) {\r\n if (!tabs) {\r\n return {};\r\n }\r\n return tabs\r\n .filter((tab: any) => tab.favourite === true)\r\n .reduce((acc: any, tab: any) => {\r\n const tabRef = this.getTabRef(tab);\r\n if (tabRef && Object.keys(tabRef).length > 0) {\r\n Object.assign(acc, tabRef);\r\n }\r\n return acc;\r\n }, {});\r\n }\r\n // Creates a reference object for a tab\r\n getTabRef(tab: any,optKey?:string) {\r\n let res: any = {};\r\n if (tab && tab.tab_name != '' && tab.tab_name != null) {\r\n const tabReference:any = {\r\n reference: this.commonFunctionService.getReferenceObject(tab),\r\n };\r\n if(optKey!= '' && optKey!= undefined){\r\n tabReference[optKey] = tab.favourite;\r\n }\r\n res[tab.tab_name] = tabReference;\r\n }\r\n return res;\r\n }\r\n // Merges existingMenus with newMenus\r\n mergeMenus(existingMenus: any, newMenus: any, parent: any) {\r\n const mergedMenus: any = { ...existingMenus };\r\n const checkFeb = this.checkFebMenuAddOrNot(newMenus, parent);\r\n const newMenukeys = Object.keys(newMenus);\r\n if (!checkFeb) {\r\n for (const key in newMenus) {\r\n if (newMenus.hasOwnProperty(key)) {\r\n if (\r\n mergedMenus.hasOwnProperty(key) &&\r\n mergedMenus[key].hasOwnProperty('submenus')\r\n ) {\r\n // If the key exists and has submenus, merge the submenus\r\n mergedMenus[key].submenus = {\r\n ...mergedMenus[key].submenus,\r\n ...newMenus[key].submenus,\r\n };\r\n } else {\r\n // If the key doesn't exist or doesn't have submenus, set submenus to newMenus\r\n mergedMenus[key] = newMenus[key];\r\n }\r\n }\r\n }\r\n } else {\r\n for (const key in mergedMenus) {\r\n if (\r\n mergedMenus.hasOwnProperty(key) &&\r\n mergedMenus[key].hasOwnProperty('submenus')\r\n ) {\r\n const existingSubmenus = mergedMenus[key].submenus;\r\n const newSubmenus = newMenus[key] && newMenus[key].submenus;\r\n\r\n if (existingSubmenus && newSubmenus) {\r\n for (const submenuKey in newSubmenus) {\r\n if (newSubmenus.hasOwnProperty(submenuKey)) {\r\n if (existingSubmenus.hasOwnProperty(submenuKey)) {\r\n // Remove existing submenus\r\n delete existingSubmenus[submenuKey];\r\n } else {\r\n // Add new submenus\r\n existingSubmenus[submenuKey] = newSubmenus[submenuKey];\r\n }\r\n }\r\n }\r\n } else {\r\n // If either existing or new submenus are missing, delete the menu\r\n if (key === newMenukeys[0]) {\r\n delete mergedMenus[key];\r\n }\r\n }\r\n } else {\r\n if (key === newMenukeys[0] && parent == '') {\r\n delete mergedMenus[key];\r\n }\r\n }\r\n }\r\n }\r\n return this.deleteEmptyMenus(mergedMenus);\r\n }\r\n // Deletes empty menus from the provided menus object\r\n deleteEmptyMenus(menus: any): any {\r\n const updatedMenus: any = { ...menus };\r\n for (const key in updatedMenus) {\r\n if (\r\n updatedMenus.hasOwnProperty(key) &&\r\n updatedMenus[key].submenus != null\r\n ) {\r\n if (Object.keys(updatedMenus[key].submenus).length === 0) {\r\n // Delete the menu if submenus is empty\r\n delete updatedMenus[key];\r\n } else {\r\n let subMenus = updatedMenus[key].submenus;\r\n for (const subMenuKey in subMenus) {\r\n // Check templateTabs condition\r\n const templateTabs =\r\n updatedMenus[key]?.submenus[subMenuKey]?.templateTabs;\r\n if (\r\n templateTabs != null &&\r\n Object.keys(templateTabs).length === 0\r\n ) {\r\n // Delete the menu if templateTabs is empty\r\n delete updatedMenus[key].submenus[subMenuKey];\r\n }\r\n }\r\n }\r\n } else {\r\n const templateTabs = updatedMenus[key].templateTabs;\r\n if (templateTabs != null && Object.keys(templateTabs).length === 0) {\r\n // Delete the menu if templateTabs is empty\r\n delete updatedMenus[key];\r\n }\r\n }\r\n }\r\n return updatedMenus;\r\n }\r\n // Checks if a menu should be added based on the febMenu condition\r\n checkFebMenuAddOrNot(menu: any, parent: any) {\r\n let userFebMenu = this.getUserPreferenceByFieldName('preferenceMap');\r\n if (!menu || typeof menu !== 'object' || Object.keys(menu).length === 0) {\r\n return false;\r\n }\r\n\r\n if (\r\n parent &&\r\n (typeof parent !== 'object' || Object.keys(parent).length === 0)\r\n ) {\r\n return false;\r\n }\r\n\r\n let menuId =\r\n Object.keys(menu).length > 0\r\n ? menu[Object.keys(menu)[0]].reference?._id\r\n : null;\r\n // Check if parent and parent.reference are defined before accessing _id\r\n if (parent && parent !== '' && typeof parent === 'object' && userFebMenu) {\r\n for (const key in menu) {\r\n if (menu.hasOwnProperty(key)) {\r\n if (\r\n userFebMenu.hasOwnProperty(key) &&\r\n userFebMenu[key].hasOwnProperty('submenus')\r\n ) {\r\n const menuSubmenus = menu[key].submenus;\r\n for (const submenuKey in menuSubmenus) {\r\n const submenuId = menuSubmenus[submenuKey].reference?._id;\r\n if (!this.isIdExist(userFebMenu[key].submenus, submenuId)) {\r\n return false;\r\n } else return true;\r\n }\r\n } else {\r\n return false; // Return false if the key is missing or doesn't have submenus in userFebMenu\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (\r\n userFebMenu &&\r\n userFebMenu !== null &&\r\n typeof userFebMenu === 'object' &&\r\n Object.keys(userFebMenu).length > 0\r\n ) {\r\n return this.isIdExist(userFebMenu, menuId);\r\n } else {\r\n return false;\r\n }\r\n }\r\n // Checks if a given ID exists in the provided object\r\n isIdExist(obj: any, targetId: any) {\r\n for (const key in obj) {\r\n if (\r\n obj.hasOwnProperty(key) &&\r\n obj[key].reference &&\r\n obj[key].reference._id === targetId\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // Checks is Menu already present or not - For fabMenu icon\r\n isMenuAlreadyPresentOrNot(targetMenu: any, userFebMenu: any): boolean {\r\n for (const key in userFebMenu) {\r\n if (userFebMenu.hasOwnProperty(key)) {\r\n const menu = userFebMenu[key];\r\n if (menu.reference && menu.reference._id === targetMenu._id) {\r\n return true;\r\n }\r\n if (menu.submenus) {\r\n for (const submenuKey in menu.submenus) {\r\n if (menu.submenus.hasOwnProperty(submenuKey)) {\r\n const submenu = menu.submenus[submenuKey];\r\n if (\r\n submenu.reference &&\r\n submenu.reference._id === targetMenu._id\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n getUserPreferenceByFieldName(fieldName: string) {\r\n let data = [];\r\n let userPreference = this.storageService.getUserPreference();\r\n if (userPreference && userPreference[fieldName]) {\r\n data = userPreference[fieldName];\r\n }\r\n return data;\r\n }\r\n // Extract the menu and submenu data for tab\r\n extractMenuDetails(\r\n tab: any,\r\n data: any[],\r\n indices: { menuIndex: number; submenuIndex: number; moduleIndex: number }\r\n ) {\r\n const { menuIndex, submenuIndex, moduleIndex } = indices;\r\n let newMenu: any = {};\r\n let tabRef = this.getTabRef(tab,'favourite');\r\n let moduleRef = this.commonFunctionService.getReferenceObject(data[moduleIndex]);\r\n let isFavExist = tab.favourite;\r\n if (submenuIndex != -1) {\r\n let submenu =\r\n data[moduleIndex]?.['menu_list'][menuIndex]?.['submenu']?.[\r\n submenuIndex\r\n ];\r\n let parent = data[moduleIndex]?.['menu_list'][menuIndex];\r\n newMenu[moduleRef.name] = {\r\n favourite: isFavExist,\r\n reference : moduleRef,\r\n menus:{\r\n [parent.name] : {\r\n reference: this.commonFunctionService.getReferenceObject(parent),\r\n favourite: isFavExist,\r\n submenus: {\r\n [submenu.name]: {\r\n favourite: isFavExist,\r\n reference: {\r\n ...this.commonFunctionService.getReferenceObject(submenu),\r\n },\r\n templateTabs: tabRef,\r\n },\r\n }\r\n },\r\n }\r\n };\r\n } else {\r\n let menu = data[moduleIndex]?.['menu_list'][menuIndex];\r\n newMenu[moduleRef.name]={\r\n favourite: isFavExist,\r\n reference : moduleRef,\r\n menus: {\r\n [menu.name] : {\r\n favourite: isFavExist,\r\n reference: { ...this.commonFunctionService.getReferenceObject(menu)},\r\n templateTabs: tabRef,\r\n }}\r\n };\r\n }\r\n return newMenu;\r\n }\r\n //update tabs\r\n updateFavTabs(newMenus: any, tab: any) {\r\n let existingUserPreferences = this.storageService.getUserPreference();\r\n if(!existingUserPreferences){\r\n existingUserPreferences = this.createUserPreference('preferenceMap');\r\n }\r\n let existingMenus = existingUserPreferences['preferenceMap'];\r\n let updatedMenus = { ...existingMenus };\r\n let favExist = !tab.favourite\r\n\r\n if (!favExist) {\r\n for (let menuName in newMenus) {\r\n if (newMenus.hasOwnProperty(menuName)) {\r\n let newMenu = newMenus[menuName];\r\n\r\n if (existingMenus.hasOwnProperty(menuName)) {\r\n let existingMenu = existingMenus[menuName];\r\n\r\n existingMenu.reference = newMenu.reference;\r\n if (!existingMenu.submenus) {\r\n if (existingMenu.templateTabs && newMenu.templateTabs) {\r\n delete existingMenu.templateTabs[tab.tab_name];\r\n if (existingMenu.submenus && newMenu.submenus) {\r\n existingMenu.templateTabs = {\r\n ...existingMenu.templateTabs,\r\n ...newMenu.templateTabs,\r\n };\r\n } else {\r\n existingMenu.templateTabs = {\r\n ...existingMenu.templateTabs,\r\n ...newMenu.templateTabs,\r\n };\r\n }\r\n }\r\n } else {\r\n for (let subMenuKey in newMenu.submenus) {\r\n if (newMenu.submenus.hasOwnProperty(subMenuKey)) {\r\n let newSubMenu = newMenu.submenus[subMenuKey];\r\n\r\n if (existingMenu.submenus.hasOwnProperty(subMenuKey)) {\r\n let existingSubMenu = existingMenu.submenus[subMenuKey];\r\n existingSubMenu.reference = newSubMenu.reference;\r\n if (\r\n existingSubMenu.templateTabs &&\r\n newSubMenu.templateTabs\r\n ) {\r\n existingSubMenu.templateTabs = {\r\n ...existingSubMenu.templateTabs,\r\n ...newSubMenu.templateTabs,\r\n };\r\n } else {\r\n existingSubMenu.templateTabs = newSubMenu.templateTabs;\r\n }\r\n } else {\r\n existingMenu.submenus[subMenuKey] = { ...newSubMenu };\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n updatedMenus[menuName] = { ...newMenu };\r\n }\r\n }\r\n }\r\n } else {\r\n for (let menuName in existingMenus) {\r\n if (newMenus.hasOwnProperty(menuName)) {\r\n let newMenu = newMenus[menuName];\r\n let existingMenu = existingMenus[menuName]; \r\n if (!existingMenu.submenus) {\r\n existingMenu.reference = newMenu?.reference;\r\n const favTabs = this.getFebTabs(this.getTemplateTabs());\r\n existingMenu[\"templateTabs\"] = favTabs;\r\n if (\r\n existingMenu.templateTabs &&\r\n existingMenu.templateTabs[tab.tab_name]\r\n ) {\r\n delete existingMenu.templateTabs[tab.tab_name];\r\n }\r\n } else {\r\n for (let subMenuKey in existingMenu.submenus) {\r\n if (newMenu.submenus.hasOwnProperty(subMenuKey)) {\r\n let existingSubMenu = existingMenu.submenus[subMenuKey];\r\n const favTabs = this.getFebTabs(this.getTemplateTabs());\r\n existingSubMenu[\"templateTabs\"] = favTabs;\r\n existingSubMenu.reference = newMenu?.submenus[subMenuKey]?.reference\r\n if (\r\n existingSubMenu.templateTabs &&\r\n existingSubMenu.templateTabs[tab.tab_name]\r\n ) {\r\n delete existingSubMenu.templateTabs[tab.tab_name];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n updatedMenus = this.deleteEmptyMenus(updatedMenus);\r\n existingUserPreferences['preferenceMap'] = updatedMenus;\r\n\r\n return existingUserPreferences;\r\n }\r\n // Check the tab id in local USER_PREF\r\n checkFebTabAddOrNot(tab: any) {\r\n const menus = this.storageService.getUserPreference()?.['preferenceMap'] || {};\r\n return this.isIdExistInTemplateTabs(menus, tab._id);\r\n }\r\n isIdExistInTemplateTabs(obj: any, targetId: string): boolean {\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n const value = obj[key];\r\n\r\n if (value && typeof value === 'object') {\r\n // Recursively search in nested objects\r\n if (this.isIdExistInTemplateTabs(value, targetId)) {\r\n return true;\r\n }\r\n } else if (key === '_id' && value === targetId) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n getUserPreferenceObj(data:any,fieldName:string,parent?:string){\r\n let refObj:any = this.commonFunctionService.getReferenceObject(data);\r\n if(parent != ''){\r\n refObj = parent;\r\n }\r\n if(fieldName == \"favoriteMenus\"){\r\n refObj = data;\r\n }\r\n let uRef:any = {};\r\n let userPreference = this.storageService.getUserPreference();\r\n if(userPreference && userPreference._id && userPreference._id != null && userPreference._id != ''){\r\n let fieldData = userPreference[fieldName];\r\n if(fieldData && fieldData.length > 0){\r\n let matchIndex = -1;\r\n for (let index = 0; index < fieldData.length; index++) {\r\n const element = fieldData[index];\r\n if(element._id == refObj._id){\r\n matchIndex = index;\r\n break;\r\n }\r\n }\r\n if(matchIndex > -1){\r\n if(parent != ''){\r\n let submenu = fieldData[matchIndex].submenu;\r\n let submenuMatchIndex = -1;\r\n if(submenu && submenu.length > 0){\r\n for (let j = 0; j < submenu.length; j++) {\r\n const subMenu = submenu[j];\r\n if(subMenu._id == data._id){\r\n submenuMatchIndex = j;\r\n break;\r\n }\r\n }\r\n }\r\n if(submenuMatchIndex > -1){\r\n submenu.splice(submenuMatchIndex);\r\n if(fieldData[matchIndex].submenu.length == 0){\r\n fieldData.splice(matchIndex);\r\n }else{\r\n fieldData[matchIndex].submenu = submenu;\r\n }\r\n }else{\r\n if(submenu.length > 0){\r\n fieldData[matchIndex].submenu.push(data);\r\n }else{\r\n fieldData[matchIndex].submenu = []\r\n fieldData[matchIndex].submenu.push(data);\r\n }\r\n }\r\n }else{\r\n fieldData.splice(matchIndex, 1);\r\n }\r\n }else{\r\n if(parent != ''){\r\n refObj['submenu'] = [];\r\n refObj['submenu'].push(data);\r\n fieldData.push(refObj);\r\n }else{\r\n fieldData.push(refObj);\r\n }\r\n }\r\n }else{\r\n fieldData = [];\r\n fieldData.push(refObj);\r\n }\r\n userPreference[fieldName] = fieldData;\r\n uRef = userPreference;\r\n }else{\r\n let user = this.storageService.GetUserInfo();\r\n let userRef = this.commonFunctionService.getReferenceObject(user);\r\n let dataList = [];\r\n dataList.push(refObj);\r\n uRef['userId'] = userRef;\r\n uRef[fieldName] = dataList;\r\n }\r\n return uRef\r\n }\r\n\r\n saveColumn(data:any){\r\n let {columns,form,formTable}=data;\r\n const checkedFields=columns.filter((col:any)=>col.display==true);\r\n let {menuIndex, submenuIndex, moduleIndex}= this.dataShareService.getMenuOrSubmenuIndexs();\r\n const allModuleData=this.storageService.GetModules();\r\n let selectedModule= allModuleData[moduleIndex];\r\n let selectedMenu= allModuleData[moduleIndex]?.[\"menu_list\"][menuIndex];\r\n let selectedSubMenu= null;\r\n let allTempleteTabs= this.dataShareService.getTempData()[0]?.[\"templateTabs\"];\r\n let activeMenu=this.storageService.GetActiveMenu() ///get active tab \r\n let selectedTab= allTempleteTabs?.find((tab:any)=>tab.tab_name== activeMenu?.name);\r\n let selectedGrid= selectedTab.grid\r\n\r\n if(submenuIndex!= -1){\r\n selectedSubMenu= allModuleData[moduleIndex]?.[\"menu_list\"][menuIndex]?.[\"submenu\"][submenuIndex];\r\n }\r\n\r\n let forms;\r\n let grids;\r\n if(form && formTable){\r\n selectedGrid=formTable.grid;\r\n forms= {\r\n [form[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(form),\r\n grids:{\r\n [selectedGrid[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(selectedGrid),\r\n \"fields\":checkedFields.map((col:any) =>{\r\n return { field_name: col.field_name, \r\n }\r\n })\r\n }\r\n \r\n }\r\n }\r\n }\r\n }else{\r\n grids={\r\n [selectedGrid[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(selectedGrid),\r\n \"fields\":checkedFields.map((col:any) =>{\r\n return { field_name: col.field_name, \r\n }\r\n })\r\n }\r\n\r\n }\r\n }\r\n let preference;\r\n let templateTabs={\r\n [selectedTab[\"tab_name\"]]:{\r\n reference : {\r\n _id:selectedTab[\"_id\"],\r\n name: selectedTab[\"tab_name\"]\r\n },\r\n ...(form && {forms}),\r\n ...(form == undefined && {grids})\r\n }\r\n }\r\n if(submenuIndex != -1){\r\n preference={\r\n [selectedModule[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(selectedModule),\r\n menus:{\r\n [selectedMenu[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(selectedMenu),\r\n submenus: {\r\n [selectedSubMenu[\"name\"]]: {\r\n reference: this.commonFunctionService.getReferenceObject(selectedSubMenu),\r\n templateTabs,\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else{\r\n preference={\r\n [selectedModule[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(selectedModule),\r\n menus:{\r\n [selectedMenu[\"name\"]]:{\r\n reference : this.commonFunctionService.getReferenceObject(selectedMenu),\r\n templateTabs:{\r\n [selectedTab[\"tab_name\"]]:{\r\n reference : {\r\n _id:selectedTab[\"_id\"],\r\n name: selectedTab[\"tab_name\"]\r\n },\r\n ...(form && {forms}),\r\n ...(form == undefined && {grids})\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let userRef = this.commonFunctionService.getReferenceObject(\r\n this.storageService.GetUserInfo()\r\n );\r\n \r\n let payload={\r\n preferenceMap : preference,\r\n userId: userRef\r\n }\r\n \r\n return payload;\r\n }\r\n\r\n addHideKeyInExistingTab(columns:any,fId:String,fieldName:String){\r\n let tabName=this.storageService.GetActiveMenu().name;\r\n let template=this.dataShareService.getTempData();\r\n let tabs = template[0].templateTabs;\r\n let selectTabIndex=this.commonFunctionService.getIndexInArrayById(tabs,tabName,'tab_name')\r\n let tab = tabs[selectTabIndex];\r\n let grid=tab.grid;\r\n let gridColumns=grid.gridColumns;\r\n if(fId && fieldName){\r\n let forms=tab.forms;\r\n if(typeof forms== 'object' && Object.keys(forms).length>0){\r\n Object.keys(forms).forEach((key:any)=>{\r\n let form=forms[key];\r\n if(form._id== fId){\r\n let formFields=form.tableFields;\r\n formFields.forEach((field:any)=>{\r\n if(field.field_name == fieldName){\r\n if(field.gridColumns && field.gridColumns.length>0){\r\n gridColumns=field.gridColumns;\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n }\r\n if( gridColumns && gridColumns.length>0 && columns.length>0){\r\n columns.forEach((col:any,index:any)=>{\r\n if(col.display){\r\n gridColumns[index]['hide']=false;\r\n\r\n }\r\n else{\r\n gridColumns[index]['hide']=true;\r\n\r\n }\r\n })\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ApiService } from '../api/api.service';\r\nimport { CommonFunctionService } from '../common-utils/common-function.service';\r\nimport { DataShareService } from '../data-share/data-share.service';\r\nimport { PermissionService } from '../permission/permission.service';\r\nimport { StorageService } from '../storage/storage.service';\r\nimport { CommonAppDataShareService } from '../data-share/common-app-data-share/common-app-data-share.service';\r\nimport { UserPrefrenceService } from '../userPrefrence/user-prefrence.service';\r\nimport { CoreFunctionService } from '../common-utils/core-function/core-function.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MenuOrModuleCommonService {\r\n\r\nconstructor(\r\n private storageService: StorageService,\r\n private permissionService:PermissionService,\r\n private commonFunctionService:CommonFunctionService,\r\n private dataShareService:DataShareService,\r\n private apiService:ApiService,\r\n private router:Router,\r\n private commonAppDataShareService: CommonAppDataShareService,\r\n private userPrefrenceService: UserPrefrenceService,\r\n private coreFunctionService: CoreFunctionService,\r\n) { }\r\n\r\n // modifyModuleListWithPermission(moduleList:any){\r\n // let modifyModuleList:any = [];\r\n // if(moduleList && moduleList.length > 0){\r\n // moduleList.forEach((module:any) => {\r\n // if(module && module.menu_list && module.menu_list.length > 0){\r\n // let menuList = module.menu_list;\r\n // module.menu_list = this.setDisplayInMenuWithPermission(menuList);\r\n // if(this.setDisplayInModuleWithPermission(module.menu_list)){\r\n // module['display'] = true;\r\n // }else{\r\n // module['display'] = false;\r\n // }\r\n // modifyModuleList.push(module);\r\n // }else{\r\n // modifyModuleList.push(module);\r\n // }\r\n // });\r\n // }\r\n // return modifyModuleList;\r\n // }\r\n getDefaultMenuIndex(menuList:any){\r\n let defaultmenuIndex = 0;\r\n let defaultSubmenuIndex = -1;\r\n let defaultIndexs = {\r\n 'defaultmenuIndex':defaultmenuIndex,\r\n 'defaultSubmenuIndex' :defaultSubmenuIndex\r\n };\r\n if(menuList && menuList.length > 0){\r\n defaultmenuIndex = this.getDefaultIndex(menuList)\r\n const defaultMenu =menuList[defaultmenuIndex];\r\n if(defaultMenu.submenu && defaultMenu.submenu.length > 0){\r\n defaultSubmenuIndex = this.getDefaultIndex(defaultMenu.submenu);\r\n if(defaultSubmenuIndex == -1){\r\n defaultSubmenuIndex = 0;\r\n }\r\n }\r\n }\r\n defaultIndexs.defaultmenuIndex = defaultmenuIndex;\r\n defaultIndexs.defaultSubmenuIndex = defaultSubmenuIndex;\r\n return defaultIndexs;\r\n }\r\n getDefaultIndex(menuList:any){\r\n let defaultmenuIndex = 0;\r\n if(menuList && menuList.length > 0){\r\n for (let index = 0; index < menuList.length; index++) {\r\n if(menuList[index].defaultMenu){\r\n defaultmenuIndex = index;\r\n break;\r\n }\r\n }\r\n }\r\n return defaultmenuIndex;\r\n }\r\n // setDisplayInMenuWithPermission(menuList:any){\r\n // let modifyMenuList = [];\r\n // if(menuList && menuList.length > 0){\r\n // for (let index = 0; index < menuList.length; index++) {\r\n // const menu = menuList[index];\r\n // if(menu.submenu && menu.submenu != null){\r\n // let modifySubMenuList = [];\r\n // let check = 0;\r\n // for (let j = 0; j < menu.submenu.length; j++) {\r\n // const submenu = menu.submenu[j];\r\n // if(!this.checkPermission(submenu)){\r\n // submenu['display'] = true;\r\n // modifySubMenuList.push(submenu);\r\n // check = 1;\r\n // }else{\r\n // submenu['display'] = false;\r\n // modifySubMenuList.push(submenu);\r\n // }\r\n // }\r\n // if(check == 1){\r\n // menu['display'] = true;\r\n // }else{\r\n // menu['display'] = false;\r\n // }\r\n // menu.submenu = modifySubMenuList;\r\n // modifyMenuList.push(menu);\r\n // }else{\r\n // if(!this.checkPermission(menu)){\r\n // menu['display'] = true;\r\n // modifyMenuList.push(menu);\r\n // }else{\r\n // menu['display'] = false;\r\n // modifyMenuList.push(menu);\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return modifyMenuList;\r\n // }\r\n // setDisplayInModuleWithPermission(menuList:any){\r\n // let check = false;\r\n // if(menuList && menuList.length > 0){\r\n // for (let index = 0; index < menuList.length; index++) {\r\n // const menu = menuList[index];\r\n // if(menu.submenu && menu.submenu != null){\r\n // for (let j = 0; j < menu.submenu.length; j++) {\r\n // const submenu = menu.submenu[j];\r\n // if(submenu.display){\r\n // check = true;\r\n // break;\r\n // }\r\n // }\r\n // }else{\r\n // if(menu.display){\r\n // check = true;\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return check;\r\n // }\r\n getDefaultMenu(menuList:any){\r\n let menu:any = {};\r\n let defaultMenu:any = {};\r\n let defaultMenuIndexs = this.getDefaultMenuIndex(menuList);\r\n menu['indexs'] = defaultMenuIndexs;\r\n if(defaultMenuIndexs.defaultSubmenuIndex > -1){\r\n defaultMenu = menuList[defaultMenuIndexs.defaultmenuIndex].submenu[defaultMenuIndexs.defaultSubmenuIndex];\r\n defaultMenu['child'] = true;\r\n }else{\r\n defaultMenu = menuList[defaultMenuIndexs.defaultmenuIndex];\r\n defaultMenu['child'] = false;\r\n }\r\n defaultMenu['menuIndex'] = defaultMenuIndexs.defaultmenuIndex;\r\n menu['menu'] = defaultMenu;\r\n // if(defaultMenu.display){\r\n\r\n // }else{\r\n // menu['menu'] = this.findMenuWithPermission(menuList);\r\n // }\r\n return menu;\r\n }\r\n // findMenuWithPermission(menuList:any){\r\n // let modifyMenu = {};\r\n // if(menuList && menuList.length > 0){\r\n // for (let index = 0; index < menuList.length; index++) {\r\n // const menu = menuList[index];\r\n // if(menu.display && menu.submenu && menu.submenu != null){\r\n // for (let j = 0; j < menu.submenu.length; j++) {\r\n // const submenu = menu.submenu[j];\r\n // if(submenu.display){\r\n // modifyMenu = submenu;\r\n // break;\r\n // }\r\n // }\r\n // }else{\r\n // if(menu.display){\r\n // modifyMenu = menu;\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return modifyMenu;\r\n // }\r\n setModuleName(moduleName:string){\r\n this.storageService.setModule(moduleName);\r\n }\r\n getModuleIndexById(moduleId:any){\r\n let moduleList = this.storageService.GetModules();\r\n return this.commonFunctionService.getIndexInArrayById(moduleList,moduleId);\r\n }\r\n shareMenuIndex(menuIndex:number,subMenuIndex:number,moduleIndex?:number){\r\n let indexs:any = {};\r\n indexs['menuIndex'] = menuIndex;\r\n indexs['submenuIndex'] = subMenuIndex;\r\n indexs['moduleIndex'] = moduleIndex;\r\n this.dataShareService.setMenuIndexs(indexs);\r\n}\r\n getIndexsByMenuName(menuList:any,menuName:any){\r\n let indexs= {\r\n 'menuindex':-1,\r\n 'submenuindex':-1\r\n }\r\n for (let index = 0; index < menuList.length; index++) {\r\n const menu = menuList[index];\r\n if(!menu.submenu && menu.name == menuName){\r\n indexs.menuindex = index;\r\n indexs.submenuindex = -1;\r\n }else{\r\n if(menu.submenu && menu.submenu.length > 0){\r\n for (let j = 0; j < menu.submenu.length; j++) {\r\n const subMenu = menu.submenu[j];\r\n if(subMenu.name == menuName){\r\n indexs.menuindex = index;\r\n indexs.submenuindex = j;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return indexs;\r\n }\r\n getMenuNameById(module:any,menuId:any,submenuId:any,key?:any){\r\n let menuName:any = {};\r\n let menuList = module.menu_list;\r\n let menuIndex = this.commonFunctionService.getIndexInArrayById(menuList,menuId,key);\r\n menuName['menuIndex'] = menuIndex;\r\n let menu = menuList[menuIndex];\r\n if(submenuId != \"\"){\r\n if(menu.submenu){\r\n let subMenuList = menu.submenu;\r\n if(subMenuList && subMenuList.length > 0){\r\n let subMenuIndex = this.commonFunctionService.getIndexInArrayById(subMenuList,submenuId,key);\r\n menuName['subMenuIndex'] = subMenuIndex;\r\n let submenu = subMenuList[subMenuIndex];\r\n menuName['name'] = submenu.name;\r\n }\r\n }\r\n }else{\r\n menuName['name'] = menu.name;\r\n }\r\n return menuName;\r\n }\r\n // checkPermission(menu:any){\r\n // return !this.permissionService.checkPermission(menu.name, 'view')\r\n // }\r\n getTemplateData(module:any,submenu:any) {\r\n if(submenu && submenu.name){\r\n this.storageService.SetActiveMenu(submenu);\r\n if (submenu.label == \"Navigation\") {\r\n this.router.navigate(['Navigation']);\r\n }\r\n else if (submenu.label == \"Permissions\") {\r\n this.router.navigate(['permissions']);\r\n }\r\n else {\r\n const menu = submenu;\r\n if(menu.name == \"document_library\"){\r\n this.router.navigate(['vdr']);\r\n }else if(menu.name == \"report\"){\r\n this.router.navigate(['report']);\r\n }\r\n else{\r\n this.apiService.resetTempData();\r\n this.apiService.resetGridData();\r\n this.GoToSelectedModule(module);\r\n const route = 'browse/'+module.name+\"/\"+submenu.name;\r\n //console.log(route);\r\n this.router.navigate([route]);\r\n //this.router.navigate(['template']);\r\n }\r\n }\r\n }else{\r\n this.permissionService.checkTokenStatusForPermission();\r\n }\r\n }\r\n\r\n GoToSelectedModule(item:any){\r\n if(item && item.name){\r\n this.setModuleName(item.name);\r\n }\r\n this.dataShareService.sendCurrentPage('DASHBOARD');\r\n }\r\n goToMOdule() {\r\n this.dataShareService.sendCurrentPage('MODULE');\r\n this.dataShareService.resetHeaderMenu([]);\r\n this.dataShareService.setModuleIndex(-1);\r\n this.dataShareService.setMenuIndexs({menuIndex:-1,submenuIndex:-1});\r\n const menuType = this.storageService.GetMenuType()\r\n if (menuType == 'Horizontal') {\r\n this.router.navigate(['/home']);\r\n } else {\r\n this.router.navigate(['/dashboard']);\r\n }\r\n }\r\n\r\n viewPermissionInTabs(tabs:any){\r\n tabs.forEach((tab:any) => {\r\n let tab_name = tab.tab_name;\r\n let check = this.permissionService.checkPermission(tab_name,'view');\r\n tab['display'] = check;\r\n tab['febMenu'] = this.checkFebMenuAddOrNot(tab,'');\r\n });\r\n return tabs;\r\n }\r\n\r\n addPermissionInTab(tab:any){\r\n if(tab && tab.tab_name){\r\n let name = tab.tab_name;\r\n let check = this.permissionService.checkPermission(name,'add');\r\n tab['addForm'] = check;\r\n }\r\n return tab;\r\n }\r\n checkFebMenuAddOrNot(tab:any,parent:any){\r\n let tabId = tab._id;\r\n if(parent != ''){\r\n tabId = parent._id;\r\n }\r\n let userFebTab = this.userPrefrenceService.getUserPreferenceByFieldName('favoriteTabs');\r\n if(userFebTab && userFebTab != null && userFebTab.length > 0){\r\n let match = -1;\r\n for (let index = 0; index < userFebTab.length; index++) {\r\n const element = userFebTab[index];\r\n if(element._id == tabId ){\r\n match = index;\r\n break;\r\n }\r\n }\r\n if(match > -1){\r\n if(parent != ''){\r\n const submenu = userFebTab[match]['tab'];\r\n let subMatchIndex = -1;\r\n if(submenu && submenu.length > 0){\r\n for (let j = 0; j < submenu.length; j++) {\r\n const subMenu = submenu[j];\r\n if(subMenu._id == tab._id){\r\n subMatchIndex = j;\r\n break;\r\n }\r\n\r\n }\r\n }\r\n if(subMatchIndex > -1){\r\n return true\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return true;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n // for App\r\n getModuleBySelectedIndex(){\r\n const moduleList = this.commonAppDataShareService.getModuleList();\r\n const clickedModuleIndex = this.commonAppDataShareService.getModuleIndex();\r\n let module:any = {};\r\n if(clickedModuleIndex >= 0){\r\n module = moduleList[clickedModuleIndex];\r\n }\r\n return module;\r\n }\r\n getCard(index:any){\r\n const moduleList = this.commonAppDataShareService.getModuleList();\r\n const clickedModuleIndex = this.commonAppDataShareService.getModuleIndex();\r\n let card:any = {};\r\n let tabs:any =[];\r\n let selectedTabIndex:number = -1;\r\n let popoverTabbing = false;\r\n if(clickedModuleIndex >= 0){\r\n card = moduleList[clickedModuleIndex];\r\n }\r\n if(card && card.tab_menu && card.tab_menu.length > 0 && card.popoverTabbing){\r\n popoverTabbing = true;\r\n }\r\n if(card && card.tab_menu && card.tab_menu.length > 0){\r\n const clickedtabIndex= this.commonAppDataShareService.getSelectdTabIndex();\r\n tabs = card.tab_menu;\r\n let tab:any = {};\r\n if(index == -1){\r\n tab = tabs[0];\r\n selectedTabIndex = 0;\r\n }else{\r\n tab = tabs[clickedtabIndex];\r\n selectedTabIndex = clickedtabIndex;\r\n }\r\n const tabIndex = this.commonFunctionService.getIndexInArrayById(moduleList,tab._id,\"_id\");\r\n card = moduleList[tabIndex];\r\n }\r\n let object = {\r\n 'tabs' : tabs,\r\n \"card\" : card,\r\n \"selectedTabIndex\" : selectedTabIndex,\r\n \"popoverTabbing\" : popoverTabbing\r\n }\r\n return object;\r\n }\r\n getUserAutherisedCards(cardMasterList:any){\r\n const userAuthModules:any = this.storageService.GetModules();\r\n const cardList:any = [];\r\n if(userAuthModules && userAuthModules != null){\r\n userAuthModules.forEach((module:any, i:number) => {\r\n if(module && module['_id']){\r\n cardMasterList.forEach((card:any, j:number) => {\r\n if(card && card.userAutherisedModule && card['userAutherisedModule']['_id']){\r\n if(module['_id'] == card['userAutherisedModule']['_id']){\r\n cardList.push(card);\r\n }\r\n }\r\n })\r\n }\r\n });\r\n return cardList;\r\n }\r\n return null;\r\n }\r\n getNestedCard(cardGrid:any, cardGridName:any) {\r\n if (cardGrid[cardGridName] && cardGrid[cardGridName] != undefined && cardGrid[cardGridName] != null && cardGrid[cardGridName] != '') {\r\n return JSON.parse(JSON.stringify(cardGrid[cardGridName]));\r\n } else {\r\n return {};\r\n }\r\n }\r\n getModulesFromObject(obj: any) {\r\n let modules: any[] = [];\r\n\r\n const processModule = (moduleKey: string, module: any) => {\r\n let moduleObj: any = { keyName: moduleKey };\r\n if (module.reference) {\r\n moduleObj = { ...moduleObj, ...module.reference };\r\n }\r\n moduleObj.notification = module.notification || false;\r\n moduleObj.menu_list = this.getMenuList(module.menus);\r\n modules.push(moduleObj);\r\n };\r\n\r\n if (obj.notifications) {\r\n obj = obj.notifications;\r\n if (obj && Object.keys(obj).length > 0) {\r\n Object.entries<any>(obj).forEach(([moduleKey, module]) => {\r\n processModule(moduleKey, module);\r\n });\r\n }\r\n }\r\n\r\n return modules;\r\n }\r\n\r\n getMenuList = (menus: any) => {\r\n let menuList: any[] = [];\r\n if (menus) {\r\n Object.entries<any>(menus).forEach(([menuKey, menu]) => {\r\n let menuObj: any = { keyName: menuKey };\r\n if (menu.reference) {\r\n menuObj = { ...menuObj, ...menu.reference };\r\n }\r\n menuObj.submenu = this.getMenuList(menu.submenus);\r\n if(!menuObj?.submenu){menuObj.templateTabs = this.getTabList(menu.templateTabs);}\r\n menuList.push(menuObj);\r\n });\r\n }\r\n return menuList.length > 0 ? this.coreFunctionService.sortMenu(menuList) : null;\r\n };\r\n\r\n getTabList = (tabs: any) => {\r\n let tabList: any[] = [];\r\n if (tabs) {\r\n Object.entries<any>(tabs).forEach(([tabKey, tab]) => {\r\n let tabObj: any = { keyName: tabKey };\r\n if (tab.reference) {\r\n tabObj = { ...tabObj, ...tab.reference };\r\n }\r\n tabObj.email = tab.activeAlerts?.includes(\"EMAIL\") || false;\r\n tabObj.whatsapp = tab.activeAlerts?.includes(\"WHATSAPP\") || false;\r\n tabObj.sms = tab.activeAlerts?.includes(\"SMS\") || false;\r\n tabList.push(tabObj);\r\n });\r\n }\r\n return tabList;\r\n };\r\n\r\n getMenuDetails(module: any) {\r\n let obj: any = {};\r\n if (module) {\r\n module.forEach((menu: any) => {\r\n let menuName = menu?.keyName;\r\n let menuDetails: any = {};\r\n let reference: any = {\r\n name: menu?.name,\r\n _id: menu?._id\r\n }\r\n if (menu) {\r\n if (menu?.templateTabs) {\r\n menuDetails = {\r\n reference,\r\n templateTabs: this.getTempDetails(menu.templateTabs)\r\n }\r\n obj[menuName] = menuDetails;\r\n } else if (menu?.submenu) {\r\n menuDetails = {\r\n reference,\r\n submenus: this.getMenuDetails(menu.submenu)\r\n }\r\n obj[menuName] = menuDetails;\r\n }\r\n }\r\n })\r\n\r\n return obj;\r\n }\r\n}\r\n\r\n\r\ngetTempDetails(tabs:any){\r\n let obj:any={};\r\n tabs.forEach((tab:any)=>{\r\n if(tab){\r\n let tabName=tab?.keyName;\r\n let tabDetails={\r\n reference:{\r\n name:tab?.name,\r\n _id:tab?._id\r\n },\r\n activeAlerts:this.getActiveAlerts(tab)\r\n }\r\n obj[tabName]=tabDetails;\r\n }\r\n })\r\n return obj;\r\n}\r\n\r\ngetActiveAlerts(tab:any){\r\n let arr=[];\r\n if(tab?.email){\r\n arr.push('EMAIL');\r\n }\r\n if(tab?.whatsapp){\r\n arr.push('WHATSAPP');\r\n }\r\n if(tab?.sms){\r\n arr.push('SMS');\r\n }\r\n return arr;\r\n}\r\n // End For APP\r\n\r\n}\r\n","import { ApiCallService } from './../api/api-call/api-call.service';\r\nimport { Injectable, QueryList } from '@angular/core';\r\nimport { FormBuilder, UntypedFormGroup, UntypedFormControl, FormArray, Validators } from '@angular/forms';\r\nimport { CommonFunctionService } from '../../services/common-utils/common-function.service';\r\nimport { CoreFunctionService } from '../common-utils/core-function/core-function.service';\r\nimport { NotificationService } from '../notify/notification.service';\r\nimport { StorageService } from '../storage/storage.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LimsCalculationsService {\r\n\r\n constructor(\r\n private commonFunctionService: CommonFunctionService,\r\n private coreFunctionService: CoreFunctionService,\r\n private notificationService: NotificationService,\r\n private storageService:StorageService,\r\n private apiCallService:ApiCallService\r\n ) { }\r\n\r\n\r\n calculateBalanceAmountEngLetter(tamplateFormValue:any, multiFormValue:any) {\r\n let list = tamplateFormValue['billingPlan'];\r\n let fees = +multiFormValue['totalFees'];\r\n let milestoneAchievedtotal = 0;\r\n let total = 0;\r\n if (list != null && list != undefined) {\r\n for (let i = 0; i < list.length; i++) {\r\n milestoneAchievedtotal += list[i]['feesOnMilestoneAchieved']\r\n }\r\n }\r\n total = milestoneAchievedtotal + tamplateFormValue['feesOnMilestoneAchieved'];\r\n let remaningAmount = fees - total;\r\n\r\n let obj = {\r\n balanceAmount: remaningAmount\r\n }\r\n return obj;\r\n }\r\n getTaWithCalculation(value:any) {\r\n let localTas = 0;\r\n let claimSheet = value.claimSheet;\r\n let priceInKm = claimSheet.priceInKm;\r\n let distanceInkm = claimSheet.distanceInKm;\r\n localTas = priceInKm * distanceInkm;\r\n let obj1 = {\r\n localTa: localTas\r\n }\r\n let obj = {\r\n claimSheet: obj1\r\n }\r\n return obj;\r\n }\r\n\r\n calculateTotalAmount(formValue:any) {\r\n let list = formValue['claimSheet'];\r\n let total = 0;\r\n for (let i = 0; i < list.length; i++) {\r\n total += list[i]['totalForTheDay']\r\n }\r\n let obj = {\r\n totalAmountOfTravelCliam: total\r\n }\r\n return obj;\r\n }\r\n\r\n calculateTotalFair(value:any) {\r\n let totalFair = 0;\r\n let curValue:any = {};\r\n let checkClaimSheet = false;\r\n let calculateObject = {\r\n totalForTheDay : 0\r\n }\r\n if(value && value.claimSheet){\r\n curValue = value.claimSheet;\r\n checkClaimSheet = true;\r\n }else{\r\n curValue = value;\r\n }\r\n let localTa = curValue.localTa;\r\n let travelFair = curValue.travelFare;\r\n let dailyAllowance = curValue.dailyAllowance;\r\n let food = curValue.food;\r\n let hotel = curValue.hotel;\r\n let parking = curValue.parking;\r\n let toolCharge = curValue.tollCharge;\r\n let miscellaneous = curValue.miscellaneous;\r\n totalFair = (+travelFair) + (+localTa) + (+dailyAllowance) + (+food) + (+hotel) + (+parking) + (+toolCharge) + (+miscellaneous);\r\n\r\n calculateObject.totalForTheDay = totalFair;\r\n if(checkClaimSheet){\r\n return {\r\n claimSheet: calculateObject\r\n }\r\n }else{\r\n return calculateObject\r\n }\r\n }\r\n\r\n buggetForcastCalc(templateForm: any) {\r\n let templateValue = templateForm.getRawValue();\r\n let actualCurYr = templateValue.actual_current;\r\n let actualLastYr = templateValue.actuals;\r\n let budget = templateValue.this_year;\r\n let growthpers:any = {};\r\n let budgetpers:any = {};\r\n let value:any = [];\r\n let value1:any = [];\r\n Object.keys(actualCurYr).forEach(key => {\r\n let growthper = 0;\r\n let budgetper = 0;\r\n let actualCurYrMonth = actualCurYr[key];\r\n let actualLastYrMonth = actualLastYr[key];\r\n if (actualLastYrMonth != 0) {\r\n growthper = actualCurYrMonth / actualLastYrMonth;\r\n }\r\n\r\n let budgetcurYrMonth = budget[key];\r\n if (budgetcurYrMonth != 0) {\r\n budgetper = actualCurYrMonth / budgetcurYrMonth;\r\n }\r\n\r\n growthpers[key] = growthper;\r\n let obj = {\r\n field: key, value: growthpers[key]\r\n }\r\n value.push(obj)\r\n\r\n budgetpers[key] = budgetper;\r\n let obj1 = {\r\n field: key, value: budgetpers[key]\r\n }\r\n value1.push(obj1)\r\n })\r\n const fieldWithValueforgrowth = {\r\n field: 'growth_per', value: value\r\n }\r\n fieldWithValueforgrowth.value.forEach((element:any) => {\r\n (<UntypedFormGroup>templateForm.controls[fieldWithValueforgrowth.field]).controls[element.field].patchValue(element.value);\r\n })\r\n\r\n const fieldWithValueforBudget = {\r\n field: 'budget_per', value: value1\r\n }\r\n fieldWithValueforBudget.value.forEach((element:any) => {\r\n (<UntypedFormGroup>templateForm.controls[fieldWithValueforBudget.field]).controls[element.field].patchValue(element.value);\r\n })\r\n }\r\n\r\n calculateAutoEffRate(data:any) {\r\n data.forEach((element:any) => {\r\n element[\"per_sample_net_rate\"] = element[\"no_of_samples\"] * element[\"quotation_effective_rate\"];\r\n });\r\n return data;\r\n }\r\n calculate_next_calibration_due_date(templateForm:any) {\r\n const objectValue = templateForm.getRawValue();\r\n let calibration_date = objectValue['calibration_date']\r\n let calibration_frequency = objectValue['calibration_frequency']\r\n if (calibration_date != null && calibration_date !== undefined && calibration_frequency != null && calibration_frequency !== undefined && calibration_date !== \"\" && calibration_frequency !== \"\") {\r\n let date = new Date();\r\n date.setDate(calibration_date.getDate() + calibration_frequency);\r\n templateForm.controls['next_date'].setValue(date);\r\n }\r\n }\r\n\r\n calculation_of_script_for_tds(object:any, field: any) {\r\n const staticModal = []\r\n staticModal.push(this.apiCallService.getPaylodWithCriteria('QTMP:CALCULATION_SCRIPT', field.onchange_call_back_field, field.onchange_api_params_criteria, object));\r\n staticModal[0]['data'] = object;\r\n return staticModal;\r\n }\r\n getDecimalAmount(value:any): any {\r\n let decimaldigitNo:number = this.storageService.getApplicationSetting().roundValueNoOfDigits;\r\n let decimalno:number = 2;\r\n if(decimaldigitNo != undefined && decimaldigitNo != null) {\r\n decimalno = decimaldigitNo;\r\n }\r\n if (typeof (value) == 'number' && value != undefined && value != null) {\r\n return Number(value.toFixed(decimalno));\r\n } else {\r\n return;\r\n }\r\n }\r\n legacyQuotationParameterCalculation(data:any, fieldName:any) {\r\n let quantity = 0;\r\n let discount_percent = 0;\r\n let cost_rate = 0;\r\n let net_amount:any = 0;\r\n let param_quantom = 0;\r\n let Base_quotation_rate = 0;\r\n let incoming_field = fieldName.field_name;\r\n\r\n let gross_amount:any = 0;\r\n let dis_amt:any = 0;\r\n switch (incoming_field) {\r\n case \"claim_unit\":\r\n case \"claim_percent\":\r\n this.calculate_pharma_claim_values(data);\r\n break;\r\n case \"parameter_quantum\":\r\n if (data.parameter_quantum) {\r\n data['quantum_rate'] = (+data.quotation_rate) * (+data.parameter_quantum);\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n net_amount = +data.quotation_effective_rate\r\n if (data.discount_percent) {\r\n let discount = ((+data.quotation_effective_rate) * (+data.discount_percent)) / 100;\r\n data['discount_amount'] = discount;\r\n net_amount = (+data.quotation_effective_rate) - discount;\r\n }\r\n data['net_amount'] = net_amount\r\n }\r\n break;\r\n case \"qty\":\r\n if (data.qty) {\r\n if (data.branch && data.branch.name && data.branch.name === \"Pune\") {\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n } else {\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.offer_rate);\r\n }\r\n\r\n\r\n if (data.no_of_injection > 0) {\r\n // this.calculateParameterAmtOnInjection(data);\r\n }\r\n else {\r\n net_amount = +data.quotation_effective_rate\r\n if (data.discount_percent) {\r\n let discount = this.getDecimalAmount((+data.quotation_effective_rate) * (+data.discount_percent)) / 100;\r\n data['discount_amount'] = discount;\r\n net_amount = this.getDecimalAmount((+data.quotation_effective_rate) - discount);\r\n }\r\n data['net_amount'] = net_amount\r\n data['total'] = +data.quotation_effective_rate;\r\n data['qty'] = data.qty\r\n }\r\n\r\n }\r\n break;\r\n case \"discount_percent\":\r\n if (!data.discount_percent) {\r\n data.discount_percent = 0;\r\n } if (data.no_of_injection > 0) {\r\n // this.calculateParameterAmtOnInjection(data);\r\n } else if (data.branch && data.branch.name && data.branch.name === \"Pune\") {\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n } else {\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.offer_rate);\r\n }\r\n net_amount = +data.quotation_effective_rate\r\n let discount = this.getDecimalAmount(((+data.quotation_effective_rate) * (+data.discount_percent)) / 100);\r\n data['discount_amount'] = discount;\r\n net_amount = this.getDecimalAmount((+data.quotation_effective_rate) - discount);\r\n data['discount_percent'] = data.discount_percent;\r\n data['net_amount'] = net_amount\r\n data['total'] = +data.quotation_effective_rate;\r\n data['qty'] = data.qty;\r\n data['discount_percent'] = +data['discount_percent'];\r\n\r\n break;\r\n\r\n case \"offer_rate\":\r\n if (data.no_of_injection > 0) {\r\n if (data.offer_rate) {\r\n data[\"rate_per_injection\"] = data.offer_rate;\r\n }\r\n\r\n // this.calculateParameterAmtOnInjection(data);\r\n } else {\r\n if (data.offer_rate) {\r\n gross_amount = this.getDecimalAmount(data.offer_rate * data.qty);\r\n if (data.discount_percent && data.discount_percent > 0) {\r\n dis_amt = this.getDecimalAmount((gross_amount * data.discount_percent) / 100);\r\n }\r\n net_amount = gross_amount - dis_amt;\r\n }\r\n data['net_amount'] = net_amount;\r\n data['discount_amount'] = dis_amt;\r\n data['total'] = gross_amount;\r\n data['quotation_effective_rate'] = gross_amount;\r\n }\r\n break;\r\n case \"discount_amount\":\r\n if ((data.discount_amount == 0) || (data.discount_amount)) {\r\n net_amount = (+data.quotation_effective_rate) - (+data.discount_amount);\r\n let discount_per = this.getDecimalAmount(((+data.discount_amount) * 100) / (+data.quotation_effective_rate));\r\n data['net_amount'] = net_amount;\r\n data['discount_percent'] = discount_per;\r\n data['discount_amount'] = +data['discount_amount'];\r\n }\r\n break;\r\n\r\n }\r\n if (data['qty'] > 0) {\r\n data['per_sample_net_rate'] = this.getDecimalAmount(data['net_amount'] / data['qty']);\r\n }\r\n let amountFields = [\r\n 'quotation_effective_rate',\r\n 'discount_amount',\r\n 'discount_percent',\r\n 'net_amount',\r\n 'total',\r\n 'per_sample_net_rate'\r\n ];\r\n amountFields.forEach(column => {\r\n data[column] = this.getDecimalAmount(data[column]);\r\n });\r\n }\r\n\r\n\r\n calculate_pharma_claim_values(new_element: any) {\r\n if (new_element.claim_dependent && !isNaN(new_element.claim_percent)) {\r\n if (!isNaN(+new_element.limit_from)) {\r\n if (this.coreFunctionService.isNotBlank(new_element.claim_percent)) {\r\n new_element.claim_limit_from = (+new_element.limit_from) * (new_element.claim_percent) / 100;\r\n if (new_element.claim_unit) {\r\n new_element.claim_limit_from = new_element.claim_limit_from + \" \" + new_element.claim_unit;\r\n }\r\n } else {\r\n new_element.claim_limit_from = new_element.limit_from;\r\n }\r\n }\r\n if (!isNaN(+new_element.limit_to)) {\r\n if (this.coreFunctionService.isNotBlank(new_element.claim_percent)) {\r\n new_element.claim_limit_to = (+new_element.limit_to) * (new_element.claim_percent) / 100;\r\n if (new_element.claim_unit) {\r\n new_element.claim_limit_to = new_element.claim_limit_to + \" \" + new_element.claim_unit;\r\n }\r\n } else {\r\n new_element.claim_limit_to = new_element.limit_to;\r\n }\r\n }\r\n }\r\n }\r\n\r\n calculatePharamaParameterAmount(data:any, offer_rate: number, quantity: number, field_name?:any) {\r\n let gross_amount:any = this.calculateParameterAmtOnInjection(data, data[\"rate_per_injection\"], quantity)\r\n let effectiveTotal:any = this.calculateParameterAmtOnInjection(data, offer_rate, quantity)\r\n let dis_amt = gross_amount - effectiveTotal;\r\n switch (field_name) {\r\n case 'discount_amount':\r\n effectiveTotal = gross_amount - data['discount_amount'];\r\n dis_amt = data['discount_amount'];\r\n break;\r\n default:\r\n\r\n }\r\n let discount_percent = 0;\r\n if (gross_amount > 0) {\r\n discount_percent = (dis_amt / gross_amount) * 100;\r\n }\r\n else {\r\n discount_percent = 0;\r\n }\r\n this.populateParameterAmount(data, effectiveTotal, discount_percent, dis_amt, quantity, gross_amount)\r\n }\r\n\r\n\r\n calculateParameterAmtOnInjection(data:any, rate:any, quantity:any) {\r\n let totalInjection = data.no_of_injection;\r\n if (!this.coreFunctionService.isNotBlank(totalInjection)) {\r\n totalInjection = 0;\r\n }\r\n\r\n if (!this.coreFunctionService.isNotBlank(rate)) {\r\n rate = 0;\r\n }\r\n let rate_per_injection = rate;\r\n let totalAmount = this.getDecimalAmount(totalInjection * rate_per_injection);\r\n if (data.no_of_injection2 > 0) {\r\n let no_of_injection2 = data.no_of_injection2;\r\n if (quantity > 1 && no_of_injection2 > 0) {\r\n totalInjection = this.getDecimalAmount(totalInjection + (quantity - 1) * no_of_injection2);\r\n totalAmount = this.getDecimalAmount(totalInjection * rate_per_injection);\r\n }\r\n }\r\n else if (data.no_of_injection > 0 && data.no_of_injection2 <= 0) {\r\n let no_of_injection = data.no_of_injection;\r\n if (quantity > 1 && no_of_injection > 0) {\r\n totalInjection = this.getDecimalAmount(totalInjection + (quantity - 1) * no_of_injection);\r\n totalAmount = this.getDecimalAmount(totalInjection * rate_per_injection);\r\n }\r\n }\r\n else {\r\n totalAmount = this.getDecimalAmount(quantity * totalInjection * rate_per_injection);\r\n }\r\n // data[\"quotation_effective_rate\"]= totalAmount;\r\n // data[\"total\"] = totalAmount;\r\n // data[\"discount_amount\"] = this.getDecimalAmount((data.total* data.discount_percent)/100);\r\n // data[\"net_amount\"] = this.getDecimalAmount(data.total- data.discount_amount);\r\n data[\"total_injection\"] = totalInjection;\r\n return totalAmount;\r\n }\r\n\r\n getDiscountPercentage(current_disount: number, discount_amount: number, gross_amount: number, quantity: number) {\r\n if (quantity > 0 && gross_amount > 0) {\r\n current_disount = discount_amount * 100 / gross_amount;\r\n }\r\n return current_disount;\r\n }\r\n\r\n calculateQuotationParameterAmountForAutomotiveLims(data:any, fieldName:any) {\r\n let quantity = 0;\r\n let discount_percent = 0;\r\n let cost_rate = 0;\r\n let net_amount:any = 0;\r\n let param_quantom = 0;\r\n let Base_quotation_rate = 0;\r\n let incoming_field = fieldName;\r\n\r\n let gross_amount = 0;\r\n let dis_amt = 0;\r\n switch (incoming_field) {\r\n case \"parameter_quantum\":\r\n let parameterQuantum = data.parameter_quantum;\r\n if (!this.coreFunctionService.isNotBlank(parameterQuantum)) {\r\n parameterQuantum = 0;\r\n }\r\n data['quantum_rate'] = (+data.quotation_rate) * (+parameterQuantum);\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n net_amount = +data.quotation_effective_rate\r\n if (data.discount_percent) {\r\n let discount = ((+data.quotation_effective_rate) * (+data.discount_percent)) / 100;\r\n data['discount_amount'] = discount;\r\n net_amount = (+data.quotation_effective_rate) - discount;\r\n }\r\n data['net_amount'] = net_amount\r\n\r\n break;\r\n case \"qty\":\r\n let quantity = data.qty;\r\n if (!this.coreFunctionService.isNotBlank(quantity)) {\r\n quantity = 0;\r\n }\r\n\r\n data['quotation_effective_rate'] = (+quantity) * (+data.quantum_rate);\r\n if (data.discount_percent) {\r\n let discount = this.getDecimalAmount((+data.quotation_effective_rate) * (+data.discount_percent)) / 100;\r\n data['discount_amount'] = discount;\r\n }\r\n net_amount = this.getDecimalAmount((+data.quotation_effective_rate) - data['discount_amount']);\r\n data['net_amount'] = net_amount\r\n data['total'] = +data.quotation_effective_rate;\r\n data['qty'] = data.qty\r\n\r\n break;\r\n case \"discount_percent\":\r\n let discount_per = data.discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(discount_per)) {\r\n discount_per = 0;\r\n }\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n net_amount = +data.quotation_effective_rate\r\n let discount = this.getDecimalAmount(((+data.quotation_effective_rate) * (+discount_per)) / 100);\r\n data['discount_amount'] = discount;\r\n net_amount = this.getDecimalAmount((+data.quotation_effective_rate) - discount);\r\n data['net_amount'] = net_amount\r\n data['total'] = +data.quotation_effective_rate;\r\n data['qty'] = data.qty;\r\n data['discount_percent'] = +discount_per;\r\n\r\n break;\r\n\r\n case \"discount_amount\":\r\n let discount_amt = data.discount_amount;\r\n if (!this.coreFunctionService.isNotBlank(discount_amt)) {\r\n discount_amt = 0;\r\n }\r\n\r\n net_amount = (+data.quotation_effective_rate) - (+discount_amt);\r\n let discount_perc = this.getDecimalAmount(((+discount_amt) * 100) / (+data.quotation_effective_rate));\r\n data['net_amount'] = net_amount;\r\n data['discount_percent'] = discount_perc;\r\n data['discount_amount'] = +data['discount_amount'];\r\n\r\n break;\r\n default:\r\n\r\n }\r\n if (data['qty'] > 0) {\r\n data['per_sample_net_rate'] = this.getDecimalAmount(data['net_amount'] / data['qty']);\r\n } else {\r\n data['per_sample_net_rate'] = 0;\r\n }\r\n this.sanitizeParameterAmount(data);\r\n }\r\n\r\n sanitizeParameterAmount(data:any){\r\n let amountFields = [\r\n 'quotation_effective_rate',\r\n 'discount_amount',\r\n 'discount_percent',\r\n 'net_amount',\r\n 'total',\r\n 'per_sample_net_rate'\r\n ];\r\n amountFields.forEach(column => {\r\n data[column] = this.getDecimalAmount(data[column]);\r\n if(typeof(data[column]) != 'number'){\r\n data[column]=0;\r\n }\r\n });\r\n }\r\n\r\n\r\n calculateQuotationParameterAmountForLims(data:any, fieldName:any) {\r\n let quantity = 0;\r\n let discount_percent:any = 0;\r\n let cost_rate = 0;\r\n let net_amount:any = 0;\r\n let discount_amount = 0;\r\n let param_quantom = 0;\r\n let Base_quotation_rate = 0;\r\n let incoming_field = fieldName;\r\n let sale_rate = data['sale_rate'];\r\n let gross_amount = 0;\r\n let effectiveTotal = 0;\r\n let dis_amt:any = 0;\r\n quantity = data.qty;\r\n if (!this.coreFunctionService.isNotBlank(quantity)) {\r\n quantity = 0;\r\n }\r\n gross_amount = quantity * sale_rate;\r\n\r\n switch (incoming_field) {\r\n\r\n case \"qty\":\r\n effectiveTotal = (+quantity) * (+data.offer_rate);\r\n if (data.no_of_injection > 0) {\r\n this.calculatePharamaParameterAmount(data, data.offer_rate, quantity);\r\n\r\n }\r\n else {\r\n dis_amt = gross_amount - effectiveTotal;\r\n if (gross_amount > 0) {\r\n discount_percent = this.getDecimalAmount(100 * dis_amt / gross_amount);\r\n } else {\r\n discount_percent = 0;\r\n }\r\n net_amount = effectiveTotal;\r\n this.populateParameterAmount(data, net_amount, discount_percent, dis_amt, quantity, gross_amount)\r\n\r\n }\r\n break;\r\n case \"discount_percent\":\r\n discount_percent = data.discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(discount_percent)) {\r\n discount_percent = 0;\r\n }\r\n if (data.no_of_injection > 0) {\r\n let offeringRate = data.rate_per_injection * (1 - discount_percent / 100);\r\n this.calculatePharamaParameterAmount(data, offeringRate, quantity);\r\n } else {\r\n dis_amt = this.getDecimalAmount(((+gross_amount) * (+discount_percent)) / 100);\r\n net_amount = this.getDecimalAmount((+gross_amount) - dis_amt);\r\n this.populateParameterAmount(data, net_amount, discount_percent, dis_amt, quantity, gross_amount)\r\n }\r\n break;\r\n\r\n case \"unit_price\":\r\n discount_percent = data.discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(discount_percent)) {\r\n discount_percent = 0;\r\n }\r\n if (data.no_of_injection > 0) {\r\n let offeringRate = data.rate_per_injection * (1 - discount_percent / 100);\r\n this.calculatePharamaParameterAmount(data, offeringRate, quantity);\r\n } else {\r\n dis_amt = this.getDecimalAmount(((+gross_amount) * (+discount_percent)) / 100);\r\n net_amount = this.getDecimalAmount((+gross_amount) - dis_amt);\r\n\r\n this.populateParameterAmount(data, net_amount, discount_percent, dis_amt, quantity, gross_amount)\r\n }\r\n break;\r\n\r\n case \"offer_rate\":\r\n let offer_rate = data.offer_rate;\r\n if (!this.coreFunctionService.isNotBlank(offer_rate)) {\r\n offer_rate = 0;\r\n }\r\n if (data.no_of_injection > 0) {\r\n\r\n this.calculatePharamaParameterAmount(data, offer_rate, quantity);\r\n\r\n } else {\r\n if (offer_rate) {\r\n effectiveTotal = quantity * offer_rate;\r\n dis_amt = gross_amount - effectiveTotal;\r\n if (gross_amount > 0) {\r\n discount_percent = this.getDecimalAmount(100 * dis_amt / gross_amount);\r\n } else {\r\n discount_percent = 0;\r\n }\r\n net_amount = gross_amount - dis_amt;\r\n }\r\n this.populateParameterAmount(data, net_amount, discount_percent, dis_amt, quantity, gross_amount);\r\n data[\"offer_rate\"] = offer_rate;\r\n }\r\n break;\r\n case \"discount_amount\":\r\n dis_amt = data.discount_amount;\r\n if (!this.coreFunctionService.isNotBlank(dis_amt)) {\r\n dis_amt = 0;\r\n }\r\n if (data.no_of_injection > 0) {\r\n if (!this.coreFunctionService.isNotBlank(data['rate_per_injection'])) {\r\n data['rate_per_injection'] = 0;\r\n }\r\n let offeringRate = data['rate_per_injection'] - dis_amt;\r\n this.calculatePharamaParameterAmount(data, offeringRate, quantity, incoming_field);\r\n } else {\r\n effectiveTotal = gross_amount - dis_amt;\r\n net_amount = effectiveTotal;\r\n if (gross_amount > 0) {\r\n discount_percent = this.getDecimalAmount(((+dis_amt) * 100) / (+gross_amount));\r\n } else {\r\n discount_percent = 0;\r\n }\r\n this.populateParameterAmount(data, net_amount, discount_percent, dis_amt, quantity, gross_amount)\r\n }\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n calculate_invoice_amount_row_wise(data:any, fieldName:any) {\r\n let total = 0;\r\n let disc_per = 0;\r\n let disc_amt = 0;\r\n let final_amt = 0;\r\n let net_amount = 0;\r\n let surcharge = 0;\r\n if (this.coreFunctionService.isNotBlank(data.total)) {\r\n total = data.total;\r\n }\r\n if (this.coreFunctionService.isNotBlank(data.discount_amount)) {\r\n disc_amt = data.discount_amount;\r\n }\r\n if (this.coreFunctionService.isNotBlank(data.sampling_charge)) {\r\n surcharge = data.sampling_charge;\r\n }\r\n if (this.coreFunctionService.isNotBlank(data.discount_percent)) {\r\n disc_per = data.discount_percent;\r\n }\r\n\r\n\r\n let incoming_field = fieldName;\r\n switch (incoming_field) {\r\n case \"total\":\r\n disc_amt = disc_per * total / 100;\r\n net_amount = total - disc_amt;\r\n final_amt = surcharge + net_amount;\r\n // disc_per = (disc_amt/(data.total))*100;\r\n break;\r\n case \"discount_percent\":\r\n disc_amt = disc_per * total / 100;\r\n net_amount = total - disc_amt;\r\n final_amt = surcharge + net_amount;\r\n break;\r\n case \"discount_amount\":\r\n disc_per = (100 * disc_amt) / total;\r\n net_amount = total - disc_amt;\r\n final_amt = surcharge + net_amount;\r\n break;\r\n case \"sampling_charge\":\r\n disc_per = (100 * disc_amt) / total;\r\n net_amount = total - disc_amt;\r\n final_amt = surcharge + net_amount;\r\n break;\r\n }\r\n data[\"discount_percent\"] = disc_per;\r\n data[\"discount_amount\"] = disc_amt;\r\n data[\"final_amount\"] = final_amt;\r\n data[\"net_amount\"] = net_amount;\r\n }\r\n\r\n\r\n calculateNetAmount(data:any, fieldName:any, grid_cell_function:any) {\r\n switch (grid_cell_function) {\r\n case \"calculateQuotationParameterAmountForAutomotiveLims\":\r\n this.calculateQuotationParameterAmountForAutomotiveLims(data, fieldName[\"field_name\"]);\r\n break\r\n\r\n case \"calculateQuotationParameterAmountForLims\":\r\n this.calculateQuotationParameterAmountForLims(data, fieldName[\"field_name\"])\r\n break;\r\n case \"calculateQuotationParameterAmountForLimsWithSubsequent\":\r\n this.calculateQuotationParameterAmountForLimsWithSubsequent(data, fieldName[\"field_name\"])\r\n break;\r\n\r\n case \"calculate_pharma_claim_values\":\r\n this.calculate_pharma_claim_values(data);\r\n break;\r\n\r\n case \"calculate_invoice_amount_row_wise\":\r\n this.calculate_invoice_amount_row_wise(data, fieldName[\"field_name\"]);\r\n break;\r\n\r\n default:\r\n this.legacyQuotationParameterCalculation(data, fieldName[\"field_name\"]);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n calculateQquoteAmount(templateValue:any, field: any) {\r\n var total = 0;\r\n let discount_percent:any = 0;\r\n let net_amount = 0;\r\n let sampling_amount = 0;\r\n let final_amount = 0;\r\n let discount_amount = 0;\r\n let quotation_param_methods:any = [];\r\n let unit_price:any = 0;\r\n\r\n if (templateValue['quotation_param_methods'] != '' && templateValue['quotation_param_methods'].length > 0) {\r\n templateValue['quotation_param_methods'].forEach((element:any) => {\r\n total = total + element.quotation_effective_rate;\r\n });\r\n }\r\n\r\n if (templateValue['sampling_charge'] && templateValue['sampling_charge'] != null) {\r\n sampling_amount = templateValue['sampling_charge'];\r\n }\r\n if (total > 0) {\r\n if (templateValue[field.field_name] != '') {\r\n if (field.field_name === 'discount_percent') {\r\n discount_percent = templateValue[field.field_name];\r\n discount_amount = total * discount_percent / 100;\r\n net_amount = total - discount_amount;\r\n quotation_param_methods = [];\r\n templateValue['quotation_param_methods'].forEach((element:any) => {\r\n const new_element = { ...element };\r\n new_element.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateNetAmount(new_element, \"qty\", \"\");\r\n quotation_param_methods.push(new_element);\r\n })\r\n templateValue['quotation_param_methods'].setValue(quotation_param_methods);\r\n this.calculateQquoteAmount(templateValue, { field_name: \"quotation_param_methods\" });\r\n } else if (field.field_name === 'net_amount') {\r\n discount_percent = 0;\r\n net_amount = templateValue[field.field_name];\r\n discount_amount = total - net_amount;\r\n discount_percent = this.getDecimalAmount(100 * discount_amount / total);\r\n templateValue[\"discount_percent\"] = discount_percent;\r\n let updatedData = this.quote_amount_via_discount_percent(templateValue[\"quotation_param_methods\"], templateValue)\r\n updatedData[field.field_name] = net_amount\r\n return updatedData;\r\n } else if (field.field_name === 'quotation_param_methods') {\r\n let list = templateValue[field.field_name];\r\n list.forEach((element:any) => {\r\n const new_element = { ...element };\r\n discount_amount = discount_amount + element.discount_amount\r\n net_amount = net_amount + element.net_amount;\r\n });\r\n discount_percent = 100 * discount_amount / total;\r\n } else {\r\n total = templateValue['total'];\r\n discount_amount = templateValue['discount_amount'];\r\n net_amount = templateValue['net_amount'];\r\n discount_percent = templateValue['discount_percent'];\r\n\r\n }\r\n final_amount = net_amount + sampling_amount;\r\n unit_price = this.getDecimalAmount(net_amount / templateValue['qty']);\r\n quotation_param_methods = [];\r\n templateValue['quotation_param_methods'].forEach((element:any) => {\r\n const new_element = { ...element };\r\n new_element.discount_percent = this.getDecimalAmount(+element.discount_percent);\r\n new_element.net_amount = this.getDecimalAmount(+(element.quotation_effective_rate * (1 - element.discount_percent / 100)));\r\n new_element.discount_amount = this.getDecimalAmount(+(element.quotation_effective_rate * element.discount_percent / 100));\r\n if (new_element.qty > 0) {\r\n new_element.per_sample_net_rate = this.getDecimalAmount(+(new_element.net_amount / new_element.qty));\r\n }\r\n quotation_param_methods.push(new_element);\r\n });\r\n templateValue['total'] = total;\r\n templateValue['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n templateValue['net_amount'] = this.getDecimalAmount(net_amount);\r\n templateValue['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n templateValue['final_amount'] = this.getDecimalAmount(final_amount);\r\n templateValue['unit_price'] = unit_price;\r\n if (quotation_param_methods.length > 0) {\r\n templateValue['quotation_param_methods'] = quotation_param_methods;\r\n }\r\n\r\n }\r\n }\r\n return templateValue;\r\n\r\n }\r\n\r\n\r\n\r\n\r\n calculate_lims_invoice_with_manual_items(templateValue:any, lims_segment:any, calculate_on_field: any) {\r\n let calculateOnField = \"\";\r\n if (calculate_on_field == null || calculate_on_field == '') {\r\n calculateOnField = 'manualItemsList';\r\n } else {\r\n calculateOnField = calculate_on_field['field_name']\r\n }\r\n let surcharge = 0;\r\n let gross_amount = 0;\r\n let discount_percent = 0;\r\n let discount_amount = 0;\r\n let taxable_amount = 0;\r\n let net_amount = 0;\r\n\r\n if (this.coreFunctionService.isNotBlank(templateValue[calculateOnField]) && templateValue[calculateOnField].length > 0) {\r\n templateValue[calculateOnField].forEach((element:any) => {\r\n if (this.coreFunctionService.isNotBlank(element.sampleTotal)) {\r\n // gross_amount=gross_amount+element.gross_amount\r\n gross_amount = gross_amount + element.sampleTotal\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.sampling_charge)) {\r\n // surcharge=surcharge+element.surcharge\r\n surcharge = surcharge + element.sampling_charge\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.discount_amount)) {\r\n discount_amount = discount_amount + element.discount_amount\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.net_amount)) {\r\n net_amount = net_amount + element.net_amount\r\n } else {\r\n net_amount = net_amount + element.sampleTotal\r\n }\r\n taxable_amount = net_amount + surcharge;\r\n });\r\n }\r\n templateValue = this.update_invoice_totatl(templateValue, gross_amount, discount_amount, discount_percent, net_amount, surcharge, taxable_amount);\r\n return templateValue;\r\n }\r\n calculate_lims_invoice_with_po_items(templateValue:any, lims_segment:any, calculate_on_field: any) {\r\n return this.calculate_lims_invoice(templateValue, lims_segment, 'po_items')\r\n }\r\n\r\n calculate_manual_row_item(templateValue:any, lims_segment:any, calculate_on_field: any) {\r\n var manualItemsList = templateValue['manualItemsList'];\r\n var qty = manualItemsList['sampleQty'];\r\n var cost = manualItemsList['sampleCost'];\r\n if (qty && cost) {\r\n manualItemsList['sampleTotal'] = qty * cost;\r\n } else {\r\n manualItemsList['sampleTotal'] = 0;\r\n }\r\n manualItemsList['discount_amount'] = 0;\r\n manualItemsList['net_amount'] = manualItemsList['sampleTotal'];\r\n templateValue['manualItemsList'] = manualItemsList;\r\n return templateValue;\r\n }\r\n\r\n\r\n calculate_po_row_item(templateValue:any, lims_segment:any, calculate_on_field: any) {\r\n var po_items = templateValue['po_items'];\r\n var qty = po_items['qty'];\r\n var cost = po_items['cost'];\r\n if (qty && cost) {\r\n po_items['total'] = qty * cost;\r\n } else {\r\n po_items['total'] = 0;\r\n }\r\n po_items['discount_amount'] = 0;\r\n po_items['net_amount'] = po_items['total'];\r\n templateValue['po_items'] = po_items;\r\n return templateValue;\r\n }\r\n\r\n credit_note_invoice_calculation(templateValue: any, lims_segment: any, calculate_on_field: any){\r\n let surcharge = 0;\r\n let gross_amount = 0;\r\n let discount_percent = 0;\r\n let discount_amount = 0;\r\n let taxable_amount = 0;\r\n let net_amount = 0;\r\n let\tgst_amount\t=0;\r\n let\tcgst_amount\t=0;\r\n let\tsgst_amount\t=0;\r\n let\tigst_amount\t=0;\r\n let\ttax_amount\t=0;\r\n let\tsez_amount\t=0;\r\n\r\n let\tnet_payble\t=0;\r\n\r\n let\tigst_percent\t=0;\r\n let\tgst_percent\t=0;\r\n let\tsez_percent\t=0;\r\n let cgst_percent=0;\r\n let sgst_percent=0;\r\n let tax_percentage = 0;\r\n let tax_type = templateValue['tax_type'];\r\n\r\n let parentObjectValue = templateValue[calculate_on_field.parent];\r\n if (this.coreFunctionService.isNotBlank(parentObjectValue)) {\r\n if (this.coreFunctionService.isNotBlank(parentObjectValue[calculate_on_field.field_name])){\r\n taxable_amount = parentObjectValue[calculate_on_field.field_name];\r\n }\r\n }\r\n \r\n if(this.coreFunctionService.isNotBlank(templateValue.tax_percentage)){\r\n tax_percentage = templateValue.tax_percentage;\r\n }\r\n\r\n if((tax_type==null || tax_type==undefined || tax_type=='NA') && tax_percentage==0)\r\n {\r\n net_payble = taxable_amount;\r\n }\r\n else\r\n {\r\n switch(tax_type){\r\n case \"GST\" :\r\n gst_amount = taxable_amount * tax_percentage/100;\r\n gst_percent=tax_percentage;\r\n cgst_percent = gst_percent/2;\r\n sgst_percent= gst_percent/2;\r\n cgst_amount = gst_amount/2;\r\n sgst_amount = gst_amount/2;\r\n net_payble = taxable_amount+gst_amount;\r\n tax_amount=gst_amount;\r\n igst_amount=0;\r\n igst_percent=0;\r\n\r\n break;\r\n case \"IGST\" :\r\n igst_amount = taxable_amount * tax_percentage/100;\r\n igst_percent=tax_percentage;\r\n net_payble = taxable_amount+igst_amount;\r\n tax_amount=igst_amount;\r\n break;\r\n default :\r\n\r\n }\r\n }\r\n if(gross_amount>0){\r\n discount_percent = this.getDecimalAmount(100*discount_amount/gross_amount);\r\n }\r\n let total:any ={};\r\n total['surcharge'] = this.getDecimalAmount(surcharge);\r\n total['igst_percent'] = this.getDecimalAmount(igst_percent);\r\n total['gst_percent'] = this.getDecimalAmount(gst_percent);\r\n total['cgst_percent'] = this.getDecimalAmount(cgst_percent);\r\n total['sgst_percent'] = this.getDecimalAmount(sgst_percent);\r\n\r\n total['sez_percent'] = this.getDecimalAmount(sez_percent);\r\n total['gross_amount'] = this.getDecimalAmount(gross_amount);\r\n total['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n total['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n total['taxable_amount'] = this.getDecimalAmount(taxable_amount);\r\n total['gst_amount'] = this.getDecimalAmount(gst_amount);\r\n total['cgst_amount'] = this.getDecimalAmount(cgst_amount);\r\n total['sgst_amount'] = this.getDecimalAmount(sgst_amount);\r\n total['igst_amount'] = this.getDecimalAmount(igst_amount);\r\n total['tax_amount'] = this.getDecimalAmount(tax_amount);\r\n total['sez_amount'] = this.getDecimalAmount(sez_amount);\r\n // total['net_amount'] = this.getDecimalAmount(net_amount);\r\n total['net_payble'] = this.getDecimalAmount(net_payble);\r\n templateValue = {};\r\n templateValue['total_amount'] = total;\r\n return templateValue;\r\n }\r\n\r\n calculate_lims_invoice(templateValue:any, lims_segment:any, calculate_on_field: any) {\r\n if (calculate_on_field == null || calculate_on_field == '') {\r\n calculate_on_field = 'items_list';\r\n }\r\n let surcharge = 0;\r\n let gross_amount = 0;\r\n let discount_percent = 0;\r\n let discount_amount = 0;\r\n let taxable_amount = 0;\r\n let net_amount = 0;\r\n\r\n if (this.coreFunctionService.isNotBlank(templateValue[calculate_on_field]) && templateValue[calculate_on_field].length > 0) {\r\n templateValue[calculate_on_field].forEach((element:any) => {\r\n if (this.coreFunctionService.isNotBlank(element.total)) {\r\n // gross_amount=gross_amount+element.gross_amount\r\n gross_amount = gross_amount + element.total\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.sampling_charge)) {\r\n // surcharge=surcharge+element.surcharge\r\n surcharge = surcharge + element.sampling_charge\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.discount_amount)) {\r\n discount_amount = discount_amount + element.discount_amount\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.net_amount)) {\r\n net_amount = net_amount + element.net_amount\r\n } else {\r\n net_amount = net_amount + element.total\r\n }\r\n taxable_amount = net_amount + surcharge;\r\n });\r\n }\r\n templateValue = this.update_invoice_totatl(templateValue, gross_amount, discount_amount, discount_percent, net_amount, surcharge, taxable_amount);\r\n return templateValue;\r\n }\r\n\r\n calculate_lims_invoice_extra_amount(templateValue:any, lims_segment:any, calculate_on_field: any) {\r\n if (calculate_on_field == null || calculate_on_field == '') {\r\n calculate_on_field = 'items_list';\r\n }\r\n let surcharge = 0;\r\n let gross_amount = 0;\r\n let discount_percent = 0;\r\n let discount_amount = 0;\r\n let taxable_amount = 0;\r\n let net_amount = 0;\r\n let extraAmount = 0\r\n\r\n if (this.coreFunctionService.isNotBlank(templateValue[calculate_on_field]) && templateValue[calculate_on_field].length > 0) {\r\n templateValue[calculate_on_field].forEach((element:any) => {\r\n if (this.coreFunctionService.isNotBlank(element.total)) {\r\n // gross_amount=gross_amount+element.gross_amount\r\n gross_amount = gross_amount + element.total\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.sampling_charge)) {\r\n // surcharge=surcharge+element.surcharge\r\n surcharge = surcharge + element.sampling_charge\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.discount_amount)) {\r\n discount_amount = discount_amount + element.discount_amount\r\n }\r\n if (this.coreFunctionService.isNotBlank(element.net_amount)) {\r\n net_amount = net_amount + element.net_amount\r\n } else {\r\n net_amount = net_amount + element.total\r\n }\r\n\r\n\r\n if (element && element.extra_amount) {\r\n extraAmount = Number(extraAmount) + Number(element.extra_amount)\r\n }\r\n taxable_amount = net_amount + surcharge + extraAmount;\r\n });\r\n }\r\n templateValue = this.update_invoice_totatl_extra_amount(templateValue, gross_amount, discount_amount, discount_percent, net_amount, surcharge, extraAmount, taxable_amount);\r\n return templateValue;\r\n }\r\n\r\n getPercent(templateValue:any, parent:any, field:any) {\r\n const calculateValue:any = {};\r\n if (field && field.calSourceTarget && field.calSourceTarget.length >= 1) {\r\n let source = field.calSourceTarget[0].source;\r\n let target = field.calSourceTarget[0].target;\r\n let sourceValue = this.commonFunctionService.getObjectValue(source, templateValue);\r\n if (sourceValue && sourceValue != '') {\r\n if (typeof sourceValue == 'number') {\r\n let fileName = field.field_name;\r\n let percent: any;\r\n if (parent != '') {\r\n percent = templateValue[parent.field_name][fileName]\r\n } else {\r\n percent = templateValue[fileName]\r\n }\r\n if (typeof sourceValue == 'number' && percent && percent >= 1) {\r\n let percentValue = sourceValue * percent / 100;\r\n let targetFields = target.split('.');\r\n if (targetFields && targetFields.length == 2) {\r\n const parent = targetFields[0];\r\n const child = targetFields[1];\r\n calculateValue[parent] = {};\r\n calculateValue[parent][child] = percentValue\r\n } else {\r\n const child = targetFields[0];\r\n calculateValue[child] = percentValue\r\n }\r\n }\r\n } else {\r\n this.notificationService.notify('bg-danger', 'Source Value is not a number.')\r\n }\r\n } else {\r\n this.notificationService.notify('bg-danger', 'Source Field is Required.')\r\n }\r\n }\r\n\r\n return calculateValue;\r\n }\r\n\r\n\r\n calculate_quotation(templateValue:any, lims_segment:any, field: any) {\r\n var total = 0;\r\n let discount_percent = 0;\r\n let net_amount = 0;\r\n let sampling_amount = 0;\r\n let final_amount = 0;\r\n let discount_amount = 0;\r\n let quotation_param_methods = [];\r\n let unit_price:any = 0;\r\n let paramArray:any = [];\r\n let gross_amount = 0;\r\n let field_name = field.field_name;\r\n let qty = 0;\r\n let product_wise_pricing = templateValue['product_wise_pricing'];\r\n let current_disount = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue['discount_percent'])) {\r\n current_disount = templateValue['discount_percent'];\r\n }\r\n\r\n if (this.coreFunctionService.isNotBlank(templateValue.qty)) {\r\n qty = templateValue.qty;\r\n }\r\n\r\n if (templateValue['quotation_param_methods'] != '' && templateValue['quotation_param_methods'].length > 0) {\r\n templateValue['quotation_param_methods'].forEach((element:any) => {\r\n let data = { ...element };\r\n paramArray.push(data);\r\n });\r\n }\r\n\r\n\r\n\r\n if (templateValue['sampling_charge'] && templateValue['sampling_charge'] != null) {\r\n sampling_amount = templateValue['sampling_charge'];\r\n }\r\n // if(gross_amount>0){\r\n if (true) {\r\n switch (field_name) {\r\n case 'parameter_array':\r\n unit_price = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue.unit_price)) {\r\n unit_price = templateValue.unit_price;\r\n }\r\n if (product_wise_pricing) {\r\n net_amount = qty * unit_price;\r\n paramArray.forEach((data:any) => {\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"discount_percent\");\r\n })\r\n\r\n } else {\r\n if (paramArray.length > 0) {\r\n discount_amount = 0;\r\n net_amount = 0;\r\n total = 0;\r\n gross_amount = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue.qty)) {\r\n qty = templateValue.qty;\r\n }\r\n paramArray.forEach((data:any) => {\r\n if (lims_segment == 'standard') {\r\n data['qty'] = qty;\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, 'qty');\r\n }\r\n gross_amount = gross_amount + data['total'];\r\n net_amount = net_amount + data['net_amount'];\r\n discount_amount = discount_amount + data['discount_amount'];\r\n });\r\n }\r\n\r\n }\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n case 'discount_percent':\r\n discount_percent = templateValue[field_name];\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, field_name);\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_amount = gross_amount * discount_percent / 100;\r\n net_amount = gross_amount - discount_amount;\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n case 'discount_amount':\r\n discount_amount = templateValue[field_name];\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"discount_percent\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n net_amount = gross_amount - discount_amount;\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n\r\n case 'net_amount':\r\n discount_percent = 0;\r\n net_amount = templateValue[field_name];\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n\r\n\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"discount_percent\");\r\n })\r\n\r\n templateValue[\"discount_percent\"] = discount_percent;\r\n templateValue[\"discount_amount\"] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n break;\r\n\r\n case 'unit_price':\r\n unit_price = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue.unit_price)) {\r\n unit_price = templateValue.unit_price;\r\n }\r\n net_amount = qty * unit_price;\r\n\r\n\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"unit_price\");\r\n })\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n default:\r\n discount_amount = 0;\r\n net_amount = 0;\r\n if (paramArray.length > 0) {\r\n paramArray.forEach((data:any) => {\r\n data['qty'] = qty;\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, field_name);\r\n gross_amount = gross_amount + data['total'];\r\n net_amount = net_amount + data['net_amount'];\r\n discount_amount = discount_amount + data['discount_amount'];\r\n });\r\n }\r\n if (product_wise_pricing) {\r\n unit_price = templateValue[\"unit_price\"];\r\n net_amount = unit_price * qty;\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n if (paramArray.length > 0) {\r\n paramArray.forEach((data:any) => {\r\n data['discount_percent'] = discount_percent;\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"unit_price\");\r\n });\r\n }\r\n }\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n\r\n }\r\n\r\n }\r\n\r\n final_amount = net_amount + sampling_amount;\r\n if (templateValue['qty'] > 0) {\r\n unit_price = this.getDecimalAmount(net_amount / templateValue['qty']);\r\n } else {\r\n unit_price = templateValue[\"unit_price\"];\r\n }\r\n templateValue['total'] = gross_amount;\r\n templateValue['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n templateValue['net_amount'] = this.getDecimalAmount(net_amount);\r\n templateValue['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n templateValue['final_amount'] = this.getDecimalAmount(final_amount);\r\n templateValue['unit_price'] = unit_price;\r\n if (paramArray.length > 0) {\r\n templateValue['quotation_param_methods'] = paramArray;\r\n }\r\n\r\n return templateValue;\r\n\r\n }\r\n\r\n calculate_quotation_for_lims(templateValue:any, lims_segment:any, field: any) {\r\n var total = 0;\r\n let discount_percent = 0;\r\n let net_amount = 0;\r\n let sampling_amount = 0;\r\n let final_amount = 0;\r\n let discount_amount = 0;\r\n let quotation_param_methods = [];\r\n let unit_price:any = 0;\r\n let paramArray:any = [];\r\n let gross_amount = 0;\r\n let field_name = field.field_name;\r\n let qty = 0;\r\n let product_wise_pricing = templateValue['product_wise_pricing'];\r\n let current_disount = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue['discount_percent'])) {\r\n current_disount = templateValue['discount_percent'];\r\n }\r\n\r\n if (this.coreFunctionService.isNotBlank(templateValue.qty)) {\r\n qty = templateValue.qty;\r\n }\r\n\r\n if (templateValue['quotation_param_methods'] != '' && templateValue['quotation_param_methods'].length > 0) {\r\n templateValue['quotation_param_methods'].forEach((element:any) => {\r\n let data = { ...element };\r\n paramArray.push(data);\r\n });\r\n }\r\n\r\n // if(gross_amount>0){\r\n if (true) {\r\n discount_amount = 0;\r\n net_amount = 0;\r\n if (paramArray.length > 0) {\r\n paramArray.forEach((data:any) => {\r\n data['qty'] = qty;\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, field_name);\r\n gross_amount = gross_amount + data['total'];\r\n net_amount = net_amount + data['net_amount'];\r\n discount_amount = discount_amount + data['discount_amount'];\r\n });\r\n }\r\n if (product_wise_pricing) {\r\n unit_price = templateValue[\"unit_price\"];\r\n net_amount = unit_price * qty;\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n if (paramArray.length > 0) {\r\n paramArray.forEach((data:any) => {\r\n data['discount_percent'] = discount_percent;\r\n this.calculateParameterLimsSegmentWise(lims_segment, data, \"unit_price\");\r\n });\r\n }\r\n }\r\n }\r\n templateValue['total'] = gross_amount;\r\n templateValue['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n templateValue['net_amount'] = this.getDecimalAmount(net_amount);\r\n templateValue['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n templateValue['unit_price'] = unit_price;\r\n return templateValue;\r\n\r\n }\r\n\r\n\r\n calculateParameterLimsSegmentWise(lims_segment: any, data: any, fieldName: string) {\r\n switch (lims_segment) {\r\n case 'standard':\r\n this.calculateQuotationParameterAmountForLims(data, fieldName)\r\n break;\r\n case 'automotive':\r\n this.calculateQuotationParameterAmountForAutomotiveLims(data, fieldName)\r\n break\r\n }\r\n\r\n }\r\n\r\n samplingAmountAddition(templateValue:any) {\r\n let net_amount = templateValue['net_amount'];\r\n let sampling_charge = templateValue['sampling_charge'];\r\n let totl = net_amount + sampling_charge;\r\n\r\n templateValue['final_amount'] = totl\r\n return templateValue;\r\n }\r\n\r\n quote_amount_via_discount_percent(listOfParm:any, templateValue:any) {\r\n let discount = templateValue.discount_percent;\r\n let quantity = templateValue.qty;\r\n let updatedParamsList:any = [];\r\n listOfParm.forEach((element:any) => {\r\n const data = JSON.parse(JSON.stringify(element));\r\n data['discount_percent'] = discount;\r\n data['qty'] = quantity;\r\n this.calculateNetAmount(data, \"discount_percent\", \"\");\r\n updatedParamsList.push(data);\r\n });\r\n templateValue[\"quotation_param_methods\"] = updatedParamsList;\r\n let total = templateValue[\"total\"];\r\n let discount_amount:any = this.getDecimalAmount(total * discount / 100);\r\n let net_amount = total - discount_amount;\r\n\r\n let final_amount = net_amount + templateValue[\"sampling_charge\"];\r\n let unit_price = this.getDecimalAmount(net_amount / templateValue['qty']);\r\n\r\n templateValue['total'] = total;\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['final_amount'] = final_amount;\r\n templateValue['unit_price'] = unit_price;\r\n return templateValue;\r\n }\r\n\r\n calculateInvoiceTotalAmount(formValue:any, invoiceInfos:any) {\r\n let list = invoiceInfos;\r\n let total = 0;\r\n for (let i = 0; i < list.length; i++) {\r\n total += list[i]['netpayableAmount']\r\n }\r\n let lumpSumAmount = formValue['lumpSumAmount']\r\n let advanceAmount = formValue['advanceAmount'];\r\n let toatallumsumOrAdvance = lumpSumAmount + advanceAmount;\r\n let totalFair = total - toatallumsumOrAdvance;\r\n let obj = {\r\n totalAmount: (total).toFixed(2),\r\n payAmount: (totalFair).toFixed(2)\r\n }\r\n return obj;\r\n }\r\n\r\n quote_amount_via_sample_no(templateValue:any, listOfParm:any) {\r\n let quantity = templateValue.qty;\r\n let discount = templateValue.discount_percent;\r\n let updatedParamsList:any = [];\r\n listOfParm.forEach((element: any) => {\r\n const data = JSON.parse(JSON.stringify(element));\r\n data['discount_percent'] = discount;\r\n data['qty'] = quantity;\r\n this.calculateNetAmount(data, \"qty\", \"\");\r\n updatedParamsList.push(data)\r\n });\r\n templateValue[\"quotation_param_methods\"] = updatedParamsList;\r\n return this.calculateQquoteAmount(templateValue, { field_name: \"quotation_param_methods\" });\r\n }\r\n\r\n calculateInvoiceOrderAmount(templateForm: UntypedFormGroup, field: any) {\r\n var net_amount = 0;\r\n var discount_amount = 0;\r\n var igst_amount = 0;\r\n var sgst_amount = 0;\r\n var cgst_amount = 0;\r\n var netPayable = 0;\r\n var surcharge = 0;\r\n var sez_amount = 0;\r\n var total = 0;\r\n let templateValue = templateForm.getRawValue();\r\n if (templateValue['items_list'] != '' && templateValue['items_list'].length > 0) {\r\n templateValue['items_list'].forEach((element:any) => {\r\n net_amount = net_amount + element.net_amount;\r\n discount_amount = discount_amount + element.discount_amount;\r\n surcharge = surcharge + element.surcharge;\r\n total = total + element.total;\r\n });\r\n if (templateValue['tax_type'] != '' && templateValue['tax_type'] == \"GST\") {\r\n sgst_amount = (net_amount * templateValue['tax_percentage']) / 200;\r\n cgst_amount = sgst_amount;\r\n }\r\n else if (templateValue['tax_type'] != '' && templateValue['tax_type'] == \"IGST\") {\r\n igst_amount = (net_amount * templateValue['tax_percentage']) / 100;\r\n }\r\n }\r\n netPayable = net_amount + igst_amount + sgst_amount + cgst_amount + sez_amount;\r\n const fieldWithValue = {\r\n field: 'total_amount', value: [\r\n { field: 'taxable_amount', value: net_amount },\r\n { field: 'sgst_amount', value: sgst_amount },\r\n { field: 'cgst_amount', value: cgst_amount },\r\n { field: 'igst_amount', value: igst_amount },\r\n { field: 'net_payble', value: netPayable },\r\n { field: 'discount_amount', value: discount_amount },\r\n ]\r\n }\r\n return this.setValueInVieldsForChild(templateForm, fieldWithValue);\r\n }\r\n setValueInVieldsForChild(templateForm: UntypedFormGroup, field: any) {\r\n (<UntypedFormGroup>templateForm.controls['total_amount']).addControl('discount_amount', new UntypedFormControl(''))\r\n field.value.forEach((element:any) => {\r\n (<UntypedFormGroup>templateForm.controls[field.field]).controls[element.field].patchValue(element.value);\r\n });\r\n return templateForm;\r\n }\r\n calculateAdditionalCost(obj:any){\r\n let list = obj['additional_cost'];\r\n let sum = 0;\r\n let net_amt = obj['net_amount'];\r\n if(list != null && list.length > 0){\r\n list.forEach((element:any) => {\r\n sum += +(element.amount);\r\n });\r\n }\r\n let final_amt = sum+net_amt;\r\n obj['sampling_charge'] = sum;\r\n obj['final_amount'] = final_amt;\r\n return obj;\r\n }\r\n\r\n update_invoice_totatl(templateValue:any,gross_amount:number,discount_amount:number,discount_percent:any,net_amount:number,surcharge:number,taxable_amount:number,field?:any){\r\n let\tgst_amount\t=0;\r\n let\tcgst_amount\t=0;\r\n let\tsgst_amount\t=0;\r\n let\tigst_amount\t=0;\r\n let\ttax_amount\t=0;\r\n let\tsez_amount\t=0;\r\n\r\n let\tnet_payble\t=0;\r\n\r\n let\tigst_percent\t=0;\r\n let\tgst_percent\t=0;\r\n let\tsez_percent\t=0;\r\n let cgst_percent=0;\r\n let sgst_percent=0;\r\n let tax_percentage = 0;\r\n let tax_type = templateValue['tax_type'];\r\n\r\n if(this.coreFunctionService.isNotBlank(templateValue.tax_percentage)){\r\n tax_percentage = templateValue.tax_percentage;\r\n }\r\n\r\n if(((tax_type==null || tax_type==undefined || tax_type=='NA') && tax_percentage==0) || tax_type=='Not Applicable')\r\n {\r\n net_payble = taxable_amount;\r\n }\r\n else\r\n {\r\n switch(tax_type){\r\n case \"GST\" :\r\n gst_amount = taxable_amount * tax_percentage/100;\r\n gst_percent=tax_percentage;\r\n cgst_percent = gst_percent/2;\r\n sgst_percent= gst_percent/2;\r\n cgst_amount = gst_amount/2;\r\n sgst_amount = gst_amount/2;\r\n net_payble = taxable_amount+gst_amount;\r\n tax_amount=gst_amount;\r\n igst_amount=0;\r\n igst_percent=0;\r\n\r\n break;\r\n case \"IGST\" :\r\n igst_amount = taxable_amount * tax_percentage/100;\r\n igst_percent=tax_percentage;\r\n net_payble = taxable_amount+igst_amount;\r\n tax_amount=igst_amount;\r\n break;\r\n default :\r\n\r\n }\r\n }\r\n if(gross_amount>0){\r\n discount_percent = this.getDecimalAmount(100*discount_amount/gross_amount);\r\n }\r\n let total:any ={};\r\n total['surcharge'] = this.getDecimalAmount(surcharge);\r\n total['igst_percent'] = this.getDecimalAmount(igst_percent);\r\n total['gst_percent'] = this.getDecimalAmount(gst_percent);\r\n total['cgst_percent'] = this.getDecimalAmount(cgst_percent);\r\n total['sgst_percent'] = this.getDecimalAmount(sgst_percent);\r\n\r\n total['sez_percent'] = this.getDecimalAmount(sez_percent);\r\n total['gross_amount'] = this.getDecimalAmount(gross_amount);\r\n total['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n total['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n total['taxable_amount'] = this.getDecimalAmount(taxable_amount);\r\n total['gst_amount'] = this.getDecimalAmount(gst_amount);\r\n total['cgst_amount'] = this.getDecimalAmount(cgst_amount);\r\n total['sgst_amount'] = this.getDecimalAmount(sgst_amount);\r\n total['igst_amount'] = this.getDecimalAmount(igst_amount);\r\n total['tax_amount'] = this.getDecimalAmount(tax_amount);\r\n total['sez_amount'] = this.getDecimalAmount(sez_amount);\r\n total['net_amount'] = this.getDecimalAmount(net_amount);\r\n total['net_payble'] = this.getDecimalAmount(net_payble);\r\n\r\n if(field != null && field.field_name != null && field != \"\"){\r\n delete total[field.field_name]\r\n }\r\n templateValue = {};\r\n templateValue['total_amount'] = total;\r\n return templateValue;\r\n\r\n }\r\n\r\n\r\n\r\n\r\n update_invoice_totatl_extra_amount(templateValue:any,gross_amount:number,discount_amount:number,discount_percent:any,net_amount:number,surcharge:number,extraAmount:number,taxable_amount:number,field?:any){\r\n let\tgst_amount\t=0;\r\n let\tcgst_amount\t=0;\r\n let\tsgst_amount\t=0;\r\n let\tigst_amount\t=0;\r\n let\ttax_amount\t=0;\r\n let\tsez_amount\t=0;\r\n\r\n let\tnet_payble\t=0;\r\n\r\n let\tigst_percent\t=0;\r\n let\tgst_percent\t=0;\r\n let\tsez_percent\t=0;\r\n let cgst_percent=0;\r\n let sgst_percent=0;\r\n let tax_percentage = 0;\r\n let tax_type = templateValue['tax_type'];\r\n\r\n if(this.coreFunctionService.isNotBlank(templateValue.tax_percentage)){\r\n tax_percentage = templateValue.tax_percentage;\r\n }\r\n\r\n if(((tax_type==null || tax_type==undefined || tax_type=='NA') && tax_percentage==0 ) || tax_type=='Not Applicable')\r\n {\r\n net_payble = taxable_amount;\r\n }\r\n else\r\n {\r\n switch(tax_type){\r\n case \"GST\" :\r\n gst_amount = taxable_amount * tax_percentage/100;\r\n gst_percent=tax_percentage;\r\n cgst_percent = gst_percent/2;\r\n sgst_percent= gst_percent/2;\r\n cgst_amount = gst_amount/2;\r\n sgst_amount = gst_amount/2;\r\n net_payble = taxable_amount+gst_amount;\r\n tax_amount=gst_amount;\r\n igst_amount=0;\r\n igst_percent=0;\r\n\r\n break;\r\n case \"IGST\" :\r\n igst_amount = taxable_amount * tax_percentage/100;\r\n igst_percent=tax_percentage;\r\n net_payble = taxable_amount+igst_amount;\r\n tax_amount=igst_amount;\r\n break;\r\n default :\r\n\r\n }\r\n }\r\n if(gross_amount>0){\r\n discount_percent = this.getDecimalAmount(100*discount_amount/gross_amount);\r\n }\r\n let total:any ={};\r\n total['surcharge'] = this.getDecimalAmount(surcharge);\r\n total['igst_percent'] = this.getDecimalAmount(igst_percent);\r\n total['gst_percent'] = this.getDecimalAmount(gst_percent);\r\n total['cgst_percent'] = this.getDecimalAmount(cgst_percent);\r\n total['sgst_percent'] = this.getDecimalAmount(sgst_percent);\r\n\r\n total['sez_percent'] = this.getDecimalAmount(sez_percent);\r\n total['gross_amount'] = this.getDecimalAmount(gross_amount);\r\n total['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n total['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n total['taxable_amount'] = this.getDecimalAmount(taxable_amount);\r\n total['gst_amount'] = this.getDecimalAmount(gst_amount);\r\n total['cgst_amount'] = this.getDecimalAmount(cgst_amount);\r\n total['sgst_amount'] = this.getDecimalAmount(sgst_amount);\r\n total['igst_amount'] = this.getDecimalAmount(igst_amount);\r\n total['tax_amount'] = this.getDecimalAmount(tax_amount);\r\n total['sez_amount'] = this.getDecimalAmount(sez_amount);\r\n total['net_amount'] = this.getDecimalAmount(net_amount);\r\n total['net_payble'] = this.getDecimalAmount(net_payble);\r\n total['extraAmount'] = this.getDecimalAmount(extraAmount);\r\n if(field != null && field.field_name != null && field != \"\"){\r\n delete total[field.field_name]\r\n }\r\n templateValue = {};\r\n templateValue['total_amount'] = total;\r\n return templateValue;\r\n\r\n }\r\n\r\n update_invoice_total_on_custom_field(templateValue:any,lims_segment: any, field: any){\r\n let total =templateValue['total_amount'];\r\n let\tsurcharge\t=total['surcharge'];\r\n let\tgross_amount\t=total['gross_amount'];\r\n let\tdiscount_percent\t=total['discount_percent'];\r\n let\tdiscount_amount=\ttotal['discount_amount'];\r\n let\ttaxable_amount=\ttotal['taxable_amount'];\r\n let\tnet_amount\t=total['net_amount'];\r\n\r\n if(gross_amount){\r\n switch(field.field_name){\r\n case 'discount_percent':\r\n if(discount_percent!=0){\r\n discount_amount = gross_amount*discount_percent/100;\r\n }else{\r\n discount_amount = 0;\r\n }\r\n break;\r\n case 'surcharge':\r\n if(!surcharge){\r\n surcharge = 0;\r\n }\r\nbreak;\r\n case 'discount_amount':\r\n if(discount_amount){\r\n discount_percent = discount_amount*100/gross_amount;\r\n }else{\r\n discount_percent=0;\r\n }\r\n break;\r\n }\r\n}else{\r\n\r\n discount_percent=0;\r\n discount_amount=0;\r\n}\r\n\r\n net_amount =gross_amount-discount_amount;\r\n taxable_amount = gross_amount-discount_amount+surcharge;\r\n templateValue = this.update_invoice_totatl(templateValue,gross_amount,discount_amount,discount_percent,net_amount,surcharge,taxable_amount,field);\r\n\r\n return templateValue;\r\n }\r\n\r\n\r\n\r\n populateParameterAmount(data:any,net_amount:number,discount_percent:number,discount_amount:number,quantity:number,gross_amount:number){\r\n data['net_amount'] = this.getDecimalAmount(net_amount);\r\n if(data['total_injection'] && data['total_injection'] > 0){\r\n data['per_sample_net_rate'] = this.getDecimalAmount(data['net_amount'] / data['total_injection']);\r\n data[\"offer_rate\"] = data[\"per_sample_net_rate\"];\r\n }\r\n else if(data['qty']>0){\r\n data['per_sample_net_rate'] = this.getDecimalAmount(data['net_amount'] / data['qty']);\r\n data[\"offer_rate\"] = data[\"per_sample_net_rate\"];\r\n }else{\r\n data['per_sample_net_rate'] =0;\r\n }\r\n\r\n data['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n data['discount_amount'] = this.getDecimalAmount(+discount_amount);\r\n data['qty'] = quantity;\r\n data['total'] = this.getDecimalAmount(gross_amount);\r\n data['quotation_effective_rate'] = this.getDecimalAmount(gross_amount);\r\n\r\n}\r\n\r\nsetValueInVields(templateForm: UntypedFormGroup, field: any) {\r\n field.forEach((element: any) => {\r\n if(templateForm.controls[element.field]!==undefined){\r\n if(typeof(element.value) == 'string'){\r\n templateForm.controls[element.field].setValue(element.value);\r\n }\r\n else{\r\n templateForm.controls[element.field].setValue(this.getDecimalAmount(element.value));\r\n }\r\n }\r\n });\r\n return templateForm;\r\n}\r\n\r\ncreate_professional_email(templateForm: UntypedFormGroup){\r\n let templateValue = templateForm.getRawValue();\r\n let name = templateValue.name;\r\n let prof_email = \"\";\r\n let strt = name.substring(0, 2);\r\n let last = name.slice(-2);\r\n prof_email = strt+last+\"@gmail.com\";\r\n const fieldWithValue = [\r\n { field: 'prof_email', value: prof_email },\r\n ]\r\n\r\n this.setValueInVields(templateForm, fieldWithValue);\r\n}\r\nautopopulateFields(templateForm:any){\r\n let templateValue = templateForm.getRawValue();\r\n let product = templateValue.product.name;\r\n const fieldWithValue = [\r\n { field: 'sample_name', value: product },\r\n ]\r\n\r\n this.setValueInVields(templateForm, fieldWithValue);\r\n}\r\n\r\n\r\n/**\r\n * start point for subsequet calculation for quotation\r\n */\r\n\r\npopulateParameterAmountWithSubsequent(data:any,net_amount:number,discount_percent:number,discount_amount:number,quantity:number,gross_amount:number,subsequent_discount_amount?:number,subsequent_discount_percent?:number){\r\n data['net_amount'] = this.getDecimalAmount(net_amount);\r\n if(data['qty']>0){\r\n data['per_sample_net_rate'] = this.getDecimalAmount(data['net_amount'] / data['qty']);\r\n }else{\r\n data['per_sample_net_rate'] =0;\r\n }\r\n\r\n data['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n data['discount_amount'] = this.getDecimalAmount(+discount_amount);\r\n if(subsequent_discount_amount || subsequent_discount_amount == 0){\r\n data[\"subsequent_discount_amount\"] = this.getDecimalAmount(subsequent_discount_amount);\r\n }\r\n if(subsequent_discount_percent || subsequent_discount_percent == 0){\r\n data[\"subsequent_discount_percent\"] = this.getDecimalAmount(subsequent_discount_percent);\r\n }\r\n data['qty'] = this.getDecimalAmount(quantity);\r\n data['total'] = this.getDecimalAmount(gross_amount);\r\n data['quotation_effective_rate'] = this.getDecimalAmount(gross_amount);\r\n\r\n}\r\n\r\ncalculateQuotationParameterAmountForLimsWithSubsequent(data:any, fieldName:any) {\r\n let quantity = 0;\r\n let discount_percent:any = 0;\r\n let net_amount:any = 0;\r\n let incoming_field = fieldName;\r\n let sale_rate = data['sale_rate'];\r\n let gross_amount = 0;\r\n let effectiveTotal = 0;\r\n let dis_amt:any = 0;\r\n let subsequent_discount_amount:any=0;\r\n let subsequent_discount_percent:any=0;\r\n let totalDiscountAmount:any=0;\r\n quantity = data.qty;\r\n if (!this.coreFunctionService.isNotBlank(quantity)) {\r\n quantity = 0;\r\n }\r\n if(quantity > 0){\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n gross_amount = ((quantity - 1) * data.no_of_injection2) + sale_rate;\r\n }else{\r\n gross_amount = quantity * sale_rate;\r\n }\r\n }\r\n\r\n switch (incoming_field) {\r\n\r\n case \"qty\":\r\n //effectiveTotal = (+quantity) * (+data.offer_rate);\r\n if(data.subsequent_offer_rate && data.subsequent_offer_rate > 0 && data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n effectiveTotal = ((quantity - 1) * data.subsequent_offer_rate) + data.offer_rate;\r\n if (sale_rate > 0) {\r\n dis_amt = sale_rate - data.offer_rate;\r\n discount_percent = this.getDecimalAmount(100 * dis_amt / sale_rate);\r\n } else {\r\n discount_percent = 0;\r\n dis_amt = 0;\r\n }\r\n let subseqGrossAmount = ((quantity - 1) * data.no_of_injection2);\r\n let subseqEffectiveAmount = ((quantity - 1) * data.subsequent_offer_rate);\r\n if(subseqGrossAmount > 0){\r\n subsequent_discount_amount = subseqGrossAmount - subseqEffectiveAmount;\r\n subsequent_discount_percent = this.getDecimalAmount(100 * subsequent_discount_amount / subseqGrossAmount);\r\n }else{\r\n subsequent_discount_amount = 0;\r\n subsequent_discount_percent = 0;\r\n }\r\n }else{\r\n if(sale_rate && sale_rate > 0){\r\n effectiveTotal = quantity * data.offer_rate;\r\n }\r\n dis_amt = gross_amount - effectiveTotal;\r\n if (gross_amount > 0) {\r\n discount_percent = this.getDecimalAmount(100 * dis_amt / gross_amount);\r\n } else {\r\n discount_percent = 0;\r\n }\r\n }\r\n\r\n net_amount = effectiveTotal;\r\n this.populateParameterAmountWithSubsequent(data, net_amount, discount_percent, dis_amt, quantity, gross_amount,subsequent_discount_amount,subsequent_discount_percent)\r\n\r\n\r\n break;\r\n case \"discount_percent\":\r\n case \"subsequent_discount_percent\":\r\n\r\n if(sale_rate && sale_rate > 0){\r\n discount_percent = data.discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(discount_percent)) {\r\n discount_percent = 0;\r\n }\r\n let effectiveGrossAmount = 0;\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n effectiveGrossAmount = sale_rate;\r\n }else{\r\n effectiveGrossAmount = quantity * sale_rate;\r\n }\r\n dis_amt = this.getDecimalAmount(((+effectiveGrossAmount) * (+discount_percent)) / 100);\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n data['offer_rate'] = (effectiveGrossAmount - dis_amt);\r\n }else{\r\n data['offer_rate'] = (effectiveGrossAmount - dis_amt) / quantity;\r\n }\r\n }else{\r\n discount_percent = 0;\r\n dis_amt = 0;\r\n }\r\n\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n subsequent_discount_percent = data.subsequent_discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(subsequent_discount_percent)) {\r\n subsequent_discount_percent = 0;\r\n }\r\n let subsequentGrossAmount = 0;\r\n if(quantity > 1){\r\n subsequentGrossAmount = data.no_of_injection2 * (quantity -1);\r\n }else{\r\n subsequentGrossAmount = data.no_of_injection2;\r\n }\r\n subsequent_discount_amount = this.getDecimalAmount(((+subsequentGrossAmount) * (+subsequent_discount_percent)) / 100);\r\n if(quantity > 1){\r\n data['subsequent_offer_rate'] = (subsequentGrossAmount - subsequent_discount_amount) / (quantity-1);\r\n }else{\r\n data['subsequent_offer_rate'] = (subsequentGrossAmount - subsequent_discount_amount);\r\n }\r\n }else{\r\n subsequent_discount_amount = 0;\r\n subsequent_discount_percent = 0;\r\n }\r\n\r\n\r\n if(quantity > 1){\r\n totalDiscountAmount = subsequent_discount_amount + dis_amt;\r\n }else{\r\n totalDiscountAmount = dis_amt;\r\n }\r\n\r\n net_amount = this.getDecimalAmount((+gross_amount) - totalDiscountAmount);\r\n this.populateParameterAmountWithSubsequent(data, net_amount, discount_percent, dis_amt, quantity, gross_amount,subsequent_discount_amount,subsequent_discount_percent);\r\n break;\r\n\r\n case \"unit_price\":\r\n if(data.sale_rate && data.sale_rate > 0){\r\n discount_percent = data.discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(discount_percent)) {\r\n discount_percent = 0;\r\n }\r\n let effectiveGrossAmount = 0;\r\n if(quantity > 1){\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n effectiveGrossAmount = data.sale_rate;\r\n }else{\r\n effectiveGrossAmount = data.sale_rate * quantity;\r\n }\r\n }else{\r\n effectiveGrossAmount = data.sale_rate * quantity;\r\n }\r\n dis_amt = this.getDecimalAmount(((+effectiveGrossAmount) * (+discount_percent)) / 100);\r\n let offerRate = 0;\r\n if(quantity > 1){\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n offerRate = data.sale_rate - dis_amt;\r\n }else{\r\n offerRate = data.sale_rate - (dis_amt / quantity);\r\n }\r\n }else{\r\n offerRate = data.sale_rate - dis_amt;\r\n }\r\n data['offer_rate'] = offerRate;\r\n }else{\r\n dis_amt = 0;\r\n discount_percent = 0;\r\n data['offer_rate'] = 0;\r\n }\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n subsequent_discount_percent = data.subsequent_discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(subsequent_discount_percent)) {\r\n subsequent_discount_percent = 0;\r\n }\r\n let subsequentGrossAmount = 0;\r\n if(quantity > 1){\r\n subsequentGrossAmount = data.no_of_injection2 * (quantity - 1);\r\n }else{\r\n subsequentGrossAmount = data.no_of_injection2;\r\n }\r\n subsequent_discount_amount = this.getDecimalAmount(((+subsequentGrossAmount) * (+subsequent_discount_percent)) / 100);\r\n let offerRate = 0;\r\n if(quantity > 1){\r\n offerRate = data.no_of_injection2 - (subsequent_discount_amount / (quantity - 1));\r\n }else{\r\n offerRate = data.no_of_injection2 - subsequent_discount_amount;\r\n }\r\n data['subsequent_offer_rate'] = offerRate;\r\n }else{\r\n subsequent_discount_percent = 0;\r\n subsequent_discount_amount = 0;\r\n data['subsequent_offer_rate'] = 0;\r\n }\r\n if(quantity > 1){\r\n totalDiscountAmount = dis_amt + subsequent_discount_amount;\r\n }else{\r\n totalDiscountAmount = dis_amt;\r\n }\r\n\r\n net_amount = this.getDecimalAmount((+gross_amount) - totalDiscountAmount);\r\n this.populateParameterAmountWithSubsequent(data, net_amount, discount_percent, dis_amt, quantity, gross_amount,subsequent_discount_amount,subsequent_discount_percent);\r\n\r\n break;\r\n\r\n case \"offer_rate\":\r\n case \"subsequent_offer_rate\":\r\n let offer_rate = 0;\r\n if(incoming_field == \"subsequent_offer_rate\"){\r\n offer_rate = this.getDecimalAmount(data.subsequent_offer_rate);\r\n }else{\r\n offer_rate = this.getDecimalAmount(data.offer_rate);\r\n }\r\n if (!this.coreFunctionService.isNotBlank(offer_rate)) {\r\n offer_rate = 0;\r\n }\r\n // if (offer_rate >= 0 ) {\r\n if(data.subsequent_offer_rate && data.subsequent_offer_rate > 0 && data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n effectiveTotal = ((quantity - 1) * data.subsequent_offer_rate) + data.offer_rate;\r\n }else{\r\n if(sale_rate && sale_rate > 0){\r\n effectiveTotal = quantity * data.offer_rate;\r\n }\r\n }\r\n totalDiscountAmount = gross_amount - effectiveTotal\r\n net_amount = gross_amount - totalDiscountAmount;\r\n //if(incoming_field == 'offer_rate'){\r\n let effectiveGrossAmount = 0;\r\n if(sale_rate && sale_rate > 0){\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n effectiveGrossAmount = sale_rate;\r\n dis_amt = effectiveGrossAmount - data.offer_rate;\r\n }else{\r\n effectiveGrossAmount = sale_rate * quantity;\r\n dis_amt = effectiveGrossAmount - (data.offer_rate * quantity);\r\n }\r\n }else{\r\n data[\"offer_rate\"] = 0;\r\n }\r\n if (effectiveGrossAmount > 0) {\r\n discount_percent = this.getDecimalAmount(100 * dis_amt / effectiveGrossAmount);\r\n } else {\r\n discount_percent = 0;\r\n }\r\n\r\n //}\r\n\r\n //if (incoming_field == 'subsequent_offer_rate' && data.no_of_injection2 > 0) {\r\n let subsequentGrossAmount = 0;\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n if(quantity == 1){\r\n subsequentGrossAmount = data.no_of_injection2;\r\n subsequent_discount_amount = this.getDecimalAmount(subsequentGrossAmount - data.subsequent_offer_rate);\r\n }else{\r\n subsequentGrossAmount = this.getDecimalAmount(gross_amount - effectiveGrossAmount);\r\n subsequent_discount_amount = subsequentGrossAmount - ( effectiveTotal - data.offer_rate);\r\n }\r\n }else{\r\n data[\"subsequent_offer_rate\"] = 0;\r\n }\r\n if(subsequentGrossAmount > 0){\r\n subsequent_discount_percent = this.getDecimalAmount(100 * subsequent_discount_amount / subsequentGrossAmount);\r\n }else{\r\n subsequent_discount_percent = 0;\r\n }\r\n //}\r\n this.populateParameterAmountWithSubsequent(data, net_amount, discount_percent, dis_amt, quantity, gross_amount,subsequent_discount_amount,subsequent_discount_percent);\r\n\r\n // }else{\r\n // if(incoming_field == \"subsequent_offer_rate\"){\r\n // data[\"subsequent_offer_rate\"] = offer_rate;\r\n // }else{\r\n // data[\"offer_rate\"] = offer_rate;\r\n // }\r\n // }\r\n break;\r\n case \"discount_amount\":\r\n case \"subsequent_discount_amount\":\r\n if(incoming_field == 'discount_amount'){\r\n if(sale_rate && sale_rate > 0){\r\n dis_amt = data.discount_amount;\r\n if (!this.coreFunctionService.isNotBlank(dis_amt)) {\r\n dis_amt = 0;\r\n }\r\n let effectiveGrossAmount = 0;\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n effectiveGrossAmount = sale_rate;\r\n }else{\r\n effectiveGrossAmount = quantity * sale_rate;\r\n }\r\n discount_percent = this.getDecimalAmount(((+dis_amt) * 100) / (+effectiveGrossAmount));\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0 && quantity > 1){\r\n data['offer_rate'] = (effectiveGrossAmount - dis_amt);\r\n }else{\r\n data['offer_rate'] = (effectiveGrossAmount - dis_amt) / quantity;\r\n }\r\n subsequent_discount_amount = data.subsequent_discount_amount;\r\n subsequent_discount_percent = data.subsequent_discount_percent;\r\n }else{\r\n discount_percent = 0;\r\n dis_amt = 0;\r\n subsequent_discount_amount = data.subsequent_discount_amount;\r\n subsequent_discount_percent = data.subsequent_discount_percent;\r\n }\r\n }else{\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n subsequent_discount_amount = this.getDecimalAmount(data.subsequent_discount_amount);\r\n if (!this.coreFunctionService.isNotBlank(subsequent_discount_amount)) {\r\n subsequent_discount_amount = 0;\r\n }\r\n let subsequentGrossAmount = 0;\r\n if(quantity > 1){\r\n subsequentGrossAmount = data.no_of_injection2 * (quantity -1);\r\n }else{\r\n subsequentGrossAmount = data.no_of_injection2;\r\n }\r\n subsequent_discount_percent = this.getDecimalAmount(((+subsequent_discount_amount) * 100) / (+subsequentGrossAmount));\r\n if(quantity > 1){\r\n data['subsequent_offer_rate'] = (subsequentGrossAmount - subsequent_discount_amount) / (quantity -1);\r\n }else{\r\n data['subsequent_offer_rate'] = (subsequentGrossAmount - subsequent_discount_amount);\r\n }\r\n discount_percent = data.discount_percent;\r\n dis_amt = data.discount_amount;\r\n }else{\r\n subsequent_discount_amount = 0;\r\n subsequent_discount_percent = 0;\r\n discount_percent = data.discount_percent;\r\n dis_amt = data.discount_amount;\r\n }\r\n }\r\n if(quantity > 1){\r\n totalDiscountAmount = subsequent_discount_amount + dis_amt;\r\n }else{\r\n totalDiscountAmount = dis_amt;\r\n }\r\n\r\n net_amount = this.getDecimalAmount((+gross_amount) - totalDiscountAmount);\r\n this.populateParameterAmountWithSubsequent(data, net_amount, discount_percent, dis_amt, quantity, gross_amount,subsequent_discount_amount,subsequent_discount_percent);\r\n\r\n break;\r\n }\r\n}\r\ncalculateQuotationParameterAmountForAutomotiveLimsWithSubsequent(data:any, fieldName:any) {\r\n let quantity = 0;\r\n let discount_percent = 0;\r\n let cost_rate = 0;\r\n let net_amount:any = 0;\r\n let param_quantom = 0;\r\n let Base_quotation_rate = 0;\r\n let incoming_field = fieldName;\r\n\r\n let gross_amount = 0;\r\n let dis_amt = 0;\r\n switch (incoming_field) {\r\n case \"parameter_quantum\":\r\n let parameterQuantum = data.parameter_quantum;\r\n if (!this.coreFunctionService.isNotBlank(parameterQuantum)) {\r\n parameterQuantum = 0;\r\n }\r\n data['quantum_rate'] = (+data.quotation_rate) * (+parameterQuantum);\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n net_amount = +data.quotation_effective_rate\r\n if (data.discount_percent) {\r\n let discount = ((+data.quotation_effective_rate) * (+data.discount_percent)) / 100;\r\n data['discount_amount'] = discount;\r\n net_amount = (+data.quotation_effective_rate) - discount;\r\n }\r\n data['net_amount'] = net_amount\r\n\r\n break;\r\n case \"qty\":\r\n let quantity = data.qty;\r\n if (!this.coreFunctionService.isNotBlank(quantity)) {\r\n quantity = 0;\r\n }\r\n\r\n data['quotation_effective_rate'] = (+quantity) * (+data.quantum_rate);\r\n if (data.discount_percent) {\r\n let discount = this.getDecimalAmount((+data.quotation_effective_rate) * (+data.discount_percent)) / 100;\r\n data['discount_amount'] = discount;\r\n }\r\n net_amount = this.getDecimalAmount((+data.quotation_effective_rate) - data['discount_amount']);\r\n data['net_amount'] = net_amount\r\n data['total'] = +data.quotation_effective_rate;\r\n data['qty'] = data.qty\r\n\r\n break;\r\n case \"discount_percent\":\r\n let discount_per = data.discount_percent;\r\n if (!this.coreFunctionService.isNotBlank(discount_per)) {\r\n discount_per = 0;\r\n }\r\n data['quotation_effective_rate'] = (+data.qty) * (+data.quantum_rate);\r\n net_amount = +data.quotation_effective_rate\r\n let discount = this.getDecimalAmount(((+data.quotation_effective_rate) * (+discount_per)) / 100);\r\n data['discount_amount'] = discount;\r\n net_amount = this.getDecimalAmount((+data.quotation_effective_rate) - discount);\r\n data['net_amount'] = net_amount\r\n data['total'] = +data.quotation_effective_rate;\r\n data['qty'] = data.qty;\r\n data['discount_percent'] = +discount_per;\r\n\r\n break;\r\n\r\n case \"discount_amount\":\r\n let discount_amt = data.discount_amount;\r\n if (!this.coreFunctionService.isNotBlank(discount_amt)) {\r\n discount_amt = 0;\r\n }\r\n\r\n net_amount = (+data.quotation_effective_rate) - (+discount_amt);\r\n let discount_perc = this.getDecimalAmount(((+discount_amt) * 100) / (+data.quotation_effective_rate));\r\n data['net_amount'] = net_amount;\r\n data['discount_percent'] = discount_perc;\r\n data['discount_amount'] = +data['discount_amount'];\r\n\r\n break;\r\n default:\r\n\r\n }\r\n if (data['qty'] > 0) {\r\n data['per_sample_net_rate'] = this.getDecimalAmount(data['net_amount'] / data['qty']);\r\n } else {\r\n data['per_sample_net_rate'] = 0;\r\n }\r\n this.sanitizeParameterAmount(data);\r\n }\r\ncalculateParameterLimsSegmentWiseForSubsequent(lims_segment: any, data: any, fieldName: string) {\r\n switch (lims_segment) {\r\n case 'standard':\r\n this.calculateQuotationParameterAmountForLimsWithSubsequent(data, fieldName)\r\n break;\r\n case 'automotive':\r\n this.calculateQuotationParameterAmountForAutomotiveLimsWithSubsequent(data, fieldName)\r\n break\r\n }\r\n\r\n}\r\n\r\ncalculate_quotation_with_subsequent(templateValue:any, lims_segment:any, field: any) {\r\n var total = 0;\r\n let discount_percent = 0;\r\n let net_amount = 0;\r\n let sampling_amount = 0;\r\n let final_amount = 0;\r\n let discount_amount = 0;\r\n let quotation_param_methods = [];\r\n let unit_price:any = 0;\r\n let paramArray:any = [];\r\n let gross_amount = 0;\r\n let field_name = field.field_name;\r\n let qty = 0;\r\n let product_wise_pricing = templateValue['product_wise_pricing'];\r\n let current_disount = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue['discount_percent'])) {\r\n current_disount = templateValue['discount_percent'];\r\n }\r\n\r\n if (this.coreFunctionService.isNotBlank(templateValue.qty)) {\r\n qty = templateValue.qty;\r\n }\r\n\r\n if (templateValue['quotation_param_methods'] != '' && templateValue['quotation_param_methods'].length > 0) {\r\n templateValue['quotation_param_methods'].forEach((element:any) => {\r\n let data = { ...element };\r\n paramArray.push(data);\r\n });\r\n }\r\n\r\n\r\n\r\n if (templateValue['sampling_charge'] && templateValue['sampling_charge'] != null) {\r\n sampling_amount = templateValue['sampling_charge'];\r\n }\r\n // if(gross_amount>0){\r\n if (true) {\r\n switch (field_name) {\r\n case 'parameter_array':\r\n unit_price = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue.unit_price)) {\r\n unit_price = templateValue.unit_price;\r\n }\r\n if (product_wise_pricing) {\r\n net_amount = qty * unit_price;\r\n paramArray.forEach((data:any) => {\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"discount_percent\");\r\n })\r\n\r\n } else {\r\n if (paramArray.length > 0) {\r\n discount_amount = 0;\r\n net_amount = 0;\r\n total = 0;\r\n gross_amount = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue.qty)) {\r\n qty = templateValue.qty;\r\n }\r\n paramArray.forEach((data:any) => {\r\n if (lims_segment == 'standard') {\r\n data['qty'] = qty;\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, 'qty');\r\n }\r\n gross_amount = gross_amount + data['total'];\r\n net_amount = net_amount + data['net_amount'];\r\n discount_amount = discount_amount + data['discount_amount'];\r\n });\r\n }\r\n\r\n }\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n case 'discount_percent':\r\n discount_percent = templateValue[field_name];\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n data.subsequent_discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, field_name);\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_amount = gross_amount * discount_percent / 100;\r\n net_amount = gross_amount - discount_amount;\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['unit_price'] = net_amount / templateValue['qty'];\r\n break;\r\n\r\n case 'discount_amount':\r\n discount_amount = templateValue[field_name];\r\n paramArray.forEach((data:any) => {\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n net_amount = gross_amount - discount_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty);\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n data.subsequent_discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"discount_percent\");\r\n })\r\n\r\n templateValue['unit_price'] = net_amount / templateValue['qty'];\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n\r\n case 'net_amount':\r\n discount_percent = 0;\r\n net_amount = templateValue[field_name];\r\n paramArray.forEach((data:any) => {\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n\r\n\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n paramArray.forEach((data:any) => {\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n data.subsequent_discount_percent = this.getDecimalAmount(+discount_percent);\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"discount_percent\");\r\n })\r\n\r\n templateValue[\"discount_percent\"] = discount_percent;\r\n templateValue[\"discount_amount\"] = discount_amount;\r\n templateValue['unit_price'] = net_amount / templateValue['qty'];\r\n break;\r\n\r\n case 'unit_price':\r\n unit_price = 0;\r\n if (this.coreFunctionService.isNotBlank(templateValue.unit_price)) {\r\n unit_price = this.getDecimalAmount(templateValue.unit_price);\r\n }\r\n net_amount = qty * unit_price;\r\n\r\n paramArray.forEach((data:any) => {\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"qty\");\r\n gross_amount = gross_amount + data['total'];\r\n })\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n paramArray.forEach((data:any) => {\r\n if(data.sale_rate && data.sale_rate > 0){\r\n data.discount_percent = this.getDecimalAmount(+discount_percent);\r\n }else{\r\n data.discount_percent = 0;\r\n }\r\n if(data.no_of_injection2 && data.no_of_injection2 > 0){\r\n data.subsequent_discount_percent = this.getDecimalAmount(+discount_percent);\r\n }else{\r\n data.subsequent_discount_percent = 0;\r\n }\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"unit_price\");\r\n })\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n break;\r\n\r\n default:\r\n discount_amount = 0;\r\n net_amount = 0;\r\n if (paramArray.length > 0) {\r\n paramArray.forEach((data:any) => {\r\n data['qty'] = this.getDecimalAmount(qty);\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, field_name);\r\n gross_amount = gross_amount + data['total'];\r\n net_amount = net_amount + data['net_amount'];\r\n if(data['qty'] > 1){\r\n discount_amount = discount_amount + data['discount_amount'] + data['subsequent_discount_amount'];\r\n }else{\r\n discount_amount = discount_amount + data['discount_amount'];\r\n }\r\n });\r\n }\r\n if (product_wise_pricing) {\r\n unit_price = templateValue[\"unit_price\"];\r\n net_amount = unit_price * qty;\r\n discount_amount = gross_amount - net_amount;\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n if (paramArray.length > 0) {\r\n paramArray.forEach((data:any) => {\r\n data['discount_percent'] = discount_percent;\r\n this.calculateParameterLimsSegmentWiseForSubsequent(lims_segment, data, \"unit_price\");\r\n });\r\n }\r\n }\r\n discount_percent = this.getDiscountPercentage(current_disount, discount_amount, gross_amount, qty)\r\n templateValue['discount_amount'] = discount_amount;\r\n templateValue['net_amount'] = net_amount;\r\n templateValue['discount_percent'] = discount_percent;\r\n\r\n }\r\n\r\n }\r\n\r\n final_amount = net_amount + sampling_amount;\r\n if (templateValue['qty'] > 0) {\r\n unit_price = this.getDecimalAmount(net_amount / templateValue['qty']);\r\n } else {\r\n unit_price = templateValue[\"unit_price\"];\r\n }\r\n\r\n templateValue['total'] = this.getDecimalAmount(gross_amount);\r\n templateValue['discount_amount'] = this.getDecimalAmount(discount_amount);\r\n templateValue['net_amount'] = this.getDecimalAmount(net_amount);\r\n templateValue['discount_percent'] = this.getDecimalAmount(discount_percent);\r\n templateValue['final_amount'] = this.getDecimalAmount(final_amount);\r\n templateValue['unit_price'] = this.getDecimalAmount(unit_price);\r\n if (paramArray.length > 0) {\r\n templateValue['quotation_param_methods'] = paramArray;\r\n }\r\n\r\n return templateValue;\r\n\r\n}\r\n\r\n/**\r\n * End point for subsequet calculation for quotation\r\n */\r\n\r\n\r\n}\r\n","/**\r\n * Node for to-do item\r\n */\r\n export class TodoItemNode {\r\n \"children\": TodoItemNode[];\r\n \"item\": string;\r\n \"reference\":any;\r\n \"criteria\":any;\r\n \"pId\":string;\r\n \"pIndex\":string;\r\n \"_id\":string;\r\n \"action\":any;\r\n }\r\n","import { CheckIfService } from './../check-if/check-if.service';\r\nimport { Injectable } from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport { CommonFunctionService } from '../common-utils/common-function.service';\r\nimport {TodoItemNode} from './interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TreeComponentService {\r\n dataChange = new BehaviorSubject<TodoItemNode[]>([]);\r\n\r\n get data(): TodoItemNode[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n constructor(\r\n private commonfunctionService:CommonFunctionService,\r\n private checkIfService:CheckIfService\r\n ) {\r\n }\r\n /**\r\n * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.\r\n * The return value is the list of `TodoItemNode`.\r\n */\r\n buildFileTree(obj: {[key: string]: any}, level: number,keys:any): TodoItemNode[] {\r\n return Object.keys(obj).reduce<TodoItemNode[]>((accumulator, key,i) => {\r\n const value = obj[key];\r\n const pId:any = value['reference']['_id'];\r\n const node = new TodoItemNode();\r\n node.item = key;\r\n node.reference = value['reference'];\r\n if(value && value.criteria){\r\n node['criteria'] = value.criteria;\r\n }\r\n node._id = pId;\r\n if(value['pId']){\r\n node.pId = value['pId'];\r\n }\r\n if(level == 0){\r\n let index = i+1;\r\n node.pIndex = ''+index;\r\n }else{\r\n node.pIndex = value.pIndex;\r\n }\r\n\r\n\r\n if (value != null) {\r\n let nextKey = keys[level];\r\n let next = value[nextKey];\r\n if(next == null){\r\n nextKey = keys[level + 1];\r\n next = value[nextKey];\r\n }\r\n if (next && typeof next === 'object') {\r\n Object.keys(next).forEach((childKey,i) => {\r\n next[childKey].pIndex = node.pIndex+'.'+(i+1);\r\n next[childKey].pId = pId;\r\n });\r\n node.children = this.buildFileTree(next, level + 1,keys);\r\n } else {\r\n node.item = key;\r\n }\r\n }\r\n\r\n return accumulator.concat(node);\r\n }, []);\r\n }\r\n\r\n convertParentNodeToChildNodeList(list:any,fields:any){\r\n let parentGroup:any = [];\r\n let childList:any = [];\r\n let previousIndex:number = -1;\r\n let resultList:any = [];\r\n for (let i = 0; i < list.length; i++) {\r\n const node = list[i];\r\n const pIndex = node.pIndex;\r\n if(pIndex && pIndex != ''){\r\n const indexlist = pIndex.split('.');\r\n if(indexlist && indexlist.length == 3){\r\n if(previousIndex != -1){\r\n if(previousIndex == indexlist.length){\r\n if(parentGroup.length == 3){\r\n parentGroup.splice((parentGroup.length-1),1);\r\n }\r\n childList.push(node);\r\n }else{\r\n if(parentGroup.length > 0 && childList.length > 0){\r\n this.addChildParentList(parentGroup,childList,fields,resultList);\r\n childList = [];\r\n parentGroup.splice((parentGroup.length-1),1);\r\n parentGroup.push(node);\r\n previousIndex = indexlist.length;\r\n }\r\n }\r\n }else{\r\n parentGroup.push(node);\r\n childList.push(node);\r\n }\r\n previousIndex = indexlist.length;\r\n }else if(indexlist && indexlist.length == 4){\r\n if(previousIndex == 3){\r\n childList = [];\r\n childList.push(node);\r\n }else{\r\n childList.push(node);\r\n }\r\n previousIndex = indexlist.length;\r\n }else if(indexlist && indexlist.length == 2){\r\n if(parentGroup.length > 0 && childList.length > 0){\r\n this.addChildParentList(parentGroup,childList,fields,resultList);\r\n childList = [];\r\n const firstParent = [];\r\n firstParent.push(parentGroup[0]);\r\n parentGroup = [];\r\n parentGroup.push(firstParent[0]);\r\n parentGroup.push(node);\r\n }else{\r\n parentGroup.push(node);\r\n }\r\n previousIndex = -1;\r\n }else{\r\n if(childList.length > 0){\r\n this.addChildParentList(parentGroup,childList,fields,resultList);\r\n childList = [];\r\n }\r\n parentGroup = [];\r\n parentGroup.push(node);\r\n previousIndex = -1;\r\n }\r\n if(list.length == i+1){\r\n if(parentGroup.length > 0 && childList.length > 0){\r\n this.addChildParentList(parentGroup,childList,fields,resultList);\r\n childList = [];\r\n parentGroup = [];\r\n }\r\n }\r\n }\r\n\r\n }\r\n return resultList;\r\n }\r\n addChildParentList(parentList:any,ChildList:any,fields:any,result:any){\r\n ChildList.forEach((child:any) => {\r\n let obj:any = {};\r\n if(parentList.length == 2){\r\n fields.forEach((field:any,i:number) => {\r\n if(i == 2){\r\n obj[field.field_name] = null;\r\n }else if(i == 3){\r\n obj[field.field_name] = child.reference;\r\n }else{\r\n obj[field.field_name] = parentList[i].reference;\r\n }\r\n });\r\n }else if(parentList.length == 3){\r\n fields.forEach((field:any,i:number) => {\r\n if(i == 3){\r\n obj[field.field_name] = child.reference;\r\n }else{\r\n obj[field.field_name] = parentList[i].reference;\r\n }\r\n });\r\n }\r\n result.push(obj);\r\n });\r\n // if(list && fields && list.length == fields.length){\r\n // checkSubMenu = false;\r\n // }\r\n // let object = {};\r\n // for (let i = 0; i < list.length; i++) {\r\n // const element = list[i];\r\n // let field = fields[i];\r\n // let fieldName = field.field_name;\r\n // if(i == 2){\r\n // if(list && list.length == 3){\r\n\r\n // }\r\n // }else{\r\n // object[fieldName] = element.reference;\r\n // }\r\n // if(list && list.length == (i+1)){\r\n // result.push(object);\r\n // }\r\n // }\r\n }\r\n\r\n //this function for get selected node tree\r\n getSelectedNodeWithParent(allNodes:any,selectedNodes:any,keys:any){\r\n let selectedNodesWithParent:any = [];\r\n if(allNodes && allNodes.length > 0 && selectedNodes && selectedNodes.length > 0){\r\n selectedNodes.forEach((selectNode:any) => {\r\n if(selectNode){\r\n if((keys.includes(selectNode.type) || selectNode.level == 0)&& selectNode.expandable){\r\n selectNode.allSelected = true;\r\n }else{\r\n selectNode.allSelected = false;\r\n }\r\n selectNode.select = true;\r\n let groupList:any = [];\r\n let check = this.checkIfService.checkDataAlreadyAddedInListOrNot({\"field_name\":'_id'},selectNode._id,groupList);\r\n if(!check.status){\r\n groupList.push(selectNode);\r\n }\r\n this.findChildToParentNode(allNodes,selectNode,groupList,selectedNodesWithParent);\r\n }\r\n });\r\n }\r\n return selectedNodesWithParent;\r\n }\r\n\r\n findChildToParentNode(allNodes:any,selectNode:any,groupList:any,selectedNodesWithParent:any){\r\n if(selectNode && selectNode.pId){\r\n let parentIndex = this.commonfunctionService.getIndexInArrayById(allNodes,selectNode.pId,'reference._id');\r\n if(parentIndex != -1){\r\n let parentNode = allNodes[parentIndex];\r\n let check = this.checkIfService.checkDataAlreadyAddedInListOrNot({\"field_name\":'_id'},parentNode._id,groupList);\r\n if(!check.status){\r\n groupList.push(parentNode);\r\n }\r\n this.findChildToParentNode(allNodes,parentNode,groupList,selectedNodesWithParent);\r\n }\r\n }else{\r\n let check = this.checkIfService.checkDataAlreadyAddedInListOrNot({\"field_name\":'_id'},selectNode._id,groupList);\r\n if(!check.status){\r\n groupList.push(selectNode);\r\n }\r\n }\r\n return this.modifyParentChild(selectedNodesWithParent,groupList);\r\n }\r\n modifyParentChild(selectedNodesWithParent:any,groupList:any){\r\n let sortedData = groupList.sort((a:any,b:any) => a.level - b.level);\r\n if(sortedData && sortedData.length > 0){\r\n sortedData.forEach((data:any) => {\r\n let check = this.checkIfService.checkDataAlreadyAddedInListOrNot({\"field_name\":'_id'},data._id,selectedNodesWithParent);\r\n if(check.status){\r\n let existDataIndex = this.commonfunctionService.getIndexInArrayById(selectedNodesWithParent,data._id);\r\n let object = selectedNodesWithParent[existDataIndex];\r\n if(object.pIndex != data.pIndex){\r\n check.status = false;\r\n }\r\n }\r\n if(!check.status){\r\n selectedNodesWithParent.push(data);\r\n }\r\n });\r\n }\r\n return selectedNodesWithParent;\r\n }\r\n modifySelectedDataWithParentId(selectedData:any){\r\n let modifyList=selectedData.sort((a:any,b:any) => a.pIndex.localeCompare(b.pIndex, undefined, { numeric:true }));\r\n //arr.sort( (a, b) => a.localeCompare(b, undefined, { numeric:true }) );\r\n return modifyList;\r\n }\r\n\r\n //this function for get selected node tree\r\n\r\n //This function for convet list to tree map\r\n convertTreeToList(list:any,result:any) {\r\n if(list && list.length > 0){\r\n list.forEach((child:any) => {\r\n let childrenList = [];\r\n if(child && child.children && child.children != null){\r\n childrenList = JSON.parse(JSON.stringify(child.children));\r\n }\r\n delete child.children;\r\n result.push(child);\r\n if(childrenList && childrenList.length > 0){\r\n this.convertTreeToList(childrenList,result);\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n applyRelationships = (data:any) => {\r\n let levelStack:any = [], lastNode:any = null;\r\n return data.map((curr:any, index:number) => {\r\n const node = { ...curr, id: index + 1 };\r\n if (levelStack.length === 0) {\r\n levelStack.push({ level: node.level, parent: 0 });\r\n } else {\r\n const last = levelStack[levelStack.length - 1];\r\n if (node.level > last.level) {\r\n levelStack.push({ level: node.level, parent: lastNode.id });\r\n } else if (node.level < last.level) {\r\n const\r\n levelDiff = last.level - node.level - 1,\r\n lastIndex = levelStack.length - 1;\r\n levelStack.splice(lastIndex - levelDiff, lastIndex);\r\n }\r\n }\r\n node.parentId = levelStack[levelStack.length - 1].parent;\r\n lastNode = node;\r\n return node;\r\n });\r\n };\r\n\r\n listToTree = (arr = []) => {\r\n let indexMap = new Map();\r\n arr.forEach((node:any, index:number) => {\r\n indexMap.set(node.id, index)\r\n node.children = [];\r\n });\r\n return arr.reduce((res:any, node:any, index:number, all:any) => {\r\n if (node.parentId === 0) return [...res, node];\r\n all[indexMap.get(node.parentId)].children.push(node);\r\n return res;\r\n }, []);\r\n };\r\n\r\n treeToObject = (tree:any = [], result:any = {}) => {\r\n tree.forEach((child:any) => {\r\n let modifyObj:any = {};\r\n modifyObj['reference'] = child.reference;\r\n if(child && child.criteria){\r\n modifyObj['criteria'] = child.criteria;\r\n }\r\n if(child.allSelected){\r\n modifyObj['reference']['allSelected'] = child.allSelected;\r\n }\r\n if(child.select){\r\n modifyObj['reference']['select'] = child.select;\r\n }\r\n if(child.level == 0){\r\n result[child.item] = modifyObj;\r\n }else if(child.expandable){\r\n if(!result[child.type]) result[child.type] = {}\r\n result[child.type][child.item] = modifyObj;\r\n }else{\r\n if(!result[child.type]) result[child.type] = {}\r\n result[child.type][child.item] = modifyObj;\r\n }\r\n if(child.children && child.children.length > 0){\r\n this.treeToObject(child.children, child.level == 0 ? result[child.item] : result[child.type][child.item]);\r\n }\r\n });\r\n return result;\r\n };\r\n buildTreeObject(arr = []) {\r\n let relationShip = this.applyRelationships(arr);\r\n let list = this.listToTree(relationShip);\r\n let tree = this.treeToObject(list);\r\n return tree;\r\n }\r\n //This function for convet list to tree map\r\n\r\n /** Add an item to to-do list */\r\n insertItem(parent: TodoItemNode, name: string) {\r\n if (parent.children) {\r\n parent.children.push({item: name} as TodoItemNode);\r\n this.dataChange.next(this.data);\r\n }\r\n }\r\n\r\n updateItem(node: TodoItemNode, name: string) {\r\n node.item = name;\r\n this.dataChange.next(this.data);\r\n }\r\n updateTreeViewData(responce:any,field:any,treeViewData:any){\r\n let result = {\r\n treeViewData:treeViewData\r\n }\r\n const fieldName = field.field_name;\r\n let keys = [];\r\n let fields = [];\r\n if(field && field.treeViewKeys){\r\n keys = field.treeViewKeys;\r\n }\r\n if(field && field.fields && field.fields.length > 0){\r\n fields = field.fields;\r\n }\r\n const treeData = this.buildFileTree(responce,0,keys);\r\n //console.log(treeData);\r\n let selectedNodeList = this.convertTreeToList(JSON.parse(JSON.stringify(treeData)),[]);\r\n let childList = [];\r\n if(fields && fields.length > 0){\r\n childList = this.convertParentNodeToChildNodeList(selectedNodeList,fields);\r\n }\r\n //console.log(selectedNodeList);\r\n //console.log(childList);\r\n //this.dataSource[fieldName].data = treeData;\r\n result.treeViewData[fieldName] = childList;\r\n return result;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\ndeclare var webkitSpeechRecognition: any;\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VoiceRecognitionService {\r\n recognition: any;\r\n isStoppedSpeechRecog = false;\r\n public text = '';\r\n private voiceToTextSubject: Subject<string> = new Subject();\r\n private speakingPaused: Subject<any> = new Subject();\r\n private tempWords: string = '';\r\n constructor() { }\r\n\r\n /**\r\n * @description Function to return observable so voice sample text can be send to input.\r\n */\r\n speechInput() {\r\n return this.voiceToTextSubject.asObservable();\r\n }\r\n\r\n /**\r\n * @description Function to initialize voice recognition.\r\n */\r\n init() {\r\n this.recognition = new webkitSpeechRecognition();\r\n this.recognition.interimResults = true;\r\n this.recognition.lang = 'en-US';\r\n\r\n this.recognition.addEventListener('result', (e: any) => {\r\n const transcript = Array.from(e.results)\r\n .map((result: any) => result[0])\r\n .map((result) => result.transcript)\r\n .join('');\r\n this.tempWords = transcript;\r\n this.voiceToTextSubject.next(this.text || transcript);\r\n });\r\n return this.initListeners();\r\n }\r\n\r\n /**\r\n * @description Add event listeners to get the updated input and when stoped\r\n */\r\n initListeners() {\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n this.recognition.stop();\r\n });\r\n return this.speakingPaused.asObservable();\r\n }\r\n\r\n /**\r\n * @description Function to mic on to listen.\r\n */\r\n start() {\r\n this.text = '';\r\n this.isStoppedSpeechRecog = false;\r\n this.recognition.start();\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n if (this.isStoppedSpeechRecog) {\r\n this.recognition.isActive = true;\r\n this.recognition.stop();\r\n } else {\r\n this.isStoppedSpeechRecog = false;\r\n this.wordConcat();\r\n // Checked time with last api call made time so we can't have multiple start action within 200ms for countinious listening\r\n // Fixed : ERROR DOMException: Failed to execute 'start' on 'SpeechRecognition': recognition has already started.\r\n if (!this.recognition.lastActiveTime || (Date.now() - this.recognition.lastActive) > 200) {\r\n this.recognition.start();\r\n this.recognition.lastActive = Date.now();\r\n }\r\n }\r\n this.voiceToTextSubject.next(this.text);\r\n });\r\n }\r\n\r\n /**\r\n * @description Function to stop recognition.\r\n */\r\n stop() {\r\n this.text = '';\r\n this.isStoppedSpeechRecog = true;\r\n this.wordConcat()\r\n this.recognition.stop();\r\n this.recognition.isActive = false;\r\n this.speakingPaused.next('Stopped speaking');\r\n }\r\n\r\n /**\r\n * @description Merge previous input with latest input.\r\n */\r\n wordConcat() {\r\n this.text = this.text.trim() + ' ' + this.tempWords;\r\n this.text = this.text.trim();\r\n this.tempWords = '';\r\n }\r\n}\r\n"," export enum KeyCode {\r\n MAC_ENTER = 3,\r\n BACKSPACE = 8,\r\n TAB = 9,\r\n NUM_CENTER = 12,\r\n ENTER = 13,\r\n SHIFT = 16,\r\n CONTROL = 17,\r\n ALT = 18,\r\n PAUSE = 19,\r\n CAPS_LOCK = 20,\r\n ESCAPE = 27,\r\n SPACE = 32,\r\n PAGE_UP = 33,\r\n PAGE_DOWN = 34,\r\n END = 35,\r\n HOME = 36,\r\n LEFT_ARROW = 37,\r\n UP_ARROW = 38,\r\n RIGHT_ARROW = 39,\r\n DOWN_ARROW = 40,\r\n PLUS_SIGN = 43,\r\n PRINT_SCREEN = 44,\r\n INSERT = 45,\r\n DELETE = 46,\r\n ZERO = 48,\r\n ONE = 49,\r\n TWO = 50,\r\n THREE = 51,\r\n FOUR = 52,\r\n FIVE = 53,\r\n SIX = 54,\r\n SEVEN = 55,\r\n EIGHT = 56,\r\n NINE = 57,\r\n FF_SEMICOLON = 59,\r\n FF_EQUALS = 61,\r\n QUESTION_MARK = 63,\r\n AT_SIGN = 64,\r\n A = 65,\r\n B = 66,\r\n C = 67,\r\n D = 68,\r\n E = 69,\r\n F = 70,\r\n G = 71,\r\n H = 72,\r\n I = 73,\r\n J = 74,\r\n K = 75,\r\n L = 76,\r\n M = 77,\r\n N = 78,\r\n O = 79,\r\n P = 80,\r\n Q = 81,\r\n R = 82,\r\n S = 83,\r\n T = 84,\r\n U = 85,\r\n V = 86,\r\n W = 87,\r\n X = 88,\r\n Y = 89,\r\n Z = 90,\r\n META = 91,\r\n MAC_WK_CMD_LEFT = 91,\r\n MAC_WK_CMD_RIGHT = 93,\r\n CONTEXT_MENU = 93,\r\n NUMPAD_ZERO = 96,\r\n NUMPAD_ONE = 97,\r\n NUMPAD_TWO = 98,\r\n NUMPAD_THREE = 99,\r\n NUMPAD_FOUR = 100,\r\n NUMPAD_FIVE = 101,\r\n NUMPAD_SIX = 102,\r\n NUMPAD_SEVEN = 103,\r\n NUMPAD_EIGHT = 104,\r\n NUMPAD_NINE = 105,\r\n NUMPAD_MULTIPLY = 106,\r\n NUMPAD_PLUS = 107,\r\n NUMPAD_MINUS = 109,\r\n NUMPAD_PERIOD = 110,\r\n NUMPAD_DIVIDE = 111,\r\n F1 = 112,\r\n F2 = 113,\r\n F3 = 114,\r\n F4 = 115,\r\n F5 = 116,\r\n F6 = 117,\r\n F7 = 118,\r\n F8 = 119,\r\n F9 = 120,\r\n F10 = 121,\r\n F11 = 122,\r\n F12 = 123,\r\n NUM_LOCK = 144,\r\n SCROLL_LOCK = 145,\r\n FIRST_MEDIA = 166,\r\n FF_MINUS = 173,\r\n MUTE = 173,\r\n VOLUME_DOWN = 174,\r\n VOLUME_UP = 175,\r\n FF_MUTE = 181,\r\n FF_VOLUME_DOWN = 182,\r\n LAST_MEDIA = 183,\r\n FF_VOLUME_UP = 183,\r\n SEMICOLON = 186,\r\n EQUALS = 187,\r\n COMMA = 188,\r\n DASH = 189,\r\n SLASH = 191,\r\n APOSTROPHE = 192,\r\n TILDE = 192,\r\n OPEN_SQUARE_BRACKET = 219,\r\n BACKSLASH = 220,\r\n CLOSE_SQUARE_BRACKET = 221,\r\n SINGLE_QUOTE = 222,\r\n MAC_META = 224,\r\n}\r\n","export const editorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '100px',\r\n minHeight: '0',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' },\r\n { class: 'times-new-roman', name: 'Times New Roman' },\r\n { class: 'calibri', name: 'Calibri' },\r\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: true,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [],\r\n ['fontSize', 'insertImage', 'insertVideo',]\r\n ]\r\n };\r\n\r\nexport const minieditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '100px',\r\n minHeight: '0',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: false,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' },\r\n { class: 'times-new-roman', name: 'Times New Roman' },\r\n { class: 'calibri', name: 'Calibri' },\r\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: 'titleText',\r\n class: 'titleText',\r\n tag: 'h1',\r\n },\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: true,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [],\r\n ['fontSize',\r\n 'textColor',\r\n 'backgroundColor',\r\n 'customClasses',\r\n 'undo',\r\n 'redo',\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'link',\r\n 'unlink',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'insertHorizontalRule',\r\n 'toggleEditorMode',\r\n 'justifyLeft',\r\n 'justifyCenter',\r\n 'justifyRight',\r\n 'justifyFull',\r\n 'indent',\r\n 'outdent',\r\n 'insertUnorderedList',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName',\r\n 'removeFormat',\r\n 'strikeThrough']\r\n ]\r\n};\r\nexport const htmlViewConfig = {\r\n editable: false,\r\n showToolbar: false,\r\n }\r\n","export enum Flags {\r\n TreeView = 'treeView',\r\n IsShowDiv = 'isShowDiv',\r\n GridDisable = \"gridDisable\",\r\n SelectAllcheck = 'selectAllcheck',\r\n IsBulkUpdate = 'isBulkUpdate',\r\n CheckForDownloadReport = 'checkForDownloadReport',\r\n FlagForTdsForm = 'flagForTdsForm',\r\n CheckPreviewData = 'checkPreviewData',\r\n IsHidePrintbtn = 'isHidePrintbtn',\r\n UpdateGridData = 'updateGridData',\r\n PageLoading = 'pageLoading',\r\n CreateFilterFormgroup = 'createFilterFormgroup',\r\n CreateFilterHeadElement = 'createFilterHeadElement',\r\n UpdateNotification = 'updateNotification',\r\n HeavyDownload = 'heavyDownload',\r\n IsAdFilter = 'isAdFilter'\r\n }\r\n","export enum Config {\r\n Fixedcolwidth = 'fixedcolwidth',\r\n SortingColumnName = 'sortingColumnName',\r\n PageSizes = 'pageSizes',\r\n OrderBy = 'orderBy',\r\n PageNumber = 'pageNumber',\r\n Total = 'total',\r\n ItemNumOfGrid = 'itemNumOfGrid',\r\n CurrentMenu = 'currentMenu',\r\n SortIcon = 'sortIcon',\r\n Filterdata = 'filterdata',\r\n RowSelectionIndex = 'rowSelectionIndex',\r\n SelectedRowIndex = 'selectedRowIndex',\r\n EditedRowIndex = 'editedRowIndex',\r\n ColumnSelectionIndex = 'columnSelectionIndex',\r\n CurrentRowIndex = 'currentRowIndex',\r\n FormName = 'formName',\r\n SelectContactAdd = 'selectContactAdd',\r\n CurrentBrowseUrl = 'currentBrowseUrl',\r\n RecordId = 'recordId',\r\n RowId = 'rowId',\r\n MenuTopLeftPosition = 'menuTopLeftPosition',\r\n DownloadPdfCheck = 'downloadPdfCheck',\r\n DownloadQRCode = 'downloadQRCode',\r\n SelectedViewRowIndex = 'selectedViewRowIndex',\r\n ViewColumnName = 'viewColumnName',\r\n EditedRowCopyData = 'editedRowCopyData',\r\n SelectedRowData = 'selectedRowData',\r\n UserInfo = 'userInfo',\r\n HeadElements = 'headElements',\r\n GridButtons = 'gridButtons',\r\n ActionButtons = 'actionButtons',\r\n Elements = 'elements',\r\n ModifyGridData = 'modifyGridData',\r\n Tabs = 'tabs',\r\n Tab = 'tab',\r\n BulkuploadList = 'bulkuploadList',\r\n TreeViewData = 'treeViewData',\r\n CurTreeViewField = 'curTreeViewField',\r\n StaticData = 'staticData',\r\n CopyStaticData = 'copyStaticData',\r\n TypeAheadData = 'typeAheadData',\r\n Details = 'details',\r\n Dinamic_form = 'dinamic_form',\r\n TableFields = 'tableFields',\r\n QueryParams = 'queryParams',\r\n TabFilterData = 'tabFilterData',\r\n TypegrapyCriteriaList = 'typegrapyCriteriaList',\r\n PreviewData = 'previewData',\r\n DownloadClick = 'downloadClick',\r\n Forms = 'forms',\r\n AdFilterList = 'adFilterList',\r\n CurrentActionButton = 'currentActionButton'\r\n}\r\n","import { Flags } from '../enums/flags.enum';\r\nimport { Config } from '../enums/config.enum';\r\nimport { Common } from '../enums/common.enum';\r\n\r\nexport const AppConfig = {\r\n // All boolean variable default value assigned\r\n [Flags.TreeView] : false,\r\n [Flags.IsShowDiv] : false,\r\n [Flags.GridDisable] : false,\r\n [Flags.SelectAllcheck] : false,\r\n [Flags.IsBulkUpdate] : false,\r\n [Flags.CheckForDownloadReport]:false,\r\n [Flags.FlagForTdsForm] : false,\r\n [Flags.CheckPreviewData] : false,\r\n [Flags.IsHidePrintbtn] : false,\r\n [Flags.UpdateGridData] : false,\r\n [Flags.PageLoading] : true,\r\n [Flags.CreateFilterFormgroup] : true,\r\n [Flags.CreateFilterHeadElement] : true,\r\n [Flags.UpdateNotification] : true,\r\n [Flags.HeavyDownload] : false,\r\n [Flags.IsAdFilter] : false,\r\n\r\n //All configuration varaiable default value assigned\r\n [Config.Fixedcolwidth] : 150,\r\n [Config.SortingColumnName] : null,\r\n [Config.PageSizes] : [25, 50, 75, 100, 200],\r\n [Config.OrderBy] : '-',\r\n [Config.PageNumber] : Common.PAGE_NO,\r\n [Config.Total] : 0,\r\n [Config.ItemNumOfGrid] : null,\r\n [Config.CurrentMenu] : {},\r\n [Config.SortIcon] : 'down',\r\n [Config.Filterdata] : '',\r\n [Config.RowSelectionIndex] : 0,\r\n [Config.SelectedRowIndex] : -1,\r\n [Config.EditedRowIndex] : -1,\r\n [Config.ColumnSelectionIndex] : -1,\r\n [Config.CurrentRowIndex] : -1,\r\n [Config.FormName] : '',\r\n [Config.SelectContactAdd] : '',\r\n [Config.CurrentBrowseUrl] : '',\r\n [Config.RecordId] : '',\r\n [Config.RowId] : '',\r\n [Config.MenuTopLeftPosition] : {x: '0', y: '0'},\r\n [Config.DownloadPdfCheck] : '',\r\n [Config.DownloadQRCode] : '',\r\n [Config.SelectedViewRowIndex] : -1,\r\n [Config.ViewColumnName] : '',\r\n [Config.EditedRowCopyData] : {},\r\n [Config.SelectedRowData] : {},\r\n [Config.UserInfo] : {},\r\n [Config.HeadElements] : [],\r\n [Config.GridButtons] : [],\r\n [Config.ActionButtons] : [],\r\n [Config.Elements] : [],\r\n [Config.ModifyGridData] : [],\r\n [Config.Tabs] : [],\r\n [Config.Tab] : {},\r\n [Config.BulkuploadList] : [],\r\n [Config.TreeViewData] : {},\r\n [Config.CurTreeViewField] : {},\r\n [Config.StaticData] : {},\r\n [Config.CopyStaticData] : {},\r\n [Config.TypeAheadData] : [],\r\n [Config.Details] : {},\r\n [Config.Dinamic_form] : {},\r\n [Config.TableFields] : [],\r\n [Config.QueryParams] : {},\r\n [Config.TabFilterData] : [],\r\n [Config.TypegrapyCriteriaList] : [],\r\n [Config.PreviewData] : '',\r\n [Config.DownloadClick] : '',\r\n [Config.Forms] : {},\r\n [Config.AdFilterList] : [],\r\n [Config.CurrentActionButton] : {}\r\n };\r\n\r\n export interface AppConfigInterface {\r\n treeView:boolean,\r\n isShowDiv:boolean,\r\n gridDisable:boolean,\r\n selectAllcheck:boolean,\r\n isBulkUpdate:boolean,\r\n checkForDownloadReport:boolean,\r\n flagForTdsForm:boolean,\r\n checkPreviewData:boolean,\r\n isHidePrintbtn:boolean,\r\n updateGridData:boolean,\r\n pageLoading:boolean,\r\n createFilterFormgroup:boolean,\r\n createFilterHeadElement:boolean,\r\n updateNotification:boolean,\r\n heavyDownload:boolean,\r\n isAdFilter:boolean,\r\n\r\n fixedcolwidth:any,\r\n sortingColumnName:any,\r\n pageSizes:any,\r\n orderBy:any,\r\n pageNumber:any,\r\n total:any,\r\n itemNumOfGrid:any,\r\n currentMenu:any,\r\n sortIcon:any,\r\n filterdata:any,\r\n rowSelectionIndex:any,\r\n selectedRowIndex:any,\r\n editedRowIndex:any,\r\n columnSelectionIndex:any,\r\n currentRowIndex:any,\r\n formName:any,\r\n selectContactAdd:any,\r\n currentBrowseUrl:any,\r\n recordId:any,\r\n rowId:any,\r\n menuTopLeftPosition:any,\r\n downloadPdfCheck:any,\r\n downloadQRCode:any,\r\n selectedViewRowIndex:any,\r\n viewColumnName:any,\r\n editedRowCopyData:any,\r\n selectedRowData:any,\r\n userInfo:any,\r\n headElements:any,\r\n gridButtons:any,\r\n actionButtons:any,\r\n elements:any,\r\n modifyGridData:any,\r\n tabs:any,\r\n tab:any,\r\n bulkuploadList:any,\r\n treeViewData:any,\r\n curTreeViewField:any,\r\n staticData:any,\r\n copyStaticData:any,\r\n typeAheadData:any,\r\n details:any,\r\n dinamic_form:any,\r\n tableFields:any,\r\n queryParams:any,\r\n tabFilterData:any,\r\n typegrapyCriteriaList:any,\r\n previewData:any,\r\n downloadClick:any,\r\n forms:any,\r\n adFilterList:any,\r\n currentActionButton:any\r\n }\r\n","import { ApiCallService } from './../../api/api-call/api-call.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { UntypedFormBuilder, UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';\r\nimport { StorageService } from '../../storage/storage.service';\r\nimport { CustomvalidationService } from '../../customvalidation/customvalidation.service';\r\nimport { CheckIfService } from '../../check-if/check-if.service';\r\nimport { ModelService } from '../../model/model.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormCreationService {\r\n\r\n minDate: Date;\r\n maxDate: Date;\r\n\r\n constructor(\r\n private commonFunctionService:CommonFunctionService,\r\n private envService:EnvService,\r\n private storageService:StorageService,\r\n private formBuilder: UntypedFormBuilder,\r\n private customvalidationService:CustomvalidationService,\r\n private apiCallService:ApiCallService,\r\n private checkifService:CheckIfService,\r\n private modalService:ModelService\r\n ) {\r\n const currentYear = new Date().getFullYear();\r\n this.minDate = new Date(currentYear - 100, 0, 1);\r\n this.maxDate = new Date(currentYear + 25, 11, 31);\r\n }\r\n getTempData(tempData:any,tabIndex:any,currentMenu:any,formName:any,dinamic_form:any){\r\n let responce:any={\r\n tab:{},\r\n currentMenu:currentMenu,\r\n grid_view_mode:\"\",\r\n form:{},\r\n forms:{}\r\n }\r\n if(tempData[0].templateTabs){\r\n responce.tab = tempData[0].templateTabs[tabIndex];\r\n }\r\n let tab = responce.tab\r\n if (tab && tab.tab_name != \"\" && tab.tab_name != null && tab.tab_name != undefined) {\r\n if(currentMenu && currentMenu.name && currentMenu.name != undefined && currentMenu.name != null){\r\n const menu = {\"name\":tab.tab_name};\r\n this.storageService.SetActiveMenu(menu);\r\n responce.currentMenu.name = tab.tab_name;\r\n }\r\n }\r\n if(tab && tab.grid != null && tab.grid != undefined ){\r\n if(tab.grid.grid_view != null && tab.grid.grid_view != undefined && tab.grid.grid_view != ''){\r\n responce.grid_view_mode=tab.grid.grid_view;\r\n }else{\r\n responce.grid_view_mode='tableView';\r\n }\r\n }\r\n\r\n if(tab && formName != ''){\r\n if(formName == 'DINAMIC_FORM'){\r\n responce.form = dinamic_form\r\n }else if(tab.forms != null && tab.forms != undefined ){\r\n responce.forms = tab.forms;\r\n let gridActionButtons = [];\r\n if(tab.grid && tab.grid.action_buttons){\r\n gridActionButtons = tab.grid.action_buttons;\r\n }\r\n responce.form = this.commonFunctionService.getForm(responce.forms,formName,gridActionButtons)\r\n if(formName == 'clone_object'){\r\n responce.form['api_params'] = \"QTMP:CLONE_OBJECT\";\r\n }\r\n //this.setForm();\r\n }else{\r\n responce.form = {};\r\n }\r\n }\r\n return responce;\r\n }\r\n\r\n checkFormDetails(form:any,tab:any,currentMenu:any){\r\n let responce:any={\r\n currentMenu:currentMenu,\r\n bulkupdates:false,\r\n getLocation:false,\r\n headerFiledsData:[],\r\n tableFields:[],\r\n formFieldButtons:[],\r\n getTableField:true\r\n }\r\n if(form){\r\n if(form.details){\r\n if(form.details.collection_name && form.details.collection_name != '' && (responce.currentMenu != undefined || this.envService.getRequestType() == 'PUBLIC')){\r\n if(responce.currentMenu == undefined){\r\n responce.currentMenu = {};\r\n }\r\n responce.currentMenu['name'] = form.details.collection_name;\r\n if(tab && tab.tab_name && tab.tab_name != ''){\r\n responce.currentMenu['tab_name'] = tab.tab_name;\r\n }\r\n }\r\n if(form.details.bulk_update){\r\n responce.bulkupdates = true;\r\n }else{\r\n responce.bulkupdates = false;\r\n }\r\n }\r\n if(form.getLocation){\r\n responce.getLocation = form.getLocation;\r\n }else{\r\n responce.getLocation = false;\r\n }\r\n if(form.headerFields){\r\n responce.headerFiledsData = form.headerFields;\r\n }\r\n if(form['tableFields'] && form['tableFields'] != undefined && form['tableFields'] != null){\r\n responce.tableFields = JSON.parse(JSON.stringify(form['tableFields']));\r\n responce.getTableField = false;\r\n }else{\r\n responce.tableFields = [];\r\n }\r\n if(form.tab_list_buttons && form.tab_list_buttons != undefined && form.tab_list_buttons.length > 0){\r\n responce.formFieldButtons = form.tab_list_buttons;\r\n }\r\n }\r\n return responce;\r\n\r\n }\r\n createFormControl(forControl:any, field:any, object:any, type:string) {\r\n let disabled = field.is_disabled ? true : ((field.disable_if != undefined && field.disable_if != '') ? true : false);\r\n switch (type) {\r\n case \"list\":\r\n forControl[field.field_name] = this.formBuilder.array(object, this.validator(field))\r\n break;\r\n case 'checkbox':\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled }, this.validator(field))\r\n break;\r\n case \"text\":\r\n switch (field.type) {\r\n case \"gst_number\":\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled },this.validator(field),this.customvalidationService.isValidGSTNumber.bind(this.customvalidationService))\r\n break;\r\n case \"api\":\r\n switch (field.api_call_name) {\r\n case \"gst_number\":\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled },this.validator(field),this.customvalidationService.isValidGSTNumber.bind(this.customvalidationService))\r\n break;\r\n default:\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled }, this.validator(field))\r\n break;\r\n }\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled },this.validator(field),this.customvalidationService.isValidGSTNumber.bind(this.customvalidationService))\r\n break;\r\n case \"typeahead\":\r\n switch (field.datatype) {\r\n case 'object':\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled },this.validator(field),this.customvalidationService.isValidData.bind(this.customvalidationService))\r\n break;\r\n default:\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled }, this.validator(field))\r\n break;\r\n }\r\n break;\r\n default:\r\n forControl[field.field_name] = new UntypedFormControl({ value: object, disabled: disabled }, this.validator(field))\r\n break;\r\n }\r\n break;\r\n case \"group\":\r\n forControl[field.field_name] = this.formBuilder.group(object)\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n validator(field:any) {\r\n const validator = []\r\n if (field.is_mandatory != undefined && field.is_mandatory) {\r\n switch (field.type) {\r\n case \"grid_selection\":\r\n case \"list_of_string\":\r\n break;\r\n case \"typeahead\":\r\n if (field.datatype != 'list_of_object' && field.datatype != 'chips') {\r\n validator.push(Validators.required)\r\n }\r\n break;\r\n case 'checkbox':\r\n validator.push(Validators.requiredTrue)\r\n break;\r\n case \"email\":\r\n validator.push(Validators.required)\r\n validator.push(Validators.email);\r\n break;\r\n default:\r\n validator.push(Validators.required)\r\n break;\r\n }\r\n }else{\r\n switch (field.type){\r\n case \"email\":\r\n validator.push(Validators.email);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (field.min_length != undefined && field.min_length != null && field.min_length != '' && Number(field.min_length) && field.min_length > 0) {\r\n validator.push(Validators.minLength(field.min_length))\r\n }\r\n if(field.max_length != undefined && field.max_length != null && field.max_length != '' && Number(field.max_length) && field.max_length > 0){\r\n validator.push(Validators.maxLength(field.max_length))\r\n }\r\n return validator;\r\n }\r\n setNewForm(tableFields:any,formFieldButtons:any,form:any,elements:any,selectedRowIndex:number){\r\n let responce:any = {\r\n calculationFieldList:[],\r\n showIfFieldList:[],\r\n buttonIfList:[],\r\n disableIfFieldList:[],\r\n mendetoryIfFieldList : [],\r\n gridSelectionMendetoryList:[],\r\n customValidationFiels : [],\r\n editorTypeFieldList : [],\r\n checkBoxFieldListValue:[],\r\n filePreviewFields:[],\r\n staticModal:[],\r\n forControl:{},\r\n showGridData:{},\r\n isStepper:false,\r\n blankField:{fieldName:'',index:-1}\r\n }\r\n for (let index = 0; index < tableFields.length; index++) {\r\n const element = tableFields[index];\r\n if(element == null){\r\n responce.blankField.fieldName = form.name;\r\n responce.blankField.index = index+1;\r\n //this.notifyFieldValueIsNull(form.name,index+1);\r\n break;\r\n }\r\n if(element.type == 'pdf_view'){\r\n if(selectedRowIndex && selectedRowIndex != -1 && elements && elements.length > 0){\r\n const object = elements[selectedRowIndex];\r\n responce.staticModal.push(this.apiCallService.getPaylodWithCriteria(element.onchange_api_params,element.onchange_call_back_field,element.onchange_api_params_criteria,object));\r\n }\r\n responce.editorTypeFieldList.push(element);\r\n }\r\n if(element.type == 'info_html' || element.type == 'html_view') {\r\n responce.editorTypeFieldList.push(element);\r\n responce.filePreviewFields.push(element);\r\n }\r\n if(element.field_name && element.field_name != ''){\r\n switch (element.type) {\r\n case \"list_of_checkbox\":\r\n this.createFormControl(responce.forControl, element, [], \"list\")\r\n responce.checkBoxFieldListValue.push(element);\r\n break;\r\n case \"checkbox\":\r\n this.createFormControl(responce.forControl, element, false, \"checkbox\")\r\n break;\r\n case \"date\":\r\n let currentYear = new Date().getFullYear();\r\n let value:any = \"\";\r\n if(element.defaultValue && element.defaultValue != null && element.defaultValue != ''){\r\n value = this.setDefaultDate(element);\r\n }\r\n if(element.datatype == 'object'){\r\n this.minDate = new Date();\r\n if(element.etc_fields && element.etc_fields != null){\r\n if(element.etc_fields.minDate){\r\n if(element.etc_fields.minDate == '-1'){\r\n this.minDate = new Date(currentYear - 100, 0, 1);\r\n }else{\r\n this.minDate.setDate(new Date().getDate() - Number(element.etc_fields.minDate));\r\n }\r\n }\r\n }\r\n this.maxDate = new Date();\r\n if(element.etc_fields && element.etc_fields != null){\r\n if(element.etc_fields.maxDate){\r\n if(element.etc_fields.maxDate == '-1'){\r\n this.maxDate = new Date(currentYear + 25, 11, 31);\r\n }else{\r\n this.maxDate.setDate(new Date().getDate() + Number(element.etc_fields.maxDate));\r\n }\r\n }\r\n }\r\n }else{\r\n this.minDate = new Date(currentYear - 100, 0, 1);\r\n this.maxDate = new Date(currentYear + 25, 11, 31);\r\n }\r\n element['minDate'] = this.minDate\r\n element['maxDate'] = this.maxDate;\r\n this.createFormControl(responce.forControl, element, value, \"text\")\r\n break;\r\n case \"daterange\":\r\n const date_range = {};\r\n let list_of_dates = [\r\n {field_name : 'start'},\r\n {field_name : 'end'}\r\n ]\r\n if (list_of_dates.length > 0) {\r\n list_of_dates.forEach((data) => {\r\n this.createFormControl(date_range, data, '', \"text\")\r\n });\r\n }\r\n this.createFormControl(responce.forControl, element, date_range, \"group\")\r\n break;\r\n case \"list_of_fields\":\r\n case \"group_of_fields\":\r\n const list_of_fields = {};\r\n if(element){\r\n if (element.list_of_fields && element.list_of_fields.length > 0) {\r\n for (let j = 0; j < element.list_of_fields.length; j++) {\r\n const data = element.list_of_fields[j];\r\n if(data == null){\r\n responce.blankField.fieldName = element.name;\r\n responce.blankField.index = index+1+\"->\"+j+1;\r\n //this.notifyFieldValueIsNull(element.name,j+1);\r\n break;\r\n }\r\n if(element.type == 'list_of_fields' && element.datatype != 'key_value'){\r\n data['notDisplay'] = false;\r\n }\r\n let modifyData = JSON.parse(JSON.stringify(data));\r\n modifyData['parent'] = element.field_name;\r\n //show if handling\r\n if(data.show_if && data.show_if != ''){\r\n modifyData['parentIndex'] = index;\r\n modifyData['currentIndex'] = j;\r\n responce.showIfFieldList.push(modifyData);\r\n }\r\n //Mendetory If handling\r\n if(data.mandatory_if && data.mandatory_if != ''){\r\n responce.mendetoryIfFieldList.push(modifyData);\r\n }\r\n //disable if handling\r\n if((data.disable_if && data.disable_if != '') || (data.disable_on_update && data.disable_on_update != '' && data.disable_on_update != undefined && data.disable_on_update != null) || (data.disable_on_add && data.disable_on_add != '' && data.disable_on_add != undefined && data.disable_on_add != null)){\r\n responce.disableIfFieldList.push(modifyData);\r\n }\r\n if(element.type == 'list_of_fields'){\r\n modifyData.is_mandatory=false;\r\n }\r\n if(data.field_name && data.field_name != '' && element.datatype != \"list_of_object_with_popup\"){\r\n // Calculation onChange handling\r\n if (element.onchange_function && element.onchange_function_param && element.onchange_function_param != \"\"){\r\n responce.calculationFieldList.push(element);\r\n }\r\n switch (data.type) {\r\n case \"list_of_checkbox\":\r\n this.createFormControl(list_of_fields, modifyData, [], \"list\")\r\n responce.checkBoxFieldListValue.push(modifyData);\r\n break;\r\n case \"checkbox\":\r\n this.createFormControl(list_of_fields, modifyData, false, \"checkbox\")\r\n break;\r\n case \"date\":\r\n let currentYear = new Date().getFullYear();\r\n if(data.datatype == 'object'){\r\n this.minDate = new Date();\r\n if(data.etc_fields && data.etc_fields != null){\r\n if(data.etc_fields.minDate){\r\n if(data.etc_fields.minDate == '-1'){\r\n this.minDate = new Date(currentYear - 100, 0, 1);\r\n }else{\r\n this.minDate.setDate(new Date().getDate() - Number(data.etc_fields.minDate));\r\n }\r\n }\r\n }\r\n this.maxDate = new Date();\r\n if(data.etc_fields && data.etc_fields != null){\r\n if(data.etc_fields.maxDate){\r\n if(data.etc_fields.maxDate == '-1'){\r\n this.maxDate = new Date(currentYear + 25, 11, 31);\r\n }else{\r\n this.maxDate.setDate(new Date().getDate() + Number(data.etc_fields.maxDate));\r\n }\r\n }\r\n }\r\n }else{\r\n this.minDate = new Date(currentYear - 100, 0, 1);\r\n this.maxDate = new Date(currentYear + 25, 11, 31);\r\n }\r\n data['minDate'] = this.minDate\r\n data['maxDate'] = this.maxDate;\r\n this.createFormControl(list_of_fields, modifyData, '', \"text\")\r\n break;\r\n default:\r\n this.createFormControl(list_of_fields, modifyData, '', \"text\")\r\n break;\r\n }\r\n }\r\n data.field_class = this.commonFunctionService.getDivClass(data,(tableFields.length + element.list_of_fields.length));\r\n }\r\n }\r\n }\r\n this.createFormControl(responce.forControl, element, list_of_fields, \"group\")\r\n // if(element.type == 'list_of_fields'){\r\n // this.list_of_fields.push(element);\r\n // }\r\n break;\r\n // case 'html_view':\r\n // const field = {\r\n // field_name : 'html_view_1'\r\n // }\r\n // this.createFormControl(forControl, element, '', \"text\")\r\n // break;\r\n case \"stepper\":\r\n if(element.list_of_fields && element.list_of_fields.length > 0) {\r\n element.list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields != undefined && step.list_of_fields.length > 0){\r\n const stepper_of_fields = {};\r\n step.list_of_fields.forEach((data:any) =>{\r\n let modifyData = JSON.parse(JSON.stringify(data));\r\n modifyData.parent = step.field_name;\r\n //show if handling\r\n if(data.show_if && data.show_if != ''){\r\n responce.showIfFieldList.push(modifyData);\r\n }\r\n //mendetory if handling\r\n if(data.mandatory_if && data.mandatory_if != ''){\r\n responce.mendetoryIfFieldList.push(modifyData);\r\n }\r\n //disable if handling\r\n if((data.disable_if && data.disable_if != '') || (data.disable_on_update && data.disable_on_update != '' && data.disable_on_update != undefined && data.disable_on_update != null) || (data.disable_on_add && data.disable_on_add != '' && data.disable_on_add != undefined && data.disable_on_add != null)){\r\n responce.disableIfFieldList.push(modifyData);\r\n }\r\n // Calculation onChange handling\r\n if (element.onchange_function && element.onchange_function_param && element.onchange_function_param != \"\"){\r\n responce.calculationFieldList.push(element);\r\n }\r\n\r\n this.createFormControl(stepper_of_fields, modifyData, '', \"text\")\r\n if(data.tree_view_object && data.tree_view_object.field_name != \"\"){\r\n let treeModifyData = JSON.parse(JSON.stringify(data.tree_view_object));\r\n treeModifyData.is_mandatory=false;\r\n this.createFormControl(stepper_of_fields, treeModifyData , '', \"text\")\r\n }\r\n });\r\n this.createFormControl(responce.forControl, step, stepper_of_fields, \"group\")\r\n }\r\n });\r\n responce.isStepper = true;\r\n }\r\n break;\r\n case \"pdf_view\" :\r\n if(selectedRowIndex && selectedRowIndex != -1 && elements && elements.length > 0){\r\n const object = elements[selectedRowIndex];\r\n responce.staticModal.push(this.apiCallService.getPaylodWithCriteria(element.onchange_api_params,element.onchange_call_back_field,element.onchange_api_params_criteria,object));\r\n }\r\n break;\r\n case \"input_with_uploadfile\":\r\n element.is_disabled = true;\r\n this.createFormControl(responce.forControl, element, '', \"text\")\r\n break;\r\n case \"grid_selection\":\r\n if(element && element.gridColumns && element.gridColumns.length > 0){\r\n let colParField = JSON.parse(JSON.stringify(element));\r\n colParField['mendetory_fields'] = [];\r\n element.gridColumns.forEach((colField:any) => {\r\n if(colField && colField.is_mandatory){\r\n colParField['mendetory_fields'].push(colField);\r\n }\r\n });\r\n if(colParField && colParField['mendetory_fields'] && colParField['mendetory_fields'].length > 0){\r\n responce.gridSelectionMendetoryList.push(colParField);\r\n element['mendetory_fields'] = colParField['mendetory_fields'];\r\n }\r\n responce.showGridData[element.field_name] = true;\r\n }\r\n if(element && element.addNewButtonIf && element.addNewButtonIf != ''){\r\n element['fieldIndex'] = index;\r\n responce.buttonIfList.push(element);\r\n }\r\n element['showButton'] = this.checkGridSelectionButtonCondition(element,'add',{},{});\r\n this.createFormControl(responce.forControl, element, '', \"text\");\r\n break;\r\n case \"tree_view\":\r\n // this.treeControl[element.field_name] = new FlatTreeControl<TodoItemFlatNode>(this.getLevel, this.isExpandable);\r\n // this.dataSource[element.field_name] = new MatTreeFlatDataSource(this.treeControl[element.field_name], this.treeFlattener);\r\n this.createFormControl(responce.forControl, element, '', \"text\");\r\n break;\r\n default:\r\n if(element.defaultValue && element.defaultValue != null && element.defaultValue != ''){\r\n const value = element.defaultValue;\r\n this.createFormControl(responce.forControl, element, value, \"text\");\r\n }else{\r\n this.createFormControl(responce.forControl, element, '', \"text\");\r\n }\r\n break;\r\n }\r\n if(element.tree_view_object && element.tree_view_object.field_name != \"\"){\r\n let treeModifyData = JSON.parse(JSON.stringify(element.tree_view_object));\r\n treeModifyData.is_mandatory=false;\r\n this.createFormControl(responce.forControl, treeModifyData , '', \"text\")\r\n }\r\n }\r\n //show if handling\r\n if(element.show_if && element.show_if != ''){\r\n responce.showIfFieldList.push(element);\r\n }\r\n //mendatory if handling\r\n if(element.mandatory_if && element.mandatory_if != ''){\r\n responce.mendetoryIfFieldList.push(element);\r\n }\r\n //Customvalidation handling\r\n if(element.compareFieldName && element.compareFieldName != ''){\r\n responce.customValidationFiels.push(element);\r\n }\r\n //disable if handling\r\n if((element.disable_if && element.disable_if != '') || (element.disable_on_update && element.disable_on_update != '' && element.disable_on_update != undefined && element.disable_on_update != null) || (element.disable_on_add && element.disable_on_add != '' && element.disable_on_add != undefined && element.disable_on_add != null)){\r\n responce.disableIfFieldList.push(element);\r\n }\r\n // Calculation onChange handling\r\n if (element.onchange_function && element.onchange_function_param && element.onchange_function_param != \"\"){\r\n responce.calculationFieldList.push(element);\r\n }\r\n element.field_class = this.commonFunctionService.getDivClass(element,tableFields.length);\r\n }\r\n if(formFieldButtons && formFieldButtons.length > 0){\r\n formFieldButtons.forEach((element:any) => {\r\n if(element.field_name && element.field_name != ''){\r\n switch (element.type) {\r\n case \"dropdown\":\r\n this.createFormControl(responce.forControl, element, '', \"text\")\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if(element.show_if && element.show_if != ''){\r\n responce.showIfFieldList.push(element);\r\n }\r\n if(element.mandatory_if && element.mandatory_if != ''){\r\n responce.mendetoryIfFieldList.push(element);\r\n }\r\n if((element.disable_if && element.disable_if != '') || (element.disable_on_update && element.disable_on_update != '' && element.disable_on_update != undefined && element.disable_on_update != null) || (element.disable_on_add && element.disable_on_add != '' && element.disable_on_add != undefined && element.disable_on_add != null)){\r\n responce.disableIfFieldList.push(element);\r\n }\r\n });\r\n }\r\n return responce;\r\n }\r\n checkFieldButtonCondition(tableFields:any){\r\n let responce:any={\r\n tempVal:{}\r\n }\r\n tableFields.forEach((element:any) => {\r\n switch (element.type) {\r\n case \"typeahead\":\r\n if (element.datatype == 'list_of_object') {\r\n responce.tempVal[element.field_name + \"_add_button\"] = true;\r\n }\r\n break;\r\n case \"list_of_string\":\r\n responce.tempVal[element.field_name + \"_add_button\"] = true;\r\n break;\r\n case \"list_of_fields\":\r\n case \"group_of_fields\":\r\n if(element.list_of_fields != undefined && element.list_of_fields != null && element.list_of_fields.length > 0){\r\n element.list_of_fields.forEach((child:any) => {\r\n if(child && child != null){\r\n switch (child.type) {\r\n case \"typeahead\":\r\n if (child.datatype == 'list_of_object') {\r\n responce.tempVal[element.field_name + '_' + child.field_name + \"_add_button\"] = true;\r\n }\r\n break;\r\n case \"list_of_string\":\r\n responce.tempVal[element.field_name + '_' + child.field_name + \"_add_button\"] = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n case \"stepper\":\r\n if(element.list_of_fields != undefined && element.list_of_fields != null && element.list_of_fields.length > 0){\r\n element.list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields != undefined && step.list_of_fields != null && step.list_of_fields.length > 0){\r\n step.list_of_fields.forEach((child:any) => {\r\n switch (child.type) {\r\n case \"typeahead\":\r\n if (child.datatype == 'list_of_object') {\r\n responce.tempVal[step.field_name + '_' + child.field_name + \"_add_button\"] = true;\r\n }\r\n break;\r\n case \"list_of_string\":\r\n responce.tempVal[step.field_name + '_' + child.field_name + \"_add_button\"] = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n return responce;\r\n }\r\n updateSelectContact(selectContact:any,tabFilterData:any,tableFields:any,templateForm:UntypedFormGroup,formValueWithCustomData:any,staticModal:any){\r\n let account={};\r\n let contact={};\r\n let payload:any = {};\r\n let selectContactObject:any = {};\r\n if(selectContact){\r\n selectContactObject = selectContact;\r\n }\r\n if(tabFilterData && tabFilterData.length > 0){\r\n tabFilterData.forEach((element:any) => {\r\n if(element && element._id){\r\n if(element._id == selectContact){\r\n selectContactObject = element;\r\n }\r\n }\r\n });\r\n }\r\n if(selectContactObject){\r\n if(selectContactObject['_id']){\r\n contact = {\r\n \"_id\":selectContactObject['_id'],\r\n \"name\":selectContactObject['name'],\r\n \"code\":selectContactObject['serialId']\r\n }\r\n }\r\n if(selectContactObject['lead']){\r\n account = selectContactObject['lead'];\r\n }\r\n }\r\n if(tableFields && tableFields.length > 0){\r\n tableFields.forEach((element:any) => {\r\n if(element && element.field_name && element.field_name != ''){\r\n let fieldName = element.field_name;\r\n if(fieldName == 'account'){\r\n if(account && Object.keys(account).length > 0){\r\n templateForm.controls['account'].setValue(account);\r\n }\r\n if (element.onchange_api_params && element.onchange_call_back_field && !element.do_not_auto_trigger_on_edit) {\r\n payload = this.apiCallService.getPaylodWithCriteria(element.onchange_api_params, element.onchange_call_back_field, element.onchange_api_params_criteria, formValueWithCustomData)\r\n if(element.onchange_api_params.indexOf(\"FORM_GROUP\") >= 0 || element.onchange_api_params.indexOf(\"QTMP\") >= 0){\r\n payload[\"data\"]=formValueWithCustomData;\r\n }\r\n staticModal.push(payload);\r\n }\r\n }\r\n if(element.field_name == 'contact'){\r\n if(contact && Object.keys(contact).length > 0){\r\n templateForm.controls['contact'].setValue(contact);\r\n }\r\n if (element.onchange_api_params && element.onchange_call_back_field && !element.do_not_auto_trigger_on_edit) {\r\n payload = this.apiCallService.getPaylodWithCriteria(element.onchange_api_params, element.onchange_call_back_field, element.onchange_api_params_criteria, formValueWithCustomData)\r\n if(element.onchange_api_params.indexOf(\"FORM_GROUP\") >= 0 || element.onchange_api_params.indexOf(\"QTMP\") >= 0){\r\n payload[\"data\"]=formValueWithCustomData;\r\n }\r\n staticModal.push(payload);\r\n }\r\n }\r\n if(element.type == 'stepper' && element.list_of_fields && element.list_of_fields.length > 0){\r\n element.list_of_fields.forEach((stepData:any) => {\r\n if(stepData && stepData.list_of_fields && stepData.list_of_fields.length > 0){\r\n stepData.list_of_fields.forEach((data:any) => {\r\n let fieldName = stepData.field_name;\r\n if(data.field_name == 'account'){\r\n (<UntypedFormGroup>templateForm.controls[fieldName]).controls['account'].setValue(account);\r\n //this.templateForm.get(stepData.field_name).get('account').setValue(account);\r\n if (data.onchange_api_params && data.onchange_call_back_field && !data.do_not_auto_trigger_on_edit) {\r\n payload = this.apiCallService.getPaylodWithCriteria(data.onchange_api_params, data.onchange_call_back_field, data.onchange_api_params_criteria, formValueWithCustomData)\r\n if(data.onchange_api_params.indexOf(\"FORM_GROUP\") >= 0 || data.onchange_api_params.indexOf(\"QTMP\") >= 0){\r\n payload[\"data\"]=formValueWithCustomData;\r\n }\r\n staticModal.push(payload);\r\n }\r\n }\r\n if(data.field_name == 'contact'){\r\n (<UntypedFormGroup>templateForm.controls[fieldName]).controls['contact'].setValue(contact);\r\n if (data.onchange_api_params && data.onchange_call_back_field && !data.do_not_auto_trigger_on_edit) {\r\n payload = this.apiCallService.getPaylodWithCriteria(data.onchange_api_params, data.onchange_call_back_field, data.onchange_api_params_criteria, formValueWithCustomData)\r\n if(data.onchange_api_params.indexOf(\"FORM_GROUP\") >= 0 || data.onchange_api_params.indexOf(\"QTMP\") >= 0){\r\n payload[\"data\"]=formValueWithCustomData;\r\n }\r\n staticModal.push(payload);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n return staticModal;\r\n }\r\n checkGridSelectionButtonCondition(field:any,button:any,selectedRow:any,formValue:any){\r\n let check:any = true;\r\n switch (button) {\r\n case 'add':\r\n if(field && field.addNewButtonIf && field.addNewButtonIf != ''){\r\n let modifyedField:any = {};\r\n modifyedField['show_if'] = field.addNewButtonIf;\r\n check = this.checkifService.checkShowIf(modifyedField,selectedRow,formValue);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return check;\r\n }\r\n\r\n setDefaultDate(element:any){\r\n let value:any = \"\";\r\n let today = new Date();\r\n today.setHours(0,0,0,0);\r\n let yesterday = new Date(today);\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n yesterday.setHours(0,0,0,0);\r\n switch (element.defaultValue) {\r\n case \"Today\":\r\n value = today;\r\n break;\r\n case \"Yesterday\":\r\n value = yesterday;\r\n break;\r\n default:\r\n break;\r\n }\r\n return value;\r\n }\r\n getFocusField(previousFormFocusField:any,tableFields:any,templateForm:UntypedFormGroup,focusFieldParent:any,checkFormFieldAutfocus:any){\r\n let responce:any={\r\n checkFormFieldAutfocus:checkFormFieldAutfocus,\r\n previousFormFocusField:previousFormFocusField,\r\n focusFieldParent:focusFieldParent,\r\n id:\"\"\r\n }\r\n if(previousFormFocusField && previousFormFocusField._id){\r\n responce = this.focusField(\"\",previousFormFocusField,templateForm,focusFieldParent,checkFormFieldAutfocus,previousFormFocusField,responce)\r\n }else{\r\n if(previousFormFocusField == undefined || previousFormFocusField._id == undefined){\r\n for (const key of tableFields) {\r\n if(key.type == \"stepper\"){\r\n if(key.list_of_fields && key.list_of_fields != null && key.list_of_fields.length > 0){\r\n for (const step of key.list_of_fields) {\r\n if(step.list_of_fields && step.list_of_fields != null && step.list_of_fields.length > 0){\r\n for (const field of step.list_of_fields) {\r\n if (field.field_name) {\r\n responce = this.focusField(step,field,templateForm,focusFieldParent,checkFormFieldAutfocus,previousFormFocusField,responce);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }else if (key.field_name) {\r\n if(key.type == 'text'){\r\n responce = this.focusField(\"\",key,templateForm,focusFieldParent,checkFormFieldAutfocus,previousFormFocusField,responce);\r\n break;\r\n }else{\r\n responce.checkFormFieldAutfocus = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return responce;\r\n }\r\n focusField(parent:any,key:any,templateForm:UntypedFormGroup,focusFieldParent:any,checkFormFieldAutfocus:any,previousFormFocusField:any,responce:any){\r\n responce.id = key._id + \"_\" + key.field_name;\r\n let field:any = {};\r\n if(parent == ''){\r\n if(focusFieldParent && focusFieldParent.field_name && focusFieldParent.field_name != ''){\r\n parent = focusFieldParent;\r\n }\r\n }\r\n if(parent != \"\"){\r\n field = (<UntypedFormGroup>templateForm.controls[parent.field_name]).controls[key.field_name];\r\n }else{\r\n field = templateForm.controls[key.field_name];\r\n }\r\n if(field && field.touched){\r\n responce.checkFormFieldAutfocus = false;\r\n if(previousFormFocusField && previousFormFocusField._id){\r\n responce.previousFormFocusField = {};\r\n responce.focusFieldParent={};\r\n }\r\n }else if(field == undefined){\r\n responce.previousFormFocusField = {};\r\n responce.focusFieldParent={};\r\n }\r\n return responce;\r\n }\r\n getDonotResetFields(tableFields:any,donotResetFieldLists:any,FormValue:any){\r\n tableFields.forEach((tablefield:any) => {\r\n if(tablefield.do_not_refresh_on_add && tablefield.type != \"list_of_fields\" && tablefield.type != \"group_of_fields\" && tablefield.type != \"stepper\"){\r\n donotResetFieldLists[tablefield.field_name] = FormValue[tablefield.field_name];\r\n }else if(tablefield.type == \"group_of_fields\"){\r\n if(tablefield.list_of_fields && tablefield.list_of_fields.length > 0){\r\n tablefield.list_of_fields.forEach((field:any) => {\r\n if(field.do_not_refresh_on_add){\r\n donotResetFieldLists[tablefield.field_name][field.field_name] = FormValue[tablefield.field_name][field.field_name];\r\n }\r\n });\r\n }\r\n }else if(tablefield.type == \"stepper\"){\r\n if(tablefield.list_of_fields && tablefield.list_of_fields.length > 0){\r\n tablefield.list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields && step.list_of_fields.length > 0){\r\n step.list_of_fields.forEach((field:any) => {\r\n if(field.do_not_refresh_on_add){\r\n donotResetFieldLists[step.field_name][field.field_name] = FormValue[step.field_name][field.field_name];\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n return donotResetFieldLists;\r\n }\r\n addNewForm(selectTabIndex:number,isBulkUpdate:boolean,bulkuploadList:any,selectedRowIndex:number,formName:string,selectContactAdd:any){\r\n let formData:any = {}\r\n formData['tabIndex'] = selectTabIndex;\r\n formData['bulkUpdate'] = isBulkUpdate;\r\n formData['bulkDataList'] = bulkuploadList;\r\n formData['editedRowIndex'] = selectedRowIndex;\r\n formData['formName'] = formName;\r\n formData['selectContact'] = selectContactAdd;\r\n this.modalService.open('form-modal',formData)\r\n }\r\n getFieldsFromForms(tab:any,formName:string,dinamic_form:any,gridButtons:any,tableFields:any,actionButtons:any){\r\n let responce = {\r\n \"fields\" : tableFields,\r\n \"buttons\" : actionButtons\r\n }\r\n let form = null;\r\n if(formName != 'DINAMIC_FORM' && tab && tab.forms){\r\n form = this.commonFunctionService.getForm(tab.forms,formName,gridButtons);\r\n }else if(formName == 'DINAMIC_FORM'){\r\n form = dinamic_form;\r\n }else{\r\n form = null\r\n }\r\n if(form != null){\r\n if(form?.['tableFields'] && form?.['tableFields']?.length > 0){\r\n responce.fields = form['tableFields'];\r\n }\r\n if(form?.['tab_list_buttons'] && form?.['tab_list_buttons']?.length > 0){\r\n responce.buttons = form['tab_list_buttons'];\r\n }\r\n }\r\n return responce;\r\n }\r\n\r\n}\r\n","import { CheckIfService } from './../../check-if/check-if.service';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { FileHandlerService } from '../../fileHandler/file-handler.service';\r\nimport { PermissionService } from '../../permission/permission.service';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { StorageService } from '../../storage/storage.service';\r\nimport { GridCommonFunctionService } from '../../grid/grid-common-function/grid-common-function.service';\r\nimport { MenuOrModuleCommonService } from '../../menu-or-module-common/menu-or-module-common.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormValueService {\r\n\r\n constructor(\r\n private datePipe: DatePipe,\r\n private fileHandlerService:FileHandlerService,\r\n private permissionService:PermissionService,\r\n private envService:EnvService,\r\n private commonFunctionService:CommonFunctionService,\r\n private gridCommonFunctionService:GridCommonFunctionService,\r\n private menuOrModuleCommonService:MenuOrModuleCommonService,\r\n private storageService:StorageService,\r\n private checkIfService:CheckIfService\r\n ) { }\r\n\r\n getFormValue(check:boolean,formValue:any,selectedRowData:any,updateMode:boolean,complete_object_payload_mode:boolean,tableFields:any,latitude:any,longitude:any,address:any,custmizedFormValue:any,checkBoxFieldListValue:any,staticData:any,dataListForUpload:any,selectContact:any,tabFilterData:any,params:any,getLocation:any,center:any){\r\n //let formValue = this.templateForm.getRawValue();\r\n let selectedRow = { ...selectedRowData };\r\n let modifyFormValue:any = {};\r\n let valueOfForm:any = {};\r\n if (updateMode || complete_object_payload_mode){\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name && element.field_name != ''){\r\n switch (element.type) {\r\n case 'stepper':\r\n element.list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields && step.list_of_fields != null && step.list_of_fields.length > 0){\r\n step.list_of_fields.forEach((data:any) => {\r\n selectedRow[data.field_name] = formValue[step.field_name][data.field_name]\r\n if(data.tree_view_object && data.tree_view_object.field_name != \"\"){\r\n const treeViewField = data.tree_view_object.field_name;\r\n selectedRow[treeViewField] = formValue[step.field_name][treeViewField]\r\n }\r\n });\r\n }\r\n });\r\n break;\r\n case 'group_of_fields':\r\n element.list_of_fields.forEach((data:any) => {\r\n switch (data.type) {\r\n case 'date':\r\n if(data && data.date_format && data.date_format != ''){\r\n if(typeof formValue[element.field_name][data.field_name] != 'string'){\r\n selectedRow[element.field_name][data.field_name] = this.datePipe.transform(formValue[element.field_name][data.field_name],'dd/MM/yyyy');\r\n }else{\r\n selectedRow[element.field_name] = formValue[element.field_name];\r\n }\r\n }else{\r\n selectedRow[element.field_name] = formValue[element.field_name];\r\n }\r\n break;\r\n\r\n default:\r\n selectedRow[element.field_name] = formValue[element.field_name];\r\n break;\r\n }\r\n });\r\n break;\r\n case 'gmap':\r\n case \"gmapview\":\r\n if(element && element.datatype == \"object\"){\r\n let locationData:any = {};\r\n locationData['latitude'] = latitude;\r\n locationData['longitude'] = longitude;\r\n locationData['address'] = address;\r\n locationData['date'] = JSON.parse(JSON.stringify(new Date()));\r\n locationData['time'] = this.datePipe.transform(new Date(),'shortTime');\r\n selectedRow[element.field_name] = locationData;\r\n }else{\r\n selectedRow['latitude'] = latitude;\r\n selectedRow['longitude'] = longitude;\r\n selectedRow[element.field_name] = address;\r\n }\r\n break;\r\n case 'date':\r\n if(element && element.date_format && element.date_format != ''){\r\n selectedRow[element.field_name] = this.datePipe.transform(selectedRow[element.field_name],'dd/MM/yyyy');\r\n } else {\r\n selectedRow[element.field_name] = formValue[element.field_name];\r\n }\r\n break;\r\n default:\r\n selectedRow[element.field_name] = formValue[element.field_name];\r\n break;\r\n }\r\n }\r\n });\r\n }else{\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name && element.field_name != ''){\r\n switch (element.type) {\r\n case 'stepper':\r\n element.list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields && step.list_of_fields != null && step.list_of_fields.length > 0){\r\n step.list_of_fields.forEach((data:any) => {\r\n modifyFormValue[data.field_name] = formValue[step.field_name][data.field_name]\r\n if(data.tree_view_object && data.tree_view_object.field_name != \"\"){\r\n const treeViewField = data.tree_view_object.field_name;\r\n modifyFormValue[treeViewField] = formValue[step.field_name][treeViewField]\r\n }\r\n });\r\n }\r\n });\r\n break;\r\n case 'group_of_fields':\r\n modifyFormValue[element.field_name] = formValue[element.field_name];\r\n element.list_of_fields.forEach((data:any) => {\r\n switch (data.type) {\r\n case 'date':\r\n if(data && data.date_format && data.date_format != ''){\r\n modifyFormValue[element.field_name][data.field_name] = this.datePipe.transform(formValue[element.field_name][data.field_name],'dd/MM/yyyy');\r\n } else {\r\n modifyFormValue[element.field_name][data.field_name] = formValue[element.field_name][data.field_name];\r\n }\r\n break;\r\n\r\n default:\r\n modifyFormValue[element.field_name][data.field_name] = formValue[element.field_name][data.field_name];\r\n break;\r\n }\r\n });\r\n break;\r\n case 'gmap':\r\n case \"gmapview\":\r\n if(element && element.datatype == \"object\"){\r\n let locationData:any = {};\r\n locationData['latitude'] = latitude;\r\n locationData['longitude'] = longitude;\r\n locationData['address'] = address;\r\n locationData['date'] = JSON.parse(JSON.stringify(new Date()));\r\n locationData['time'] = this.datePipe.transform(new Date(),'shortTime')\r\n modifyFormValue[element.field_name] = locationData;\r\n }else{\r\n modifyFormValue['latitude'] = latitude;\r\n modifyFormValue['longitude'] = longitude;\r\n modifyFormValue[element.field_name] = address;\r\n }\r\n break;\r\n case 'date':\r\n if(element && element.date_format && element.date_format != ''){\r\n modifyFormValue[element.field_name] = this.datePipe.transform(formValue[element.field_name],'dd/MM/yyyy');\r\n } else {\r\n modifyFormValue[element.field_name] = formValue[element.field_name];\r\n }\r\n break;\r\n default:\r\n modifyFormValue[element.field_name] = formValue[element.field_name];\r\n //modifyFormValue = formValue;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n if(check){\r\n if(custmizedFormValue && Object.keys(custmizedFormValue).length > 0){\r\n Object.keys(custmizedFormValue).forEach(key => {\r\n if (updateMode || complete_object_payload_mode) {\r\n if(custmizedFormValue[key] && custmizedFormValue[key] != null && !Array.isArray(custmizedFormValue[key]) && typeof custmizedFormValue[key] === \"object\"){\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name == key){\r\n if(element.datatype && element.datatype != null && element.datatype == 'key_value'){\r\n selectedRow[key] = custmizedFormValue[key];\r\n }else{\r\n Object.keys(custmizedFormValue[key]).forEach(child =>{\r\n selectedRow[key][child] = custmizedFormValue[key][child];\r\n })\r\n }\r\n }\r\n });\r\n }else{\r\n selectedRow[key] = custmizedFormValue[key];\r\n }\r\n } else {\r\n if(custmizedFormValue[key] && custmizedFormValue[key] != null && !Array.isArray(custmizedFormValue[key]) && typeof custmizedFormValue[key] === \"object\"){\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name == key){\r\n if(element.datatype && element.datatype != null && element.datatype == 'key_value'){\r\n modifyFormValue[key] = custmizedFormValue[key];\r\n }else{\r\n Object.keys(custmizedFormValue[key]).forEach(child =>{\r\n modifyFormValue[key][child] = custmizedFormValue[key][child];\r\n })\r\n }\r\n }\r\n });\r\n }else{\r\n modifyFormValue[key] = custmizedFormValue[key];\r\n }\r\n\r\n }\r\n })\r\n }\r\n if (checkBoxFieldListValue.length > 0 && Object.keys(staticData).length > 0) {\r\n checkBoxFieldListValue.forEach((element:any) => {\r\n if (staticData[element.ddn_field]) {\r\n const listOfCheckboxData:any = [];\r\n let data = [];\r\n if(updateMode || complete_object_payload_mode){\r\n if(element.parent){\r\n data = selectedRow[element.parent][element.field_name];\r\n }else{\r\n data = selectedRow[element.field_name];\r\n }\r\n }else{\r\n if(element.parent){\r\n data = modifyFormValue[element.parent][element.field_name];\r\n }else{\r\n data = modifyFormValue[element.field_name];\r\n }\r\n }\r\n let currentData = staticData[element.ddn_field];\r\n if(data && data.length > 0){\r\n data.forEach((data:any, i:any) => {\r\n if (data) {\r\n listOfCheckboxData.push(currentData[i]);\r\n }\r\n });\r\n }\r\n if (updateMode || complete_object_payload_mode) {\r\n if(element.parent){\r\n selectedRow[element.parent][element.field_name] = listOfCheckboxData;\r\n }else{\r\n selectedRow[element.field_name] = listOfCheckboxData;\r\n }\r\n } else {\r\n if(element.parent){\r\n modifyFormValue[element.parent][element.field_name] = listOfCheckboxData;\r\n }else{\r\n modifyFormValue[element.field_name] = listOfCheckboxData\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if(dataListForUpload && Object.keys(dataListForUpload).length > 0){\r\n Object.keys(dataListForUpload).forEach(key => {\r\n if (updateMode || complete_object_payload_mode) {\r\n if(dataListForUpload[key] && dataListForUpload[key] != null && !Array.isArray(dataListForUpload[key]) && typeof dataListForUpload[key] === \"object\"){\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name == key){\r\n Object.keys(dataListForUpload[key]).forEach(child =>{\r\n selectedRow[key][child] = this.fileHandlerService.modifyUploadFiles(dataListForUpload[key][child]);\r\n })\r\n }\r\n });\r\n }else{\r\n selectedRow[key] = this.fileHandlerService.modifyUploadFiles(dataListForUpload[key]);\r\n }\r\n } else {\r\n if(dataListForUpload[key] && dataListForUpload[key] != null && !Array.isArray(dataListForUpload[key]) && typeof dataListForUpload[key] === \"object\"){\r\n tableFields.forEach((element:any) => {\r\n if(element.field_name == key){\r\n Object.keys(dataListForUpload[key]).forEach(child =>{\r\n modifyFormValue[key][child] = this.fileHandlerService.modifyUploadFiles(dataListForUpload[key][child]);\r\n })\r\n }\r\n });\r\n }else{\r\n let uploadFileType = tableFields.filter((field:any)=> field.type == 'file_for_s3')\r\n if(uploadFileType.length >0){\r\n modifyFormValue[key] = dataListForUpload[key];\r\n }else{\r\n modifyFormValue[key] = this.fileHandlerService.modifyUploadFiles(dataListForUpload[key]);\r\n }\r\n }\r\n\r\n }\r\n })\r\n }\r\n }\r\n if(selectContact != '' && selectContact != undefined){\r\n let selectContactObject:any = {}\r\n let account={};\r\n let contact={};\r\n tabFilterData.forEach((element:any) => {\r\n if(element._id == selectContact){\r\n selectContactObject = element;\r\n }\r\n });\r\n if(selectContactObject['_id']){\r\n contact = {\r\n \"_id\":selectContactObject['_id'],\r\n \"name\":selectContactObject['name'],\r\n \"code\":selectContactObject['serialId']\r\n }\r\n if(selectContactObject['lead']){\r\n account = selectContactObject['lead'];\r\n }\r\n }\r\n if(updateMode || complete_object_payload_mode){\r\n selectedRow['account'] = account;\r\n selectedRow['contact'] = contact;\r\n }else{\r\n modifyFormValue['account'] = account;\r\n modifyFormValue['contact'] = contact;\r\n }\r\n }\r\n\r\n valueOfForm = updateMode || complete_object_payload_mode ? selectedRow : modifyFormValue;\r\n if(params[\"key1\"] && !complete_object_payload_mode){\r\n const index = JSON.stringify(params[\"key1\"]);\r\n if(index != ''){\r\n valueOfForm['obj'] = params[\"action\"];\r\n valueOfForm['key'] = params[\"key1\"];\r\n valueOfForm['key1'] = params[\"key2\"];\r\n valueOfForm['key2'] = params[\"key3\"];\r\n\r\n }\r\n }\r\n if(getLocation){\r\n if(center !=null && center.lat !=null){\r\n valueOfForm['locationDetail'] = {\r\n 'latitude' : center.lat,\r\n 'longitude' : center.lng\r\n }\r\n }\r\n }\r\n return valueOfForm;\r\n }\r\n getSavePayloadData(currentMenu:any,updateMode:any,deleteGridRowData:any,tableFields:any,dataValue:any,formValueWithCustomData:any,gridSelectionMendetoryList:any,selectedRow:any,custmizedFormValue:any,dataSaveInProgress:any,showNotify:any,formName:any,formValid:boolean) {\r\n var responce:any={\r\n \"getSavePayload\":false,\r\n \"showNotify\":showNotify,\r\n \"deleteGridRowData\":deleteGridRowData,\r\n \"dataSaveInProgress\":dataSaveInProgress,\r\n \"data\":{},\r\n \"message\":{\r\n \"msg\":\"\",\r\n \"class\":\"\"\r\n }\r\n }\r\n //this.submitted = true;\r\n let hasPermission;\r\n if(currentMenu && currentMenu.name){\r\n hasPermission = this.permissionService.checkPermissionWithParent(currentMenu,'add')\r\n }\r\n if(updateMode){\r\n hasPermission = this.permissionService.checkPermissionWithParent(currentMenu,'edit')\r\n }\r\n if(this.envService.getRequestType() == 'PUBLIC'){\r\n hasPermission = true;\r\n }\r\n let formValue;\r\n if(deleteGridRowData){\r\n formValue = dataValue;\r\n }else{\r\n formValue = this.commonFunctionService.sanitizeObject(tableFields,formValueWithCustomData,false);\r\n }\r\n responce.deleteGridRowData = false;\r\n\r\n if(hasPermission){\r\n let gridSelectionValidation:any = this.gridCommonFunctionService.checkGridSelectionMendetory(gridSelectionMendetoryList,selectedRow,dataValue,custmizedFormValue);\r\n if(formValid && gridSelectionValidation.status){\r\n let validationsresponse = this.checkIfService.checkCustmizedValuValidation(tableFields,formValue);\r\n if(validationsresponse && validationsresponse.status){\r\n if (dataSaveInProgress) {\r\n responce.showNotify = true;\r\n responce.dataSaveInProgress = false;\r\n this.addDefaultFieldInData(formValue);\r\n if (updateMode) {\r\n if(formName == 'cancel'){\r\n formValue['status'] = 'CANCELLED';\r\n }\r\n }\r\n responce.getSavePayload = true;\r\n responce.data=this.getSavePayload(currentMenu.name,formValue);\r\n }\r\n }else{\r\n responce.getSavePayload = false;\r\n responce.message.msg =validationsresponse.msg;\r\n responce.message.class = 'bg-danger';\r\n //this.notificationService.notify('bg-danger', validationsresponse.msg)\r\n }\r\n }else{\r\n responce.getSavePayload = false;\r\n if(gridSelectionValidation.msg && gridSelectionValidation.msg != ''){\r\n responce.message.msg = gridSelectionValidation.msg;\r\n responce.message.class = 'bg-info';\r\n //this.notificationService.notify(\"bg-info\", gridSelectionValidation.msg);\r\n }else{\r\n responce.message.msg = \"Some fields are mendatory\";\r\n responce.message.class = 'bg-danger';\r\n //this.notificationService.notify(\"bg-danger\", \"Some fields are mendatory\");\r\n }\r\n }\r\n }else{\r\n responce.getSavePayload = false;\r\n this.permissionService.checkTokenStatusForPermission();\r\n }\r\n return responce;\r\n }\r\n addDefaultFieldInData(data:any){\r\n data['log'] = this.storageService.getUserLog();\r\n if(!data['refCode']){\r\n data['refCode'] = this.commonFunctionService.getRefcode();\r\n }\r\n if(!data['appId']){\r\n data['appId'] = this.commonFunctionService.getAppId();\r\n }\r\n }\r\n getSavePayload(name:string,data:any){\r\n return {\r\n curTemp: name,\r\n data: data\r\n }\r\n }\r\n\r\n transformArrayToObject(allModuleList:any){\r\n let obj:any={}\r\n allModuleList.forEach((module:any)=>{\r\n if(module && module.name && module.notification && module.keyName){\r\n let name=module.keyName;\r\n let mod={\r\n reference:{\r\n name:module.name,\r\n _id:module._id\r\n },\r\n menus:this.menuOrModuleCommonService.getMenuDetails(module?.menu_list),\r\n notification:module.notification\r\n }\r\n obj[name]=mod\r\n }\r\n })\r\n return obj;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { FileHandlerService } from '../../fileHandler/file-handler.service';\r\nimport { GridCommonFunctionService } from '../../grid/grid-common-function/grid-common-function.service';\r\nimport { TreeComponentService } from '../../tree-component/tree-component.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormControlService {\r\n\r\n constructor(\r\n private commonFunctionService:CommonFunctionService,\r\n private fileHandlerService: FileHandlerService,\r\n private gridCommonFunctionService:GridCommonFunctionService,\r\n private TreeComponentService:TreeComponentService\r\n ) { }\r\n\r\n editeListFieldData(templateForm:UntypedFormGroup,custmizedFormValue:any,tableFields:any,field:any,index:any,listOfFieldsUpdateIndex:any,staticData:any,dataListForUpload:any){\r\n let responce = {\r\n \"listOfFieldUpdateMode\":true,\r\n \"listOfFieldsUpdateIndex\":listOfFieldsUpdateIndex,\r\n \"custmizedFormValue\":custmizedFormValue,\r\n \"dataListForUpload\":dataListForUpload,\r\n \"templateForm\":templateForm\r\n }\r\n let parentList = responce.custmizedFormValue[field.field_name];\r\n let object = parentList[index];\r\n responce.listOfFieldsUpdateIndex = index;\r\n if(tableFields && tableFields.length > 0){\r\n tableFields.forEach((element:any) => {\r\n switch (element.type) {\r\n case \"list_of_fields\":\r\n if(element.field_name == field.field_name && templateForm != null){\r\n responce.templateForm.controls[element.field_name].reset();\r\n if (element.list_of_fields.length > 0) {\r\n element.list_of_fields.forEach((data:any) => {\r\n switch (data.type) {\r\n case \"list_of_string\":\r\n const custmisedKey = this.commonFunctionService.custmizedKey(element);\r\n if (!responce.custmizedFormValue[custmisedKey]) responce.custmizedFormValue[custmisedKey] = {};\r\n responce.custmizedFormValue[custmisedKey][data.field_name] = object[data.field_name];\r\n break;\r\n case \"typeahead\":\r\n if (data.datatype == 'list_of_object') {\r\n const custmisedKey = this.commonFunctionService.custmizedKey(element);\r\n if (!responce.custmizedFormValue[custmisedKey]) responce.custmizedFormValue[custmisedKey] = {};\r\n responce.custmizedFormValue[custmisedKey][data.field_name] = object[data.field_name];\r\n } else {\r\n (<UntypedFormGroup>responce.templateForm.controls[element.field_name]).controls[data.field_name].setValue(object[data.field_name]);\r\n }\r\n break;\r\n case \"list_of_checkbox\":\r\n let checkboxListValue:any = [];\r\n if(staticData && staticData[data.ddn_field] && staticData[data.ddn_field].length > 0){\r\n staticData[data.ddn_field].forEach((value:any) => {\r\n let arrayData = object[data.field_name];\r\n let selected = false;\r\n if (arrayData != undefined && arrayData != null) {\r\n for (let index = 0; index < arrayData.length; index++) {\r\n if (this.commonFunctionService.checkObjecOrString(value) == this.commonFunctionService.checkObjecOrString(arrayData[index])) {\r\n selected = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (selected) {\r\n checkboxListValue.push(true);\r\n } else {\r\n checkboxListValue.push(false);\r\n }\r\n });\r\n }\r\n //this.templateForm.get(element.field_name).get(data.field_name).setValue(checkboxListValue);\r\n (<UntypedFormGroup>responce.templateForm.controls[element.field_name]).controls[data.field_name].setValue(checkboxListValue);\r\n break;\r\n case \"file\":\r\n case \"input_with_uploadfile\":\r\n if(object[data.field_name] != null && object[data.field_name] != undefined){\r\n let custmizedKey = this.commonFunctionService.custmizedKey(element);\r\n if (!responce.dataListForUpload[custmizedKey]) responce.dataListForUpload[custmizedKey] = {};\r\n if (!responce.dataListForUpload[custmizedKey][data.field_name]) responce.dataListForUpload[custmizedKey][data.field_name] = [];\r\n\r\n responce.dataListForUpload[custmizedKey][data.field_name] = this.fileHandlerService.modifyUploadFiles(JSON.parse(JSON.stringify(object[data.field_name])));\r\n //responce.dataListForUpload[custmizedKey][data.field_name] = JSON.parse(JSON.stringify(object[data.field_name]));\r\n const value = this.fileHandlerService.modifyFileSetValue(object[data.field_name]);\r\n //this.templateForm.get(element.field_name).get(data.field_name).setValue(value);\r\n (<UntypedFormGroup>responce.templateForm.controls[element.field_name]).controls[data.field_name].setValue(value);\r\n }\r\n break;\r\n default:\r\n //this.templateForm.get(element.field_name).get(data.field_name).setValue(object[data.field_name]);\r\n (<UntypedFormGroup>responce.templateForm.controls[element.field_name]).controls[data.field_name].setValue(object[data.field_name]);\r\n break;\r\n }\r\n })\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n return responce;\r\n }\r\n updateDataOnForm(templateForm:UntypedFormGroup,tableFields:any,formValue:any,formFieldButtons:any,custmizedFormValue:any,modifyCustmizedFormValue:any,selectedRow:any,dataListForUpload:any,treeViewData:any,staticData:any,longitude:any,latitude:any,zoom:any){\r\n let responce ={\r\n templateForm:templateForm,\r\n custmizedFormValue:custmizedFormValue,\r\n modifyCustmizedFormValue:modifyCustmizedFormValue,\r\n tableFields:tableFields,\r\n dataListForUpload:dataListForUpload,\r\n selectedRow:selectedRow,\r\n treeViewData:treeViewData,\r\n staticData:staticData,\r\n longitude:longitude,\r\n latitude:latitude,\r\n zoom:zoom,\r\n getAddress:false\r\n\r\n }\r\n tableFields.forEach((element:any) => {\r\n if(element && element.field_name && element.field_name != ''){\r\n let fieldName = element.field_name;\r\n let object = formValue[fieldName];\r\n if(object != null && object != undefined){\r\n this.updateFormValue(element,formValue,responce);\r\n }\r\n }\r\n });\r\n if(formFieldButtons.length > 0){\r\n formFieldButtons.forEach((element:any) => {\r\n let fieldName = element.field_name;\r\n let object = selectedRow[fieldName];\r\n if(formValue[fieldName] != null && formValue[fieldName] != undefined){\r\n if(element.field_name && element.field_name != ''){\r\n switch (element.type) {\r\n case \"dropdown\":\r\n let dropdownValue = object == null ? null : object;\r\n responce.templateForm.controls[element.field_name].setValue(dropdownValue);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return responce;\r\n }\r\n updateFormValue(element:any,formValue:any,responce:any){\r\n let type = element.type;\r\n let datatype = element.datatype;\r\n let tree_view_object = element.tree_view_object;\r\n let date_format = element.date_format;\r\n let fieldName = element.field_name;\r\n let ddn_field = element.ddn_field;\r\n let parent = element.parent;\r\n let list_of_fields = element.list_of_fields;\r\n let object = formValue[fieldName];\r\n switch (type) {\r\n case \"grid_selection\":\r\n case 'grid_selection_vertical':\r\n case \"list_of_string\":\r\n case \"drag_drop\":\r\n if(object != null && object != undefined){\r\n if(Array.isArray(object)){\r\n responce.custmizedFormValue[fieldName] = JSON.parse(JSON.stringify(object));\r\n if(type.startsWith(\"grid_selection\")){\r\n const modifyData = this.gridCommonFunctionService.gridDataModify(responce.modifyCustmizedFormValue,responce.custmizedFormValue,responce.tableFields,fieldName,\"grid_selection\",formValue);\r\n responce.modifyCustmizedFormValue = modifyData.modifyData;\r\n if(modifyData.field_index != -1){\r\n const index = modifyData.field_index;\r\n responce.tableFields[index] = modifyData.fields[index];\r\n }\r\n }\r\n }\r\n responce.templateForm.controls[fieldName].setValue('')\r\n }\r\n break;\r\n case \"file\":\r\n case \"input_with_uploadfile\":\r\n case \"file_for_s3\":\r\n if(object != null && object != undefined){\r\n responce.dataListForUpload[fieldName] = JSON.parse(JSON.stringify(object));\r\n const value = this.fileHandlerService.modifyFileSetValue(object);\r\n if(type == 'input_with_uploadfile'){\r\n let tooltipMsg = this.fileHandlerService.getFileTooltipMsg(object);\r\n element['tooltipMsg'] = tooltipMsg;\r\n }\r\n responce.templateForm.controls[fieldName].setValue(value);\r\n }\r\n break;\r\n case \"list_of_fields\":\r\n if(object != null && object != undefined){\r\n if(Array.isArray(object)){\r\n responce.custmizedFormValue[fieldName] = JSON.parse(JSON.stringify(object));\r\n let modifyObject = this.gridCommonFunctionService.modifyListofFieldsData(element,responce.custmizedFormValue[fieldName],element.list_of_fields);\r\n responce.modifyCustmizedFormValue[fieldName] = modifyObject['data'];\r\n }else if(typeof object == \"object\" && datatype == 'key_value'){\r\n responce.custmizedFormValue[fieldName] = object;\r\n }else{\r\n if(list_of_fields && list_of_fields != null && list_of_fields.length > 0){\r\n list_of_fields.forEach((data:any,j:any) => {\r\n switch (data.type) {\r\n case \"list_of_string\":\r\n case \"grid_selection\":\r\n case 'grid_selection_vertical':\r\n case \"drag_drop\":\r\n if(object && object[data.field_name] != null && object[data.field_name] != undefined){\r\n if(Array.isArray(object[data.field_name])){\r\n if (!responce.custmizedFormValue[fieldName]) responce.custmizedFormValue[fieldName] = {};\r\n responce.custmizedFormValue[fieldName][data.field_name] = JSON.parse(JSON.stringify(object[data.field_name]));\r\n }\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[data.field_name].setValue('')\r\n //(<FormGroup>this.templateForm.controls[element.field_name]).controls[data.field_name].patchValue('');\r\n }\r\n break;\r\n case \"typeahead\":\r\n if(data.datatype == \"list_of_object\" || datatype == 'chips'){\r\n if(object && object[data.field_name] != null && object[data.field_name] != undefined){\r\n if(Array.isArray(object[data.field_name])){\r\n if (!responce.custmizedFormValue[fieldName]) responce.custmizedFormValue[fieldName] = {};\r\n responce.custmizedFormValue[fieldName][data.field_name] = JSON.parse(JSON.stringify(object[data.field_name]));\r\n }\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[data.field_name].setValue('')\r\n //(<FormGroup>this.templateForm.controls[element.field_name]).controls[data.field_name].patchValue('');\r\n }\r\n }else{\r\n if(object && object[data.field_name] != null && object[data.field_name] != undefined){\r\n const value = object[data.field_name];\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[data.field_name].setValue(value)\r\n //(<FormGroup>this.templateForm.controls[element.field_name]).controls[data.field_name].patchValue(value);\r\n }\r\n }\r\n break;\r\n case \"input_with_uploadfile\":\r\n if(object != null && object != undefined && object[data.field_name] != null && object[data.field_name] != undefined){\r\n let custmisedKey = this.commonFunctionService.custmizedKey(element);\r\n responce.dataListForUpload[custmisedKey][data.field_name] = JSON.parse(JSON.stringify(object[data.field_name]));\r\n const value = this.fileHandlerService.modifyFileSetValue(object[data.field_name]);\r\n let tooltipMsg = this.fileHandlerService.getFileTooltipMsg(object[data.field_name]);\r\n element.list_of_fields[j]['tooltipMsg'] = tooltipMsg;\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[data.field_name].setValue(value);\r\n }\r\n break;\r\n default:\r\n if(object && object[data.field_name] != null && object[data.field_name] != undefined){\r\n const value = object[data.field_name];\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[data.field_name].setValue(value)\r\n //(<FormGroup>this.templateForm.controls[element.field_name]).controls[data.field_name].patchValue(value);\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n break;\r\n case \"typeahead\":\r\n if(datatype == \"list_of_object\" || datatype == 'chips'){\r\n if(object != null && object != undefined){\r\n responce.custmizedFormValue[fieldName] = JSON.parse(JSON.stringify(object));\r\n responce.templateForm.controls[fieldName].setValue('')\r\n }\r\n }else{\r\n if(object != null && object != undefined){\r\n const value = object;\r\n responce.templateForm.controls[fieldName].setValue(value)\r\n }\r\n }\r\n break;\r\n case \"group_of_fields\":\r\n if(list_of_fields && list_of_fields.length > 0){\r\n list_of_fields.forEach((data:any,j:any) => {\r\n let ChildFieldData = object;\r\n let childFieldName = data.field_name;\r\n if(data && childFieldName && childFieldName != '' && ChildFieldData && ChildFieldData != null){\r\n switch (data.type) {\r\n case \"list_of_string\":\r\n case \"grid_selection\":\r\n case 'grid_selection_vertical':\r\n case \"drag_drop\":\r\n if(ChildFieldData && ChildFieldData[childFieldName] != null && ChildFieldData[childFieldName] != undefined && ChildFieldData[childFieldName] != ''){\r\n if (!responce.custmizedFormValue[fieldName]) responce.custmizedFormValue[fieldName] = {};\r\n const value = JSON.parse(JSON.stringify(ChildFieldData[childFieldName]));\r\n responce.custmizedFormValue[fieldName][childFieldName] = value;\r\n //this.templateForm.get(fieldName).get(childFieldName).setValue('')\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue('')\r\n //(<FormGroup>this.templateForm.controls[fieldName]).controls[childFieldName].patchValue('');\r\n }\r\n break;\r\n case \"typeahead\":\r\n if(data.datatype == \"list_of_object\" || data.datatype == 'chips'){\r\n if(ChildFieldData && ChildFieldData[childFieldName] != null && ChildFieldData[childFieldName] != undefined && ChildFieldData[childFieldName] != ''){\r\n if (!responce.custmizedFormValue[fieldName]) responce.custmizedFormValue[fieldName] = {};\r\n const value = JSON.parse(JSON.stringify(ChildFieldData[childFieldName]));\r\n responce.custmizedFormValue[fieldName][childFieldName] = value;\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(value);\r\n //(<FormGroup>this.templateForm.controls[fieldName]).controls[childFieldName].patchValue('');\r\n }\r\n }else{\r\n if(ChildFieldData && ChildFieldData[childFieldName] != null && ChildFieldData[childFieldName] != undefined && ChildFieldData[childFieldName] != ''){\r\n const value = ChildFieldData[childFieldName];\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(value)\r\n //(<FormGroup>this.templateForm.controls[fieldName]).controls[childFieldName].patchValue(value);\r\n }\r\n }\r\n break;\r\n case \"number\":\r\n if(ChildFieldData && ChildFieldData[childFieldName] != null && ChildFieldData[childFieldName] != undefined && ChildFieldData[childFieldName] != ''){\r\n let gvalue;\r\n const value = ChildFieldData[childFieldName];\r\n if(value != null && value != ''){\r\n gvalue = value;\r\n }else{\r\n gvalue = 0;\r\n }\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(gvalue)\r\n //(<FormGroup>this.templateForm.controls[fieldName]).controls[childFieldName].patchValue(gvalue);\r\n }else if(ChildFieldData && ChildFieldData.hasOwnProperty(childFieldName)){\r\n let gvalue = 0;\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(gvalue)\r\n }\r\n break;\r\n case \"list_of_checkbox\":\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].patchValue([])\r\n if(parent){\r\n responce.selectedRow[parent] = {}\r\n responce.selectedRow[parent][fieldName] = ChildFieldData;\r\n }else{\r\n responce.selectedRow[fieldName] = ChildFieldData;\r\n }\r\n //(<FormGroup>this.templateForm.controls[fieldName]).controls[childFieldName].patchValue([]);\r\n break;\r\n case \"date\":\r\n if(ChildFieldData && ChildFieldData[childFieldName] != null && ChildFieldData[childFieldName] != undefined && ChildFieldData[childFieldName] != ''){\r\n if(data.date_format && data.date_format !=\"\" && typeof ChildFieldData[childFieldName] === 'string'){\r\n const date = ChildFieldData[childFieldName];\r\n const dateMonthYear = date.split('/');\r\n const formatedDate = dateMonthYear[2]+\"-\"+dateMonthYear[1]+\"-\"+dateMonthYear[0];\r\n const value = new Date(formatedDate);\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(value)\r\n }else{\r\n const value = formValue[fieldName][childFieldName] == null ? null : formValue[fieldName][childFieldName];\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(value);\r\n }\r\n }\r\n break;\r\n case \"input_with_uploadfile\":\r\n if(object != null && object != undefined && object[data.field_name] != null && object[data.field_name] != undefined){\r\n let custmisedKey = this.commonFunctionService.custmizedKey(element);\r\n responce.dataListForUpload[custmisedKey][data.field_name] = JSON.parse(JSON.stringify(object[data.field_name]));\r\n const value = this.fileHandlerService.modifyFileSetValue(object[data.field_name]);\r\n let tooltipMsg = this.fileHandlerService.getFileTooltipMsg(object[data.field_name]);\r\n element.list_of_fields[j]['tooltipMsg'] = tooltipMsg;\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(value);\r\n }\r\n break;\r\n default:\r\n if(ChildFieldData && ChildFieldData[childFieldName] != null && ChildFieldData[childFieldName] != undefined && ChildFieldData[childFieldName] != ''){\r\n const value = ChildFieldData[childFieldName];\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(value)\r\n //(<FormGroup>this.templateForm.controls[fieldName]).controls[childFieldName].patchValue(value);\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n case \"tree_view_selection\":\r\n if(formValue[fieldName] != null && formValue[fieldName] != undefined){\r\n responce.treeViewData[fieldName] = [];\r\n let treeDropdownValue = object == null ? null : object;\r\n if(treeDropdownValue != \"\"){\r\n responce.treeViewData[fieldName].push(JSON.parse(JSON.stringify(treeDropdownValue)));\r\n }\r\n responce.templateForm.controls[fieldName].setValue(treeDropdownValue)\r\n }\r\n break;\r\n case \"tree_view\":\r\n if(formValue[fieldName] != null && formValue[fieldName] != undefined){\r\n let treeValue = object == null ? null : object;\r\n responce.templateForm.controls[fieldName].setValue(treeValue);\r\n if(treeValue){\r\n let result = this.TreeComponentService.updateTreeViewData(JSON.parse(JSON.stringify(treeValue)),JSON.parse(JSON.stringify(element)),responce.treeViewData);\r\n responce.treeViewData =result.treeViewData;\r\n }\r\n }\r\n break;\r\n case \"stepper\":\r\n if(list_of_fields && list_of_fields.length > 0){\r\n list_of_fields.forEach((step:any) => {\r\n if(step.list_of_fields && step.list_of_fields.length > 0){\r\n step.list_of_fields.forEach((data:any) => {\r\n let childFieldName = data.field_name;\r\n switch (data.type) {\r\n case \"list_of_string\":\r\n case \"grid_selection\":\r\n case 'grid_selection_vertical':\r\n if(formValue[childFieldName] != null && formValue[childFieldName] != undefined && formValue[childFieldName] != ''){\r\n responce.custmizedFormValue[childFieldName] = formValue[childFieldName]\r\n }\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[childFieldName].setValue('');\r\n break;\r\n case \"typeahead\":\r\n if(data.datatype == \"list_of_object\" || data.datatype == 'chips'){\r\n if(formValue[childFieldName] != null && formValue[childFieldName] != undefined && formValue[childFieldName] != ''){\r\n responce.custmizedFormValue[childFieldName] = formValue[childFieldName]\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[childFieldName].setValue('');\r\n }\r\n }else{\r\n if(formValue[childFieldName] != null && formValue[childFieldName] != undefined && formValue[childFieldName] != ''){\r\n const value = formValue[childFieldName];\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[childFieldName].setValue(value);\r\n }\r\n }\r\n break;\r\n case \"number\":\r\n let gvalue;\r\n const value = formValue[childFieldName];\r\n if(value != null && value != ''){\r\n gvalue = value;\r\n }else{\r\n gvalue = 0;\r\n }\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[childFieldName].setValue(gvalue);\r\n break;\r\n case \"list_of_checkbox\":\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[childFieldName].patchValue([]);\r\n break;\r\n default:\r\n if(formValue[childFieldName] != null && formValue[childFieldName] != undefined && formValue[childFieldName] != ''){\r\n const value = formValue[childFieldName];\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[childFieldName].setValue(value);\r\n }\r\n break;\r\n }\r\n if(data.tree_view_object && data.tree_view_object.field_name != \"\"){\r\n let editeTreeModifyData = JSON.parse(JSON.stringify(data.tree_view_object));\r\n const treeObject = responce.selectedRow[editeTreeModifyData.field_name];\r\n (<UntypedFormGroup>responce.templateForm.controls[step.field_name]).controls[editeTreeModifyData.field_name].setValue(treeObject);\r\n\r\n }\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case \"number\":\r\n if(object != null && object != undefined){\r\n let value;\r\n if(object != null && object != ''){\r\n value = object;\r\n responce.templateForm.controls[fieldName].setValue(value)\r\n }else if(object == 0){\r\n value = object;\r\n responce.templateForm.controls[fieldName].setValue(value)\r\n }\r\n }\r\n break;\r\n case \"gmap\":\r\n case \"gmapview\":\r\n if(object != null && object != undefined){\r\n if(formValue['longitude']){\r\n responce.longitude = formValue['longitude'];\r\n }\r\n if(formValue['latitude']){\r\n responce.latitude = formValue['latitude'];\r\n }\r\n if(formValue['zoom']){\r\n responce.zoom = formValue['zoom'];\r\n }\r\n if(responce.longitude != 0 && responce.latitude != 0){\r\n responce.getAddress = true;\r\n //this.getAddress(responce.latitude,responce.longitude)\r\n }\r\n responce.templateForm.controls[fieldName].setValue(object)\r\n }\r\n break;\r\n case \"daterange\":\r\n if(object != null && object != undefined){\r\n let list_of_dates = [\r\n {field_name : 'start'},\r\n {field_name : 'end'}\r\n ]\r\n if (list_of_dates.length > 0) {\r\n list_of_dates.forEach((data) => {\r\n let childFieldName = data.field_name;\r\n (<UntypedFormGroup>responce.templateForm.controls[fieldName]).controls[childFieldName].setValue(object[childFieldName]);\r\n });\r\n }\r\n }\r\n break;\r\n case \"date\":\r\n if(object != null && object != undefined){\r\n if(date_format && date_format != '' && typeof object === 'string'){\r\n const date = object[fieldName];\r\n const dateMonthYear = date.split('/');\r\n const formatedDate = dateMonthYear[2]+\"-\"+dateMonthYear[1]+\"-\"+dateMonthYear[0];\r\n const value = new Date(formatedDate);\r\n responce.templateForm.controls[fieldName].setValue(value)\r\n }else{\r\n const value = formValue[fieldName] == null ? null : formValue[fieldName];\r\n responce.templateForm.controls[fieldName].setValue(value);\r\n }\r\n }\r\n break;\r\n case \"tabular_data_selector\":\r\n if(object != undefined && object != null){\r\n responce.custmizedFormValue[fieldName] = JSON.parse(JSON.stringify(object));\r\n }\r\n if(Array.isArray(responce.staticData[ddn_field]) && Array.isArray(responce.custmizedFormValue[fieldName])){\r\n responce.custmizedFormValue[fieldName].forEach((staData:any) => {\r\n if(responce.staticData[ddn_field][staData._id]){\r\n responce.staticData[ddn_field][staData._id].selected = true;\r\n }\r\n });\r\n }\r\n break;\r\n case \"list_of_checkbox\":\r\n responce.templateForm.controls[fieldName].setValue([]);\r\n break;\r\n default:\r\n if(object != null && object != undefined){\r\n const value = object == null ? null : object;\r\n responce.templateForm.controls[fieldName].setValue(value);\r\n }\r\n break;\r\n }\r\n\r\n if(tree_view_object && tree_view_object.field_name != \"\"){\r\n let editeTreeModifyData = JSON.parse(JSON.stringify(tree_view_object));\r\n const object = responce.selectedRow[editeTreeModifyData.field_name];\r\n if(object){\r\n responce.templateForm.controls[editeTreeModifyData.field_name].setValue(object)\r\n }\r\n }\r\n }\r\n setCheckboxFileListValue(checkBoxFieldListValue:any,templateForm:UntypedFormGroup,staticData:any,selectedRow:any,updateMode:boolean) {\r\n let result = {\r\n templateForm:templateForm\r\n }\r\n checkBoxFieldListValue.forEach((element:any) => {\r\n let checkCreatControl: any;\r\n if (element.parent) {\r\n checkCreatControl = (<UntypedFormGroup>result.templateForm.controls[element.parent]).controls[element.field_name];\r\n } else {\r\n checkCreatControl = result.templateForm.controls[element.field_name];\r\n }\r\n if (staticData[element.ddn_field] && checkCreatControl.controls && checkCreatControl.controls.length == 0) {\r\n let checkArray: UntypedFormArray;\r\n if (element.parent) {\r\n checkArray = (<UntypedFormGroup>result.templateForm.controls[element.parent]).controls[element.field_name] as UntypedFormArray;\r\n } else {\r\n checkArray = result.templateForm.controls[element.field_name] as UntypedFormArray;\r\n }\r\n staticData[element.ddn_field].forEach((data:any, i:any) => {\r\n if (updateMode) {\r\n let arrayData;\r\n if (element.parent) {\r\n arrayData = selectedRow[element.parent][element.field_name];\r\n } else {\r\n arrayData = selectedRow[element.field_name];\r\n }\r\n let selected = false;\r\n if (arrayData != undefined && arrayData != null) {\r\n for (let index = 0; index < arrayData.length; index++) {\r\n if (this.commonFunctionService.checkObjecOrString(data) == this.commonFunctionService.checkObjecOrString(arrayData[index])) {\r\n selected = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (selected) {\r\n checkArray.push(new UntypedFormControl(true));\r\n } else {\r\n checkArray.push(new UntypedFormControl(false));\r\n }\r\n } else {\r\n checkArray.push(new UntypedFormControl(false));\r\n }\r\n });\r\n }\r\n });\r\n return result.templateForm;\r\n }\r\n\r\n\r\n updateCustomizedValue(custmizedFormValue: any, index: number, value: any) {\r\n let response = {\r\n custmizedFormValue: custmizedFormValue\r\n }\r\n if (index !== null && index >= 0) {\r\n response.custmizedFormValue[index] = value;\r\n } else {\r\n response.custmizedFormValue.push(value);\r\n }\r\n return response\r\n }\r\n\r\n editListOfString(parentfield: any,field: any,index: number,custmizedFormValue: any, templateForm: UntypedFormGroup ) {\r\n let response = {\r\n templateForm: templateForm\r\n }\r\n let type = field.type;\r\n let fieldName = field.field_name\r\n switch(type){\r\n case 'list_of_string':\r\n const custmizedFormValueClone = Object.assign([],custmizedFormValue);\r\n if (parentfield) {\r\n const custmizedKey = parentfield ? this.commonFunctionService.custmizedKey(parentfield): null;\r\n const selectedValue = custmizedFormValueClone[custmizedKey][fieldName][index];\r\n ( <UntypedFormGroup>response.templateForm.controls[parentfield.field_name]).controls[fieldName].setValue(selectedValue)\r\n } else {\r\n const selectedValue = custmizedFormValueClone[fieldName][index];\r\n response.templateForm.controls[fieldName].setValue(selectedValue)\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n return response;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { CoreFunctionService } from '../../common-utils/core-function/core-function.service';\r\nimport { StorageService } from '../../storage/storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiCallResponceService {\r\n\r\n constructor(\r\n private envService:EnvService,\r\n private coreFunctionService:CoreFunctionService,\r\n private storageService:StorageService\r\n\r\n ) { }\r\n\r\n saveFormResponceHandling(saveFromDataRsponce:any,showNotify:boolean,updateMode:boolean,currentActionButton:any,nextIndex:any,dataListForUpload:any,saveResponceData:any,custmizedFormValue:any,modifyCustmizedFormValue:any,dataSaveInProgress:any,isStepper:any,complete_object_payload_mode:any,form:any){\r\n let result ={\r\n message : {\r\n msg : \"\",\r\n class : \"\"\r\n },\r\n saveDuplicateData: false,\r\n showNotify:showNotify,\r\n updateMode:updateMode,\r\n next:false,\r\n resetForm:false,\r\n resetResponce:false,\r\n successAction:false,\r\n dataListForUpload:dataListForUpload,\r\n saveResponceData:saveResponceData,\r\n custmizedFormValue:custmizedFormValue,\r\n modifyCustmizedFormValue:modifyCustmizedFormValue,\r\n dataSaveInProgress:dataSaveInProgress,\r\n isStepper:isStepper,\r\n complete_object_payload_mode:complete_object_payload_mode,\r\n public:{\r\n check:false,\r\n getFormData:{},\r\n url:\"\"\r\n }\r\n } \r\n if (saveFromDataRsponce) {\r\n if (saveFromDataRsponce.success && saveFromDataRsponce.success != '' && result.showNotify) {\r\n if (saveFromDataRsponce.success == 'success') {\r\n if(currentActionButton && currentActionButton.onclick && currentActionButton.onclick.success_msg && currentActionButton.onclick.success_msg != ''){\r\n result.message.msg = currentActionButton.onclick.success_msg;\r\n result.message.class = \"bg-success\";\r\n }else if(saveFromDataRsponce.success_msg && saveFromDataRsponce.success_msg != ''){\r\n result.message.msg = saveFromDataRsponce.success_msg;\r\n result.message.class = \"bg-success\";\r\n }else{\r\n if(result.updateMode){\r\n result.message.msg = \" Form Data Update successfull !!!\";\r\n }else{\r\n result.message.msg = \" Form Data Save successfull !!!\";\r\n }\r\n result.message.class = \"bg-success\";\r\n }\r\n if(result.updateMode){\r\n if(nextIndex){\r\n result.next = true;\r\n }else{\r\n result.resetForm = true;\r\n result.updateMode = false;\r\n }\r\n result.custmizedFormValue = {};\r\n result.modifyCustmizedFormValue = {};\r\n }else{\r\n result.resetForm = true;\r\n }\r\n result.dataListForUpload = {}\r\n result.saveResponceData = saveFromDataRsponce.data;\r\n }\r\n if(this.envService.getRequestType() == 'PUBLIC'){\r\n result.complete_object_payload_mode = false;\r\n result.public.check = true;\r\n let _id = result.saveResponceData[\"_id\"];\r\n if(this.coreFunctionService.isNotBlank(form[\"details\"]) && this.coreFunctionService.isNotBlank(form[\"details\"][\"on_success_url_key\"] != \"\")){\r\n let public_key = form[\"details\"][\"on_success_url_key\"]\r\n const data = {\r\n \"obj\":public_key,\r\n \"key\":_id,\r\n \"key1\": \"key2\",\r\n \"key2\" : \"key3\",\r\n }\r\n let payloaddata = {};\r\n this.storageService.removeDataFormStorage();\r\n const getFormData = {\r\n data: payloaddata,\r\n _id:_id\r\n }\r\n getFormData.data=data;\r\n result.public.getFormData = getFormData;\r\n //this.apiService.GetForm(getFormData);\r\n let navigation_url = \"pbl/\"+public_key+\"/\"+_id+\"/ie09/cnf00v\";\r\n result.public.url = navigation_url;\r\n //this.router.navigate([navigation_url]);\r\n }else{\r\n result.public.url = \"home_page\";\r\n //this.router.navigate([\"home_page\"]);\r\n }\r\n\r\n }\r\n result.showNotify = false;\r\n result.dataSaveInProgress = true;\r\n result.resetResponce = true;\r\n result.successAction = true;\r\n }else if (saveFromDataRsponce.error && saveFromDataRsponce.error != '' && result.showNotify) {\r\n result.message.msg = saveFromDataRsponce.error;\r\n result.message.class = \"bg-danger\";\r\n result.showNotify = false;\r\n result.dataSaveInProgress = true;\r\n result.resetResponce = true;\r\n }else if (saveFromDataRsponce.confirmationRequired && saveFromDataRsponce.confirmationRequired != '' && result.showNotify) {\r\n result.message.msg = saveFromDataRsponce.confirmationRequired;\r\n result.message.class = \"bg-warning\";\r\n result.showNotify = false;\r\n result.dataSaveInProgress = true;\r\n result.resetResponce = true;\r\n result.saveDuplicateData= true;\r\n }\r\n else{\r\n if(result.showNotify){\r\n result.showNotify = false;\r\n result.message.msg = \"No data return\";\r\n result.message.class = \"bg-danger\";\r\n result.dataSaveInProgress = true;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n checkOnSuccessAction(currentActionButton:any,forms:any){\r\n let responce ={\r\n actionValue : '',\r\n index : -1\r\n }\r\n\r\n if(currentActionButton.onclick && currentActionButton.onclick != null && currentActionButton.onclick.action_name && currentActionButton.onclick.action_name != null){\r\n if(currentActionButton.onclick.action_name != ''){\r\n responce.actionValue = currentActionButton.onclick.action_name;\r\n if(responce.actionValue != ''){\r\n Object.keys(forms).forEach((key,i) => {\r\n if(key == responce.actionValue){\r\n responce.index = i;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return responce;\r\n };\r\n setGridFilterData(gridFilterData:any,tabFilterData:any){\r\n let result = {\r\n tabFilterData:tabFilterData\r\n }\r\n if (gridFilterData) {\r\n if (gridFilterData.data && gridFilterData.data.length > 0) {\r\n result.tabFilterData = JSON.parse(JSON.stringify(gridFilterData.data));\r\n } else {\r\n result.tabFilterData = [];\r\n }\r\n }\r\n return result.tabFilterData;\r\n }\r\n setTypeaheadData(data:any,typeAheadData:any){\r\n let result = {\r\n typeAheadData:typeAheadData\r\n }\r\n if (data && data.length > 0) {\r\n result.typeAheadData = data;\r\n } else {\r\n result.typeAheadData = [];\r\n }\r\n return result.typeAheadData;\r\n }\r\n}\r\n","import { ApiCallService } from './../../api/api-call/api-call.service';\r\nimport { GridCommonFunctionService } from './../../grid/grid-common-function/grid-common-function.service';\r\nimport { ApiService } from './../../api/api.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CommonFunctionService } from '../../common-utils/common-function.service';\r\nimport { CoreFunctionService } from '../../common-utils/core-function/core-function.service';\r\nimport { CheckIfService } from '../../check-if/check-if.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MultipleFormService {\r\n\r\n constructor(\r\n private commonFunctionService:CommonFunctionService,\r\n private coreFunctionService:CoreFunctionService,\r\n private apiService:ApiService,\r\n private checkIfService:CheckIfService,\r\n private gridCommonFunctionService:GridCommonFunctionService,\r\n private apiCallService:ApiCallService\r\n ) { }\r\n\r\n\r\n setPreviousFormTargetFieldData(multipleFormCollection:any,formValueWithCust:any){\r\n let result = {\r\n multipleFormCollection:multipleFormCollection\r\n }\r\n if(result.multipleFormCollection.length > 0){\r\n const previousFormIndex = result.multipleFormCollection.length - 1;\r\n const previousFormData = result.multipleFormCollection[previousFormIndex];\r\n const previousFormField = previousFormData.current_field;\r\n const formData = previousFormData.next_form_data;\r\n if(previousFormField && previousFormField.add_new_target_field){\r\n const targateFieldName = previousFormField.add_new_target_field;\r\n const currentFormValue = formValueWithCust;\r\n const currentTargetFieldValue = currentFormValue[targateFieldName]\r\n formData[targateFieldName] = currentTargetFieldValue;\r\n }\r\n result.multipleFormCollection[previousFormIndex]['next_form_data'] = formData;\r\n }\r\n return result.multipleFormCollection;\r\n }\r\n getNextFormObject(nextFormData:any,next:any){\r\n const form = nextFormData.formName;\r\n const field_name = nextFormData.field_name;\r\n const form_field_name = nextFormData.form_field_name;\r\n const field = {\r\n 'add_new_form': form,\r\n 'add_next_form_button': next,\r\n 'field_name': field_name,\r\n 'type': 'hidden',\r\n 'form_field_name': form_field_name,\r\n 'form_value_index' : 0,\r\n 'moveFieldsToNewForm' : ['employee_name#add_assignments.resource_name']\r\n };\r\n return field;\r\n }\r\n getNextFormData(formData:any,listOfFieldsUpdateIndex:any){\r\n let result ={\r\n updateAddNew:false,\r\n payload:{}\r\n }\r\n if(formData){\r\n let parent:any = '';\r\n let child:any = '';\r\n if(formData['parent_field']){\r\n parent = formData['parent_field'];\r\n }\r\n if(formData['current_field']){\r\n child = formData['current_field'];\r\n }\r\n let formValue = formData['data'];\r\n let fieldValue:any = '';\r\n if(parent != ''){\r\n if(parent.type == 'list_of_fields'){\r\n fieldValue = formValue[parent.field_name][listOfFieldsUpdateIndex][child.field_name];\r\n }else{\r\n fieldValue = formValue[parent.field_name][child.field_name];\r\n }\r\n }else{\r\n fieldValue = formValue[child.field_name];\r\n }\r\n if(fieldValue && fieldValue._id && fieldValue._id != ''){\r\n //console.log(fieldValue._id);\r\n const params = child.api_params;\r\n if(params && params != ''){\r\n const criteria = [\"_id;eq;\"+fieldValue._id+\";STATIC\"]\r\n const crList = this.apiCallService.getCriteriaList(criteria,{});\r\n const payload = this.apiCallService.getDataForGrid(1,{},{'name':params},[],{},'');\r\n payload.data.crList = crList;\r\n //this.apiService.getGridData(payload);\r\n result.updateAddNew = true;\r\n result.payload = payload;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n storeFormDetails(parent_field:any,field:any,formValue:any,formValueWithCustomData:any,updateMode:boolean,nextFormData:any,lastTypeaheadTypeValue:any,multipleFormCollection:any,currentMenu:any,pForm:any,listOfFieldUpdateMode:any,listOfFieldsUpdateIndex:any,addNewRecord:any,enableNextButton:any,index?:number){\r\n let result = {\r\n multipleFormCollection:multipleFormCollection,\r\n form:{},\r\n id:\"\",\r\n addNewRecord:addNewRecord,\r\n criteria:[''],\r\n params:''\r\n }\r\n let targetFieldName:any ={}\r\n targetFieldName['form'] = {}\r\n targetFieldName['custom'] = [];\r\n let formData = JSON.parse(JSON.stringify(formValueWithCustomData));\r\n if(field && field.form_field_name){\r\n const nextFormReference = {\r\n '_id':nextFormData._id,\r\n 'name':nextFormData.name\r\n }\r\n formData[field.form_field_name] = nextFormReference;\r\n updateMode = true;\r\n }\r\n if(this.coreFunctionService.isNotBlank(field.add_new_target_field)){\r\n targetFieldName['form'][field.add_new_target_field] = lastTypeaheadTypeValue\r\n }else if(field){\r\n switch (field.type) {\r\n case \"list_of_fields\":\r\n case \"grid_selection\":\r\n let currentFieldData = formData[field.field_name];\r\n if(currentFieldData && Array.isArray(currentFieldData)){\r\n if(index != undefined && index >= 0){\r\n targetFieldName['form'] = currentFieldData[index];\r\n targetFieldName['updataModeInPopupType'] = true;\r\n }else {\r\n targetFieldName['custom'] = currentFieldData;\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if(this.coreFunctionService.isNotBlank(field.moveFieldsToNewForm)){\r\n if(field.moveFieldsToNewForm && field.moveFieldsToNewForm.length > 0){\r\n field.moveFieldsToNewForm.forEach((keyValue:any) => {\r\n const sourceTarget = keyValue.split(\"#\");\r\n let key = sourceTarget[0];\r\n let valueField = sourceTarget[1];\r\n let multiCollection = JSON.parse(JSON.stringify(result.multipleFormCollection));\r\n let formValueWithMulticollection = this.commonFunctionService.getFormDataInMultiformCollection(multiCollection,formValue);\r\n let value = this.commonFunctionService.getObjectValue(valueField,formValueWithMulticollection);\r\n targetFieldName['form'][key] = value;\r\n });\r\n }\r\n }\r\n let data = {\r\n \"collection_name\":currentMenu.name,\r\n \"data\":formData,\r\n \"form\":pForm,\r\n \"parent_field\":parent_field,\r\n \"current_field\":field,\r\n \"next_form_data\":targetFieldName,\r\n \"updateMode\" : updateMode,\r\n \"form_value\" : JSON.parse(JSON.stringify(formValue)),\r\n \"index\": -1,\r\n \"listOfFieldUpdateMode\":listOfFieldUpdateMode,\r\n \"listOfFieldsUpdateIndex\":listOfFieldsUpdateIndex\r\n }\r\n if(field){\r\n const type = field.type;\r\n switch (type) {\r\n case \"list_of_fields\":\r\n case \"grid_selection\":\r\n if(index != undefined){\r\n data['index'] = index;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n result.multipleFormCollection.push(data);\r\n if(field && field.type == \"list_of_fields\"){\r\n let buttonLabel = \"\";\r\n if(index != undefined && index >= 0){\r\n buttonLabel = 'Update';\r\n }else{\r\n buttonLabel = 'Add';\r\n }\r\n if(field.list_of_fields && field.list_of_fields.length > 0){\r\n let fieldList:any = JSON.parse(JSON.stringify(field.list_of_fields));\r\n if(fieldList && fieldList.length > 0 && index == undefined){\r\n let curField = JSON.parse(JSON.stringify(field));\r\n curField['add_list_field'] = 'add';\r\n fieldList.push(curField);\r\n }\r\n result.form = {\r\n \"details\": {\r\n \"class\": \"\",\r\n \"collection_name\":\"\",\r\n \"bulk_update\":false\r\n },\r\n \"tab_list_buttons\": [\r\n {\r\n \"label\": buttonLabel,\r\n \"onclick\": {\r\n \"api\": \"add\",\r\n \"action_name\": \"\",\r\n \"close_form_on_succes\": false\r\n },\r\n \"type\": \"button\",\r\n \"field_name\": \"save\",\r\n \"api_params\": \"\",\r\n \"show_if\":\"\",\r\n \"disable_if\":\"\"\r\n },\r\n {\r\n \"label\": \"Ok\",\r\n \"onclick\": {\r\n \"api\": \"close\",\r\n \"action_name\": \"\",\r\n \"close_form_on_succes\": false\r\n },\r\n \"type\": \"button\",\r\n \"field_name\": \"\",\r\n \"api_params\": \"\",\r\n \"show_if\":\"\",\r\n \"disable_if\":\"\"\r\n }\r\n ],\r\n \"tableFields\": fieldList,\r\n \"api_params\": null,\r\n \"label\": field.label\r\n }\r\n }else{\r\n if(field.form && field.form._id){\r\n result.id = field.form._id;\r\n }\r\n }\r\n }else{\r\n if(field.add_new_form && field.add_new_form._id){\r\n result.id = field.add_new_form._id;\r\n }\r\n result.addNewRecord = false;\r\n if(!enableNextButton && field && field.find_child_form){\r\n let cri = \"collection.name;eq;\" + currentMenu.name + \";STATIC\";\r\n result.criteria = []\r\n result.criteria.push(cri);\r\n result.params = 'scheduled_task_form';\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getDataForNextForm(reqParams:string,reqCriteria:any) {\r\n const request = this.apiCallService.getDataForGrid(1, {}, { 'name': reqParams }, [], {}, '');\r\n const crList = this.apiCallService.getCriteriaList(reqCriteria, {});\r\n request.data.crList = crList;\r\n this.apiService.getNextFormData(request);\r\n }\r\n getNextFormById(id: string) {\r\n const params = \"form\";\r\n const criteria = [\"_id;eq;\" + id + \";STATIC\"];\r\n const payload = this.apiCallService.getPaylodWithCriteria(params, '', criteria, {});\r\n this.apiService.GetNestedForm(payload);\r\n }\r\n\r\n updateNextFormData(multipleFormCollection:any,nextFormUpdateMode:boolean,form:any,custmizedFormValue:any,editedRowIndex:any,previousFormFocusField:any,tableFields:any){\r\n let result = {\r\n nextFormData: {},\r\n cdata:{},\r\n fData:{},\r\n nextFormUpdateMode:nextFormUpdateMode,\r\n custmizedFormValue:custmizedFormValue,\r\n fieldName:\"\",\r\n previousFormFocusField:previousFormFocusField,\r\n editFunction:false,\r\n updateFormFunction:false,\r\n getStaticData:false\r\n }\r\n let nextFormData:any = {}\r\n if(multipleFormCollection.length > 0){\r\n nextFormData = multipleFormCollection[multipleFormCollection.length -1];\r\n }\r\n if(nextFormData && nextFormData['next_form_data'] && nextFormData['next_form_data']['custom']){\r\n result.cdata = nextFormData['next_form_data']['custom'];\r\n }\r\n if(result.nextFormData && nextFormData['next_form_data'] && nextFormData['next_form_data']['form']){\r\n result.fData = nextFormData['next_form_data']['form'];\r\n }\r\n if(nextFormData['index'] != undefined && nextFormData['index'] >= 0){\r\n result.nextFormUpdateMode = true;\r\n }\r\n if(nextFormData && nextFormData['current_field'] && nextFormData['current_field']['type'] && (nextFormData['index'] == undefined || nextFormData['index'] == -1)){\r\n switch (nextFormData['current_field']['type']) {\r\n case 'list_of_fields':\r\n case 'grid_selection':\r\n if(Array.isArray(result.cdata)){\r\n if(form && form.buttons){\r\n if(!this.checkIfService.checkAddNewButtonOnGridSelection(form.buttons)){\r\n result.fieldName = nextFormData['current_field']['field_name'];\r\n result.custmizedFormValue[result.fieldName] = result.cdata;\r\n //this.modifyCustmizedValue(fieldName);\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if(nextFormData && nextFormData['next_form_data'] && nextFormData['next_form_data']['updataModeInPopupType']){\r\n result.editFunction = true;\r\n //this.editedRowData(fData);\r\n }else{\r\n result.updateFormFunction=true;\r\n //this.updateDataOnFormField(fData);\r\n if(editedRowIndex >= 0 || Object.keys(result.fData).length > 0){\r\n result.getStaticData = true;\r\n //this.getStaticDataWithDependentData();\r\n }\r\n }\r\n let nextFormFocusedFieldname = '';\r\n for (let key in result.fData) {\r\n nextFormFocusedFieldname = key;\r\n break;\r\n }\r\n if (tableFields && tableFields.length > 0) {\r\n for (let i = 0; i < tableFields.length; i++) {\r\n const element = tableFields[i];\r\n if(nextFormFocusedFieldname == element.field_name){\r\n result.previousFormFocusField = element;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n result.nextFormData = nextFormData;\r\n return result;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ApiCallService } from '../api/api-call/api-call.service';\r\nimport { CheckIfService } from '../check-if/check-if.service';\r\nimport { StorageService } from '../storage/storage.service';\r\nimport { PermissionService } from '../permission/permission.service';\r\nimport { ModelService } from '../model/model.service';\r\nimport { ApiService } from '../api/api.service';\r\nimport { NotificationService } from '../notify/notification.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DownloadService {\r\n\r\n constructor(\r\n @Inject(DOCUMENT) document:any,\r\n private checkIfService:CheckIfService,\r\n private apiCallService:ApiCallService,\r\n private storageService:StorageService,\r\n private permissionService:PermissionService,\r\n private modalService:ModelService,\r\n private apiService:ApiService,\r\n private notificationService:NotificationService\r\n ) { }\r\n\r\n\r\n download(url:any,fileName:any,button?:any){\r\n if(button && button.openNewTab){\r\n window.open(url, '_blank');\r\n }\r\n let link = document.createElement('a');\r\n link.setAttribute('type', 'hidden');\r\n link.href = url;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n }\r\n\r\n exportCsv(tempNme:any,headElements:any[],tab:any,currentMenu:any,userInfo:any,filterForm:any){\r\n let fiteredList: any[]=[];\r\n headElements.forEach(element => {\r\n if(element && element.display){\r\n // delete element.display;\r\n fiteredList.push(element)\r\n }\r\n });\r\n let gridName = '';\r\n let grid_api_params_criteria = [];\r\n if(this.checkIfService.isGridFieldExist(tab,\"api_params_criteria\")){\r\n grid_api_params_criteria = tab.grid.api_params_criteria;\r\n }\r\n const data = this.apiCallService.getPaylodWithCriteria(currentMenu.name,'',grid_api_params_criteria,'');\r\n if(tab && tab.grid){\r\n if(tab.grid.export_template && tab.grid.export_template != null){\r\n gridName = tab.grid.export_template;\r\n }else{\r\n gridName = tab.grid._id;\r\n }\r\n }\r\n delete data.log;\r\n delete data.key;\r\n data['key'] = userInfo.refCode;\r\n data['key3']=gridName;\r\n const value = filterForm.getRawValue();\r\n const filterCrlist = this.apiCallService.getfilterCrlist(headElements,value);\r\n if(filterCrlist.length > 0){\r\n filterCrlist.forEach((element: any) => {\r\n data.crList.push(element);\r\n });\r\n }\r\n const getExportData = {\r\n data: {\r\n refCode: userInfo.refCode,\r\n log: this.storageService.getUserLog(),\r\n kvp: data,\r\n gridData: fiteredList,\r\n },\r\n responce: { responseType: \"arraybuffer\" },\r\n path: tempNme\r\n }\r\n\r\n return getExportData;\r\n }\r\n exportExcel(total:any,gridColumns:any,gridFilterValue:any,tab:any,menuName:any) {\r\n let downloadLink = \"\";\r\n let totalGridData:number = this.storageService.getApplicationSetting()?.totalGridData;\r\n if(!totalGridData) {\r\n totalGridData = 50000;\r\n }\r\n if(total && totalGridData > 0 && total < totalGridData) {\r\n this.modalService.open('download-progress-modal', {});\r\n let tempNme = menuName.name;\r\n if(this.permissionService.checkPermission(tempNme,'export')){\r\n let data = this.apiCallService.preparePayloadWithCrlist(tab,menuName,gridColumns,gridFilterValue);\r\n let gridName = '';\r\n if(tab && tab?.grid){\r\n if(tab?.grid?.export_template){\r\n gridName = tab.grid.export_template;\r\n }else{\r\n gridName = tab.grid._id;\r\n }\r\n }\r\n delete data.log;\r\n data['key3']=gridName;\r\n const getExportData = {\r\n data: {\r\n refCode: this.storageService.getRefCode(),\r\n log: this.storageService.getUserLog(),\r\n kvp: data\r\n },\r\n responce: { responseType: \"arraybuffer\" },\r\n path: tempNme\r\n }\r\n var fileName = tempNme;\r\n fileName = fileName.charAt(0).toUpperCase() + fileName.slice(1)\r\n downloadLink = fileName + '-' + new Date().toLocaleDateString();\r\n this.apiService.GetExportExclLink(getExportData);\r\n }else{\r\n this.permissionService.checkTokenStatusForPermission();\r\n //this.notificationService.notify(\"bg-danger\", \"Permission denied !!!\");\r\n }\r\n }else {\r\n this.notificationService.notify(\"bg-danger\", `Kindly filter data as download record size is : ${totalGridData} not ${total}`);\r\n }\r\n return downloadLink;\r\n }\r\n downloadExcelFromLink(exportExcelLink:any,downloadClick:string){\r\n let link = document.createElement('a');\r\n link.setAttribute('type', 'hidden');\r\n const file = new Blob([exportExcelLink], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\r\n const url = window.URL.createObjectURL(file);\r\n link.href = url;\r\n link.download = downloadClick;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n downloadClick = '';\r\n this.apiService.resetGetExportExclLink();\r\n this.modalService.close('download-progress-modal');\r\n return downloadClick;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SecretsManagerClient, GetSecretValueCommand } from '@aws-sdk/client-secrets-manager';\r\nimport { StorageService } from '../../storage/storage.service';\r\nimport { DataShareService } from '../../data-share/data-share.service';\r\nimport { EncryptionService } from '../../encryption/encryption.service';\r\nimport { Common } from '../../../shared/enums/common.enum';\r\nimport { ApiCallService } from '../api-call/api-call.service';\r\nimport { EnvService } from '../../env/env.service';\r\nimport { NotificationService } from '../../notify/notification.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AwsSecretManagerService {\r\n\r\n private awsClient:any\r\n\r\n constructor(\r\n private storageService : StorageService,\r\n private dataShareService : DataShareService,\r\n private encryptionService : EncryptionService,\r\n private apiCallService : ApiCallService,\r\n private envService : EnvService,\r\n private notificationService: NotificationService\r\n ) { \r\n this.awsClient = new SecretsManagerClient({\r\n region: this.encryptionService.decryptRequest(Common.AWS_REGION),\r\n credentials: {\r\n accessKeyId: this.encryptionService.decryptRequest(Common.AWS_ACCESSKEYID),\r\n secretAccessKey: this.encryptionService.decryptRequest(Common.AWS_SECRETKEY),\r\n }\r\n });\r\n }\r\n\r\n\r\n async getServerAndAppSetting (){\r\n let hostname:any = this.envService.getHostName('hostname');\r\n if(hostname == 'localhost'){\r\n hostname = this.storageService.getClientCodeEnviorment().serverhost;\r\n }else{\r\n hostname =await this.getserverHostByAwsOrLocal(hostname);\r\n }\r\n if(hostname && hostname!=''){\r\n this.storageService.setHostNameDinamically(hostname+\"/rest/\");\r\n this.dataShareService.shareServerHostName(hostname);\r\n this.apiCallService.getApplicationAllSettings();\r\n } else{\r\n this.notificationService.notify(\"bg-danger\",\"Please contact to Admin\");\r\n }\r\n }\r\n\r\n\r\n async getserverHostByAwsOrLocal(domain:string){\r\n let response = await this.getServerHostFromAwsSecretManager(domain);\r\n if ( !response || response == \"\"){\r\n if(this.storageService.checkPlatForm() == 'mobile'){\r\n this.storageService.setClientNAme(domain);\r\n }\r\n response = this.envService.getHostKeyValue(\"serverEndpoint\")\r\n }\r\n return response;\r\n }\r\n\r\n async getServerHostFromAwsSecretManager (key: string) {\r\n let secret_name = 'prod/ui';\r\n let secretValue\r\n await this.awsClient.send(\r\n new GetSecretValueCommand({\r\n SecretId: secret_name,\r\n VersionStage: \"AWSCURRENT\",\r\n })\r\n ).then(\r\n (response:any) => {\r\n const secretString = response.SecretString;\r\n const secretObject = JSON.parse(secretString);\r\n secretValue = secretObject[key];\r\n },\r\n (error:Error) => {\r\n console.log(error);\r\n }\r\n );\r\n return secretValue;\r\n }\r\n \r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { Location,DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn:\"root\"\r\n})\r\n\r\n\r\nexport class RouterService {\r\n\r\n constructor(\r\n private _location:Location,\r\n @Inject(DOCUMENT) private document: Document\r\n ){\r\n\r\n }\r\n updateRouteUrl(selectedRowIndex:number,elements:any,currentBrowseUrl:any){\r\n let responce = {\r\n \"currentBrowseUrl\":currentBrowseUrl\r\n }\r\n let record = \"\";\r\n if(selectedRowIndex != -1){\r\n record = elements[selectedRowIndex];\r\n }\r\n let routeQuery = '';\r\n let routeQueryCriteri = ['serialId'];\r\n responce.currentBrowseUrl = this.getCurrentBrowseUrl();\r\n if(record){\r\n let queryList:any = [];\r\n routeQueryCriteri.forEach((criteria:any) => {\r\n if(record && record[criteria]){\r\n const query = criteria+\"=\"+record[criteria];\r\n queryList.push(query);\r\n }\r\n });\r\n if(queryList && queryList.length > 0){\r\n queryList.forEach((query:any,i:any) =>{\r\n if(i == 0){\r\n routeQuery = routeQuery + query;\r\n }else {\r\n routeQuery = routeQuery +\"&\"+ query;\r\n }\r\n })\r\n }\r\n if(routeQuery){\r\n this._location.go(responce.currentBrowseUrl+\"?\"+routeQuery);\r\n }else {\r\n this._location.go(responce.currentBrowseUrl);\r\n }\r\n }else{\r\n let routUrl = responce.currentBrowseUrl;\r\n if(responce?.currentBrowseUrl){\r\n let url = responce.currentBrowseUrl.split('?');\r\n if(url && url.length > 0){\r\n routUrl = url[0];\r\n }\r\n }\r\n this._location.go(routUrl);\r\n responce.currentBrowseUrl = \"\";\r\n }\r\n return responce;\r\n }\r\n\r\n getCurrentBrowseUrl(){\r\n //return this.document.location.hash.substring(1);\r\n return this.document.location.pathname;\r\n }\r\n openInSameTabWithoutHistory(url: string) {\r\n window.location.replace(url);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of my-lib\r\n */\r\n\r\nimport { from } from 'rxjs';\r\n\r\nexport * from './lib/my-lib.module';\r\nexport * from './lib/services/api/api.service';\r\nexport * from './lib/services/api/auth/auth-guard.service';\r\nexport * from './lib/services/api/auth/auth.service';\r\nexport * from './lib/services/api/common-api/common-api.service';\r\nexport * from './lib/services/api/doc-api/doc-api.service';\r\nexport * from './lib/services/api/public-api/public-api.service';\r\nexport * from './lib/services/chart/chart.service';\r\nexport * from './lib/services/common-utils/common-function.service';\r\nexport * from './lib/services/common-utils/core-function/core-function.service';\r\nexport * from './lib/services/customvalidation/customvalidation.service';\r\nexport * from './lib/services/data-share/data-share.service';\r\nexport * from './lib/services/data-share/doc-data-share/doc-data-share.service';\r\nexport * from './lib/services/data-share/public-data-share/public-data-share.service';\r\nexport * from './lib/services/encryption/encryption.service';\r\nexport * from './lib/services/env/env.service';\r\nexport * from './lib/services/grid/grid-common-function/grid-common-function.service';\r\nexport * from './lib/services/grid/grid-selection/grid-selection.service';\r\nexport * from './lib/services/loader/loader.service';\r\nexport * from './lib/services/menu-or-module-common/menu-or-module-common.service';\r\nexport * from './lib/services/model/model.service';\r\nexport * from './lib/services/notify/notification.service';\r\nexport * from './lib/services/permission/permission.service';\r\nexport * from './lib/services/storage/storage.service';\r\nexport * from './lib/services/lims-calculations/lims-calculations.service';\r\nexport * from './lib/services/tree-component/tree-component.service';\r\nexport * from './lib/services/voice-recognition/voice-recognition.service';\r\nexport * from './lib/shared/enums/common.enum';\r\nexport * from './lib/shared/enums/end-point.enum';\r\nexport * from './lib/shared/enums/storage-token-status.enum';\r\nexport * from './lib/shared/enums/keycodes.enum';\r\nexport * from './lib/shared/enums/operator_type.enum';\r\nexport * from './lib/services/data-share/auth-data-share/auth-data-share.service';\r\nexport * from './lib/services/data-share/common-app-data-share/common-app-data-share.service';\r\nexport * from './lib/services/fileHandler/file-handler.service';\r\nexport * from './lib/shared/configuration/editor-config';\r\nexport * from './lib/shared/configuration/config';\r\nexport * from './lib/services/form/form-creation/form-creation.service';\r\nexport * from './lib/services/form/form-value/form-value.service';\r\nexport * from './lib/services/api/api-call/api-call.service';\r\nexport * from './lib/services/form/form-control/form-control.service';\r\nexport * from './lib/services/check-if/check-if.service';\r\nexport * from './lib/services/api/api-call-responce/api-call-responce.service';\r\nexport * from './lib/services/form/multiple-form/multiple-form.service';\r\nexport * from './lib/services/download/download.service';\r\nexport * from './lib/services/userPrefrence/user-prefrence.service';\r\nexport * from './lib/services/api/aws-secret-manager/aws-secret-manager.service';\r\nexport * from './lib/services/storage/cookies.service';\r\nexport * from './lib/services/router/router.service';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.EncryptionService","i3.CoreFunctionService","i4.CookiesService","i1.StorageService","i2.CoreFunctionService","i3.DataShareService","i1.DataShareService","i2","i3.EnvService","i4.ModelService","i5.StorageService","i6.CoreFunctionService","i1","i2.ApiService","i2.ModelService","i3","i4.ApiService","i5.CoreFunctionService","i6.EnvService","i7.NotificationService","i1.CommonFunctionService","i2.StorageService","i3.NotificationService","i5.CheckIfService","i6.ModelService","i2.EnvService","i3.ApiService","i4.StorageService","i6.EncryptionService","i7.CommonFunctionService","i8.CoreFunctionService","i9.AuthDataShareService","i10.ApiCallService","i3.AuthService","i3.DocDataShareService","i1.PublicDataShareService","i3.FileHandlerService","i4.CheckIfService","i6","i7.DataShareService","i8.ApiCallService","i9.ApiService","i2.AuthService","i4.CommonFunctionService","i2.PermissionService","i3.CommonFunctionService","i4.DataShareService","i5.ApiService","i7.CommonAppDataShareService","i8.UserPrefrenceService","i9.CoreFunctionService","i5.ApiCallService","i2.CheckIfService","i3.StorageService","i5.CustomvalidationService","i6.ApiCallService","i7.CheckIfService","i8.ModelService","i2.FileHandlerService","i3.PermissionService","i4.EnvService","i5.CommonFunctionService","i6.GridCommonFunctionService","i7.MenuOrModuleCommonService","i8.StorageService","i9.CheckIfService","i3.GridCommonFunctionService","i4.TreeComponentService","i1.EnvService","i5.GridCommonFunctionService","i1.CheckIfService","i2.ApiCallService","i4.PermissionService","i5.ModelService","i6.ApiService","i2.DataShareService","i3.EncryptionService","i4.ApiCallService","i5.EnvService","i6.NotificationService"],"mappings":"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AAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,GAAA,EAAA,CAAA,GAAA,GAAM,CAAA;AACN,IAAA,OAAA,C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"}