cloud-ide-admin 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  // import { authGuard } from '../../../../src/app/guards/auth.guard';
2
2
  export const adminRoutes = [{
3
3
  path: "admin-home",
4
- loadComponent: () => import('./cide-adm-admin.component').then(c => c.CideAdmAdminComponent),
4
+ loadComponent: () => import('./admin-module/home/home-wrapper/cide-adm-home-wrapper.component').then(c => c.CideAdmHomeWrapperComponent),
5
5
  // canActivate: [authGuard],
6
6
  },
7
7
  {
@@ -35,4 +35,4 @@ export const adminRoutes = [{
35
35
  sypg_page_code: "core_entity_form"
36
36
  }
37
37
  }];
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtaWRlLWFkbWluLnJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1hZG1pbi9zcmMvbGliL2Nsb3VkLWlkZS1hZG1pbi5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EscUVBQXFFO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBVyxDQUFDO1FBQ2hDLElBQUksRUFBRSxZQUFZO1FBQ2xCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7UUFDNUYsNEJBQTRCO0tBQy9CO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsWUFBWTtRQUNsQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGtFQUFrRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0tBQzNJO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsYUFBYTtRQUNuQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDJEQUEyRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO1FBQ2hJLDRCQUE0QjtRQUM1QixJQUFJLEVBQUU7WUFDRixRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxtQkFBbUI7U0FDdEM7S0FDSjtJQUNEO1FBQ0ksSUFBSSxFQUFFLGVBQWU7UUFDckIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUN6SCw0QkFBNEI7UUFDNUIsSUFBSSxFQUFFO1lBQ0YsUUFBUSxFQUFFLElBQUk7WUFDZCxjQUFjLEVBQUUsa0JBQWtCO1NBQ3JDO0tBQ0o7SUFDRDtRQUNJLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUN6SCw0QkFBNEI7UUFDNUIsSUFBSSxFQUFFO1lBQ0YsUUFBUSxFQUFFLElBQUk7WUFDZCxjQUFjLEVBQUUsa0JBQWtCO1NBQ3JDO0tBQ0osQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuLy8gaW1wb3J0IHsgYXV0aEd1YXJkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2FwcC9ndWFyZHMvYXV0aC5ndWFyZCc7XHJcblxyXG5leHBvcnQgY29uc3QgYWRtaW5Sb3V0ZXM6IFJvdXRlcyA9IFt7XHJcbiAgICBwYXRoOiBcImFkbWluLWhvbWVcIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9jaWRlLWFkbS1hZG1pbi5jb21wb25lbnQnKS50aGVuKGMgPT4gYy5DaWRlQWRtQWRtaW5Db21wb25lbnQpLFxyXG4gICAgLy8gY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLFxyXG59LFxyXG57XHJcbiAgICBwYXRoOiBcImhvbWUtYWRtaW5cIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi1tb2R1bGUvaG9tZS9ob21lLXdyYXBwZXIvY2lkZS1hZG0taG9tZS13cmFwcGVyLmNvbXBvbmVudCcpLnRoZW4oYyA9PiBjLkNpZGVBZG1Ib21lV3JhcHBlckNvbXBvbmVudCksXHJcbn0sXHJcbntcclxuICAgIHBhdGg6IFwiZW50aXR5LWxpc3RcIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi1tb2R1bGUvZW50aXR5L2xpc3QvY2lkZS1hZG0tZW50aXR5LWxpc3QuY29tcG9uZW50JykudGhlbihjID0+IGMuQ2lkZUFkbUVudGl0eUxpc3RDb21wb25lbnQpLFxyXG4gICAgLy8gY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLFxyXG4gICAgZGF0YToge1xyXG4gICAgICAgIHJldXNlVGFiOiB0cnVlLFxyXG4gICAgICAgIHN5cGdfcGFnZV9jb2RlOiBcImFkbWluX2VudGl0eV9saXN0XCJcclxuICAgIH1cclxufSxcclxue1xyXG4gICAgcGF0aDogXCJlbnRpdHktY3JlYXRlXCIsXHJcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vYWRtaW4tbW9kdWxlL2VudGl0eS9jcmVhdGUvY2lkZS1hZG0tZW50aXR5LmNvbXBvbmVudCcpLnRoZW4oYyA9PiBjLkNpZGVBZG1FbnRpdHlDb21wb25lbnQpLFxyXG4gICAgLy8gY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLFxyXG4gICAgZGF0YToge1xyXG4gICAgICAgIHJldXNlVGFiOiB0cnVlLFxyXG4gICAgICAgIHN5cGdfcGFnZV9jb2RlOiBcImNvcmVfZW50aXR5X2Zvcm1cIlxyXG4gICAgfVxyXG59LFxyXG57XHJcbiAgICBwYXRoOiBcImVudGl0eS1jcmVhdGUvOnF1ZXJ5XCIsXHJcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vYWRtaW4tbW9kdWxlL2VudGl0eS9jcmVhdGUvY2lkZS1hZG0tZW50aXR5LmNvbXBvbmVudCcpLnRoZW4oYyA9PiBjLkNpZGVBZG1FbnRpdHlDb21wb25lbnQpLFxyXG4gICAgLy8gY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLFxyXG4gICAgZGF0YToge1xyXG4gICAgICAgIHJldXNlVGFiOiB0cnVlLFxyXG4gICAgICAgIHN5cGdfcGFnZV9jb2RlOiBcImNvcmVfZW50aXR5X2Zvcm1cIlxyXG4gICAgfVxyXG59XSJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtaWRlLWFkbWluLnJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1hZG1pbi9zcmMvbGliL2Nsb3VkLWlkZS1hZG1pbi5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EscUVBQXFFO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBVyxDQUFDO1FBQ2hDLElBQUksRUFBRSxZQUFZO1FBQ2xCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0VBQWtFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUM7UUFDeEksNEJBQTRCO0tBQy9CO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsWUFBWTtRQUNsQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGtFQUFrRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0tBQzNJO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsYUFBYTtRQUNuQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDJEQUEyRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO1FBQ2hJLDRCQUE0QjtRQUM1QixJQUFJLEVBQUU7WUFDRixRQUFRLEVBQUUsSUFBSTtZQUNkLGNBQWMsRUFBRSxtQkFBbUI7U0FDdEM7S0FDSjtJQUNEO1FBQ0ksSUFBSSxFQUFFLGVBQWU7UUFDckIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUN6SCw0QkFBNEI7UUFDNUIsSUFBSSxFQUFFO1lBQ0YsUUFBUSxFQUFFLElBQUk7WUFDZCxjQUFjLEVBQUUsa0JBQWtCO1NBQ3JDO0tBQ0o7SUFDRDtRQUNJLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUN6SCw0QkFBNEI7UUFDNUIsSUFBSSxFQUFFO1lBQ0YsUUFBUSxFQUFFLElBQUk7WUFDZCxjQUFjLEVBQUUsa0JBQWtCO1NBQ3JDO0tBQ0osQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuLy8gaW1wb3J0IHsgYXV0aEd1YXJkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2FwcC9ndWFyZHMvYXV0aC5ndWFyZCc7XHJcblxyXG5leHBvcnQgY29uc3QgYWRtaW5Sb3V0ZXM6IFJvdXRlcyA9IFt7XHJcbiAgICBwYXRoOiBcImFkbWluLWhvbWVcIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi1tb2R1bGUvaG9tZS9ob21lLXdyYXBwZXIvY2lkZS1hZG0taG9tZS13cmFwcGVyLmNvbXBvbmVudCcpLnRoZW4oYyA9PiBjLkNpZGVBZG1Ib21lV3JhcHBlckNvbXBvbmVudCksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sXHJcbn0sXHJcbntcclxuICAgIHBhdGg6IFwiaG9tZS1hZG1pblwiLFxyXG4gICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2FkbWluLW1vZHVsZS9ob21lL2hvbWUtd3JhcHBlci9jaWRlLWFkbS1ob21lLXdyYXBwZXIuY29tcG9uZW50JykudGhlbihjID0+IGMuQ2lkZUFkbUhvbWVXcmFwcGVyQ29tcG9uZW50KSxcclxufSxcclxue1xyXG4gICAgcGF0aDogXCJlbnRpdHktbGlzdFwiLFxyXG4gICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2FkbWluLW1vZHVsZS9lbnRpdHkvbGlzdC9jaWRlLWFkbS1lbnRpdHktbGlzdC5jb21wb25lbnQnKS50aGVuKGMgPT4gYy5DaWRlQWRtRW50aXR5TGlzdENvbXBvbmVudCksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgcmV1c2VUYWI6IHRydWUsXHJcbiAgICAgICAgc3lwZ19wYWdlX2NvZGU6IFwiYWRtaW5fZW50aXR5X2xpc3RcIlxyXG4gICAgfVxyXG59LFxyXG57XHJcbiAgICBwYXRoOiBcImVudGl0eS1jcmVhdGVcIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi1tb2R1bGUvZW50aXR5L2NyZWF0ZS9jaWRlLWFkbS1lbnRpdHkuY29tcG9uZW50JykudGhlbihjID0+IGMuQ2lkZUFkbUVudGl0eUNvbXBvbmVudCksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgcmV1c2VUYWI6IHRydWUsXHJcbiAgICAgICAgc3lwZ19wYWdlX2NvZGU6IFwiY29yZV9lbnRpdHlfZm9ybVwiXHJcbiAgICB9XHJcbn0sXHJcbntcclxuICAgIHBhdGg6IFwiZW50aXR5LWNyZWF0ZS86cXVlcnlcIixcclxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi1tb2R1bGUvZW50aXR5L2NyZWF0ZS9jaWRlLWFkbS1lbnRpdHkuY29tcG9uZW50JykudGhlbihjID0+IGMuQ2lkZUFkbUVudGl0eUNvbXBvbmVudCksXHJcbiAgICAvLyBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgICAgcmV1c2VUYWI6IHRydWUsXHJcbiAgICAgICAgc3lwZ19wYWdlX2NvZGU6IFwiY29yZV9lbnRpdHlfZm9ybVwiXHJcbiAgICB9XHJcbn1dIl19
@@ -48,11 +48,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
48
48
  ` }]
49
49
  }] });
50
50
 
51
- var cideAdmAdmin_component = /*#__PURE__*/Object.freeze({
52
- __proto__: null,
53
- CideAdmAdminComponent: CideAdmAdminComponent
54
- });
55
-
56
51
  class CideAdmEntityService {
57
52
  constructor() {
58
53
  this.http = inject(HttpClient);
@@ -1820,7 +1815,7 @@ var cideAdmEntityList_component = /*#__PURE__*/Object.freeze({
1820
1815
  // import { authGuard } from '../../../../src/app/guards/auth.guard';
1821
1816
  const adminRoutes = [{
1822
1817
  path: "admin-home",
1823
- loadComponent: () => Promise.resolve().then(function () { return cideAdmAdmin_component; }).then(c => c.CideAdmAdminComponent),
1818
+ loadComponent: () => import('./cloud-ide-admin-cide-adm-home-wrapper.component-Cu0sr3ST.mjs').then(c => c.CideAdmHomeWrapperComponent),
1824
1819
  // canActivate: [authGuard],
1825
1820
  },
1826
1821
  {
@@ -1 +1 @@
1
- {"version":3,"file":"cloud-ide-admin.mjs","sources":["../../../projects/cloud-ide-admin/src/lib/cide-adm-admin.service.ts","../../../projects/cloud-ide-admin/src/lib/cide-adm-admin.component.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/cide-adm-entity.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/general-master-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/pin-code-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/user-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/currency-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/country-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/cide-adm-entity.component.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/cide-adm-entity.component.html","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/list/cide-adm-entity-list.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/list/cide-adm-entity-list.component.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/list/cide-adm-entity-list.component.html","../../../projects/cloud-ide-admin/src/lib/cloud-ide-admin.routes.ts","../../../projects/cloud-ide-admin/src/public-api.ts","../../../projects/cloud-ide-admin/src/cloud-ide-admin.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideAdmAdminService {\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CideLytSharedWrapperComponent, CideLytSharedWrapperSetupParam } from 'cloud-ide-layout';\r\n\r\n@Component({\r\n selector: 'cide-adm-admin',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n cide-adm-admin works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class CideAdmAdminComponent extends CideLytSharedWrapperComponent implements OnInit {\r\n public override shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam> = {\r\n sypg_page_code: \"default_home_adm\"\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit?.();\r\n }\r\n} ","import { Injectable, inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, entityControllerResponse, MEntity, generateStringFromObject } from 'cloud-ide-lms-model';\r\n\r\ninterface DropdownOption { \r\n value: string; \r\n label: string; \r\n}\r\n\r\ninterface EntityData {\r\n [key: string]: string | number | boolean | null | undefined;\r\n}\r\n\r\n@Injectable({ \r\n providedIn: 'root' \r\n})\r\nexport class CideAdmEntityService {\r\n private http = inject(HttpClient);\r\n\r\n getEntityTypes(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/entity-types');\r\n }\r\n\r\n getCurrencies(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/currencies');\r\n }\r\n\r\n getUsers(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/users');\r\n }\r\n\r\n getPostalCodes(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/postal-codes');\r\n }\r\n\r\n /**\r\n * Save entity data using coreRoutesUrl?.entity endpoint\r\n * @param data - Entity data to save\r\n * @param logoFile - Optional logo file\r\n * @returns Observable of the save response\r\n */\r\n saveUpdateEntity(data: EntityData): Observable<entityControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.entity\r\n ]);\r\n \r\n console.log('🏢 ENTITY SERVICE: Making POST request to:', url);\r\n console.log('🏢 ENTITY SERVICE: Data payload:', data);\r\n\r\n \r\n return this.http.post<entityControllerResponse>(url, data);\r\n }\r\n\r\n /**\r\n * Get entity by ID\r\n * @param entityId - ID of the entity to retrieve\r\n * @returns Observable of the entity data\r\n */\r\n getEntityById(entityId: string): Observable<entityControllerResponse> {\r\n const payload: Partial<MEntity> = {\r\n syen_id: entityId\r\n };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.entity,\r\n query\r\n ]);\r\n \r\n return this.http.get<entityControllerResponse>(url);\r\n }\r\n\r\n /**\r\n * Delete entity by ID\r\n * @param entityId - ID of the entity to delete\r\n * @returns Observable of the delete response\r\n */\r\n deleteEntity(entityId: string): Observable<entityControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.entity,\r\n entityId\r\n ]);\r\n \r\n console.log('🏢 ENTITY SERVICE: Making DELETE request to:', url);\r\n \r\n return this.http.delete<entityControllerResponse>(url);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, generalMasterListControllerResponse, hostManagerRoutesUrl } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface MGeneralMaster {\r\n sygmt_code: string;\r\n [key: string]: string | number | boolean | null | undefined;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GeneralMasterSelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get general master data from API\r\n * @param body - MGeneralMaster payload with sygmt_code\r\n * @returns Observable of generalMasterListControllerResponse\r\n */\r\n getGeneralMasterData(body: MGeneralMaster): Observable<generalMasterListControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.generalMaster\r\n ]);\r\n \r\n console.log('🔍 GENERAL MASTER SERVICE: Making API call to:', url);\r\n console.log('🔍 GENERAL MASTER SERVICE: Payload:', body);\r\n \r\n return this.http.post(url, body) as Observable<generalMasterListControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get general master data by code\r\n * @param code - The general master code\r\n * @returns Observable of generalMasterListControllerResponse\r\n */\r\n getGeneralMasterByCode(code: string): Observable<generalMasterListControllerResponse> {\r\n const payload: MGeneralMaster = {\r\n sygmt_code: code\r\n };\r\n return this.getGeneralMasterData(payload);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, MPinCodeSelect, pinCodeSelectControllerResponse } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PinCodeSelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get pin code data from API\r\n * @param body - MPinCodeSelect payload with sypin_pincode\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n getPinCodeData(body: MPinCodeSelect): Observable<pinCodeSelectControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.pinCode\r\n ]);\r\n \r\n console.log('🔍 PIN CODE SERVICE: Making API call to:', url);\r\n console.log('🔍 PIN CODE SERVICE: Payload:', body);\r\n \r\n return this.http.post(url, body) as Observable<pinCodeSelectControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get pin code data by pincode\r\n * @param pincode - The pin code to search for\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n getPinCodeByCode(pincode: string): Observable<pinCodeSelectControllerResponse> {\r\n const payload: MPinCodeSelect = {\r\n sypin_pincode: pincode\r\n };\r\n return this.getPinCodeData(payload);\r\n }\r\n\r\n /**\r\n * Get all postal codes\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n getAllPostalCodes(): Observable<pinCodeSelectControllerResponse> {\r\n const payload: MPinCodeSelect = { sypin_pincode: '440022'};\r\n return this.getPinCodeData(payload);\r\n }\r\n\r\n /**\r\n * Search pin codes with partial match\r\n * @param searchTerm - Partial pin code or area name to search\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n searchPinCodes(payload: MPinCodeSelect): Observable<pinCodeSelectControllerResponse> {\r\n return this.getPinCodeData(payload);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, userRoutesUrl, hostManagerRoutesUrl, userSelectControllerResponse, MUserSelect } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserSelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get user data from API\r\n * @param body - MUserSelect payload\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n getUserData(body: MUserSelect): Observable<userSelectControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n userRoutesUrl.module, \r\n userRoutesUrl?.user\r\n ]);\r\n \r\n console.log('🔍 USER SELECT SERVICE: Making API call to:', url);\r\n console.log('🔍 USER SELECT SERVICE: Payload:', body);\r\n \r\n return this.http.post(url, body) as Observable<userSelectControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get all users\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n getAllUsers(): Observable<userSelectControllerResponse> {\r\n const payload: MUserSelect = { };\r\n return this.getUserData(payload);\r\n }\r\n\r\n /**\r\n * Search users by full name\r\n * @param userFullname - The user full name to search for\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n searchUsersByFullname(payload: Partial<MUserSelect>): Observable<userSelectControllerResponse> {\r\n return this.getUserData(payload);\r\n }\r\n\r\n /**\r\n * Search users with filters\r\n * @param filters - Filter parameters for user search\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n searchUsers(filters: Partial<MUserSelect>): Observable<userSelectControllerResponse> {\r\n const payload: MUserSelect = { ...filters };\r\n return this.getUserData(payload);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, currencyListControllerResponse, MSycrList, generateStringFromObject } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CurrencySelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get currency data from API\r\n * @returns Observable of currencyListControllerResponse\r\n */\r\n getAllCurrencies(body: Partial<MSycrList>): Observable<currencyListControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.currency,\r\n query\r\n ]);\r\n \r\n console.log('🔍 CURRENCY SERVICE: Making API call to:', url);\r\n \r\n return this.http.get(url) as Observable<currencyListControllerResponse>;\r\n }\r\n\r\n /**\r\n * Search currencies with filters\r\n * @param filters - MSycrList payload for filtering\r\n * @returns Observable of currencyListControllerResponse\r\n */\r\n searchCurrencies(filters: MSycrList): Observable<currencyListControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.currency\r\n ]);\r\n \r\n console.log('🔍 CURRENCY SERVICE: Making search API call to:', url);\r\n console.log('🔍 CURRENCY SERVICE: Filters:', filters);\r\n \r\n return this.http.post(url, filters) as Observable<currencyListControllerResponse>;\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, countryListControllerResponse, generateStringFromObject, hostManagerRoutesUrl, MSyctrList } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CountrySelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get country data from API\r\n * @returns Observable of country response\r\n */\r\n getAllCountries(body: Partial<MSyctrList>): Observable<countryListControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl.country,\r\n query\r\n ]);\r\n \r\n console.log('🔍 COUNTRY SERVICE: Making API call to:', url);\r\n \r\n return this.http.get(url);\r\n }\r\n} ","import { Component, signal, OnInit, inject, OnDestroy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { CideAdmEntityService } from './cide-adm-entity.service';\nimport { CideInputComponent, CideSelectComponent, CideEleTabComponent, TabItem, CideEleButtonComponent } from 'cloud-ide-element';\nimport { CideEleFileInputComponent, CideTextareaComponent } from 'cloud-ide-element';\nimport { GeneralMasterSelectService } from './general-master-select.service';\nimport { PinCodeSelectService } from './pin-code-select.service';\nimport { UserSelectService } from './user-select.service';\nimport { CurrencySelectService } from './currency-select.service';\nimport { CountrySelectService } from './country-select.service';\nimport { CommonSelect, IUser, userSelectControllerResponse, pinCodeSelectControllerResponse, currencyListControllerResponse, ICoreSycr, countryListControllerResponse, ICoreSyctr, ICoreSypin, selectSearchType, MPinCodeSelect, MSyctrList, MUserSelect, entityControllerResponse, entityResponseData, generateObjectFromString, generalMasterListControllerResponse, ICoreSygms } from 'cloud-ide-lms-model';\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\n\n\ninterface DropdownOption {\n value: string;\n label: string;\n}\n\n// Interface for pin code data structure with additional fields\ninterface PinCodeData extends ICoreSypin {\n value?: string;\n label?: string;\n}\n\n@Component({\n selector: 'cide-adm-entity',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideEleFileInputComponent,\n CideEleTabComponent,\n CideEleButtonComponent\n ],\n templateUrl: './cide-adm-entity.component.html',\n styleUrl: './cide-adm-entity.component.scss'\n})\nexport class CideAdmEntityComponent implements OnInit, OnDestroy {\n // Reactive form\n entityForm: FormGroup;\n\n entityTypes = signal<DropdownOption[]>([]);\n currencies = signal<DropdownOption[]>([]);\n users = signal<DropdownOption[]>([]);\n postalCodes = signal<DropdownOption[]>([]);\n photoIdDocuments = signal<DropdownOption[]>([]);\n countries = signal<DropdownOption[]>([]);\n\n // Store the full pin code data for auto-population\n private pinCodeDataMap = new Map<string, PinCodeData>();\n \n // Store logo file for upload\n private logoFile?: File;\n\n loading = signal(false);\n error = signal<string | null>(null);\n success = signal<string | null>(null);\n\n // Loading states for individual dropdowns\n postalCodesLoading = signal(false);\n usersLoading = signal(false);\n countriesLoading = signal(false);\n\n // Entity mode and ID\n isEditMode = signal(false);\n entityId = signal<string | null>(null);\n\n // Tab configuration\n activeTab = signal('basic');\n entityTabs = signal<TabItem[]>([\n { id: 'basic', label: 'Basic Information', icon: 'ℹ️' },\n { id: 'corporate', label: 'Corporate Address', icon: '🏢' },\n { id: 'contact', label: 'Contact Information', icon: '📧' },\n { id: 'registered', label: 'Registered Address', icon: '🏠' },\n { id: 'documents', label: 'Documents & Media', icon: '📄' }\n ]);\n\n // Modern dependency injection using inject()\n private entityService = inject(CideAdmEntityService);\n private generalMasterService = inject(GeneralMasterSelectService);\n private pinCodeService = inject(PinCodeSelectService);\n private userService = inject(UserSelectService);\n private currencyService = inject(CurrencySelectService);\n private countryService = inject(CountrySelectService);\n private fb = inject(FormBuilder);\n private route = inject(ActivatedRoute);\n\n private destroy$ = new Subject<void>();\n private globalErrorHandler?: (event: ErrorEvent) => void;\n private globalRejectionHandler?: (event: PromiseRejectionEvent) => void;\n\n constructor() {\n this.entityForm = this.fb.group({\n // Basic Information\n syen_name: ['', [Validators.required]],\n syen_entity_code: ['', [Validators.required, Validators.maxLength(40)]],\n syen_entity_type_gmst: ['', [Validators.required]],\n syen_udise_no: [''],\n syen_affiliation_no: [''],\n syen_isactive: [true],\n\n // Corporate Address\n syen_corporate_address: [''],\n syen_corporate_city_sypin: [''],\n syen_corporate_state_sypin: [''],\n syen_corporate_country_syctr: [''],\n syen_corporate_pin_sypin: [''],\n\n // Contact Information\n syen_corporate_contact_person_user: [''],\n syen_corporate_phone: [''],\n syen_corporate_phone_alt: [''],\n syen_corporate_fax: [''],\n syen_corporate_email: ['', [Validators.email]],\n syen_corporate_email_alt: ['', [Validators.email]],\n syen_website: ['', [Validators.pattern(/^https?:\\/\\/.+/)]],\n syen_currency_sycr: [''],\n\n // Registered Address\n syen_registered_address: [''],\n syen_registered_city_sypin: [''],\n syen_registered_state_sypin: [''],\n syen_registered_country_syctr: [''],\n syen_registered_pin_sypin: [''],\n syen_registered_contact_person_user: [''],\n syen_registered_phone: [''],\n syen_registered_email: ['', [Validators.email]],\n syen_registered_fax: [''],\n\n // Documents\n syen_photo_id_cyfm: ['']\n });\n\n // Listen for postal code changes to auto-populate address fields\n this.setupPostalCodeListeners();\n }\n\n ngOnInit() {\n // Add global error handler to catch any unhandled errors\n const errorHandler = (event: ErrorEvent) => {\n console.error('💥 GLOBAL ERROR:', event.error);\n };\n\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n console.error('💥 UNHANDLED PROMISE REJECTION:', event.reason);\n };\n\n window.addEventListener('error', errorHandler);\n window.addEventListener('unhandledrejection', rejectionHandler);\n\n // Store handlers for cleanup\n this.globalErrorHandler = errorHandler;\n this.globalRejectionHandler = rejectionHandler;\n\n // Check for entity ID in query parameters\n this.checkForEntityId();\n \n this.loadDropdowns();\n }\n\n ngOnDestroy(): void {\n // Clean up global event listeners\n if (this.globalErrorHandler) {\n window.removeEventListener('error', this.globalErrorHandler);\n }\n if (this.globalRejectionHandler) {\n window.removeEventListener('unhandledrejection', this.globalRejectionHandler);\n }\n\n // Clean up RxJS subscriptions\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // Check for entity ID in query parameters\n private checkForEntityId() {\n console.log('🔍 Checking for entity ID in query parameters', this.route.params);\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(params => {\n console.log('🔍 Query params:', params);\n // Check for entityId, id, or entity parameter\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n // If entityId is an object string (from generateStringFromObject), try to parse it\n const entityId = queryData.syen_id;\n if (entityId) {\n console.log('🔍 Entity ID found in query params:', entityId);\n this.entityId.set(entityId);\n this.isEditMode.set(true);\n this.loadEntityData(entityId);\n } else {\n console.log('🆕 No entity ID found - creating new entity');\n this.isEditMode.set(false);\n this.entityId.set(null);\n }\n });\n }\n\n // Load entity data for editing\n private loadEntityData(entityId: string) {\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📥 Loading entity data for ID:', entityId);\n\n this.entityService.getEntityById(entityId).pipe(\n takeUntil(this.destroy$)\n ).subscribe({\n next: (response: entityControllerResponse) => {\n console.log('✅ Entity data loaded:', response);\n \n if (response?.success && response?.data) {\n // Handle both array and single object responses\n const entityData = Array.isArray(response.data) ? response.data[0] : response.data;\n if (entityData) {\n this.populateFormWithEntityData(entityData);\n this.success.set('Entity data loaded successfully');\n } else {\n this.error.set('Entity data not found');\n console.error('❌ Entity data not found in response:', response);\n }\n } else {\n this.error.set('Failed to load entity data');\n console.error('❌ Entity data response invalid:', response);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('❌ Failed to load entity data:', err);\n \n let errorMessage = 'Failed to load entity data.';\n \n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 404) {\n errorMessage = 'Entity not found.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n \n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n }\n\n // Populate form with entity data\n private populateFormWithEntityData(entityData: entityResponseData) {\n try {\n console.log('📝 Populating form with entity data:', entityData);\n\n // Map the entity data to form controls - only use properties that exist in entityResponseData\n const formData = {\n // Basic Information\n syen_name: entityData.syen_name || '',\n syen_entity_code: entityData.syen_entity_code || '',\n syen_entity_type_gmst: entityData.syen_entity_type_gmst || '',\n syen_isactive: entityData.syen_isactive !== undefined ? entityData.syen_isactive : true,\n\n // Contact Information (only properties that exist in entityResponseData)\n syen_corporate_contact_person_user: entityData.syen_corporate_contact_person_user || '',\n syen_corporate_phone: entityData.syen_corporate_phone || '',\n syen_corporate_email: entityData.syen_corporate_email || '',\n\n // Set default values for other fields since they're not in entityResponseData\n syen_udise_no: entityData.syen_udise_no || '',\n syen_affiliation_no: entityData.syen_affiliation_no || '',\n syen_corporate_address: entityData.syen_corporate_address || '',\n syen_corporate_city_sypin: entityData.syen_corporate_city_sypin || '',\n syen_corporate_state_sypin: entityData.syen_corporate_state_sypin || '',\n syen_corporate_country_syctr: entityData.syen_corporate_country_syctr || '',\n syen_corporate_pin_sypin: entityData.syen_corporate_pin_sypin || '',\n syen_corporate_phone_alt: entityData.syen_corporate_phone_alt || '',\n syen_corporate_fax: entityData.syen_corporate_fax || '',\n syen_corporate_email_alt: entityData.syen_corporate_email_alt || '',\n syen_website: entityData.syen_website || '',\n syen_currency_sycr: entityData.syen_currency_sycr || '',\n syen_registered_address: entityData.syen_registered_address || '',\n syen_registered_city_sypin: entityData.syen_registered_city_sypin || '' ,\n syen_registered_state_sypin: entityData.syen_registered_state_sypin || '',\n syen_registered_country_syctr: entityData.syen_registered_country_syctr || '',\n syen_registered_pin_sypin: entityData.syen_registered_pin_sypin || '',\n syen_registered_contact_person_user: entityData.syen_registered_contact_person_user || '',\n syen_registered_phone: entityData.syen_registered_phone || '',\n syen_registered_email: entityData.syen_registered_email || '',\n syen_registered_fax: entityData.syen_registered_fax || '',\n syen_photo_id_cyfm: entityData.syen_photo_id_cyfm || ''\n };\n\n // Patch the form with the entity data\n this.entityForm.patchValue(formData, { emitEvent: false });\n\n console.log('✅ Form populated successfully');\n } catch (error) {\n console.error('💥 Error populating form with entity data:', error);\n this.error.set('Error loading entity data into form');\n }\n }\n\n // Setup listeners for postal code changes\n private setupPostalCodeListeners() {\n // Corporate postal code listener\n this.entityForm.get('syen_corporate_pin_sypin')?.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(pinCodeId => {\n if (pinCodeId) {\n this.populateAddressFromPinCode(pinCodeId, 'corporate');\n }\n });\n\n // Registered postal code listener\n this.entityForm.get('syen_registered_pin_sypin')?.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(pinCodeId => {\n if (pinCodeId) {\n this.populateAddressFromPinCode(pinCodeId, 'registered');\n }\n });\n }\n\n // Auto-populate address fields based on selected postal code\n private populateAddressFromPinCode(pinCodeId: string, addressType: 'corporate' | 'registered') {\n const pinCodeData = this.pinCodeDataMap.get(pinCodeId);\n console.log('🔍 Pin Code Data:', pinCodeData);\n if (!pinCodeData) {\n console.warn(`Pin code data not found for ID: ${pinCodeId}`);\n return;\n }\n\n const prefix = addressType === 'corporate' ? 'syen_corporate' : 'syen_registered';\n\n // Populate city, state, and country fields\n this.entityForm.patchValue({\n [`${prefix}_city_sypin`]: pinCodeData.sypin_district || '',\n [`${prefix}_state_sypin`]: pinCodeData.sypin_state_name || '',\n [`${prefix}_country_syctr`]: pinCodeData.sypin_country_id_syctr || ''\n }, { emitEvent: false });\n\n console.log(`📍 Auto-populated ${addressType} address from pin code:`, {\n city: pinCodeData.sypin_district,\n state: pinCodeData.sypin_state_name,\n country: pinCodeData.sypin_country_id_syctr\n });\n }\n\n loadDropdowns() {\n try {\n console.log('🚀 Loading dropdowns...');\n\n // Load entity types via general master service\n this.generalMasterService.getGeneralMasterByCode('core_entity_type').subscribe({\n next: (response) => {\n try {\n console.log('✅ Entity types response:', response);\n const types = this.transformGeneralMasterToDropdown(response);\n this.entityTypes.set(types);\n console.log('📋 Loaded entity types:', types.length);\n } catch (error) {\n console.error('💥 Entity types transform error:', error);\n this.entityTypes.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load entity types:', err);\n this.entityTypes.set([]);\n }\n });\n\n // Load currencies via currency service\n this.currencyService.getAllCurrencies({}).subscribe({\n next: (response) => {\n try {\n console.log('✅ Currencies response:', response);\n const currencies = this.transformCurrencyToDropdown(response);\n this.currencies.set(currencies);\n console.log('💰 Loaded currencies:', currencies.length);\n } catch (error) {\n console.error('💥 Currencies transform error:', error);\n this.currencies.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load currencies:', err);\n this.currencies.set([]);\n }\n });\n\n // Load users via user service\n this.userService.getAllUsers().subscribe({\n next: (response) => {\n try {\n console.log('✅ Users response:', response);\n const users = this.transformUserToDropdown(response);\n this.users.set(users);\n console.log('👥 Loaded users:', users.length);\n } catch (error) {\n console.error('💥 Users transform error:', error);\n this.users.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load users:', err);\n this.users.set([]);\n }\n });\n\n // Load postal codes via pin code service\n this.pinCodeService.getAllPostalCodes().subscribe({\n next: (response) => {\n try {\n console.log('✅ Postal codes response:', response);\n const postalCodes = this.transformPinCodeToDropdown(response);\n this.postalCodes.set(postalCodes);\n console.log('📮 Loaded postal codes:', postalCodes.length);\n } catch (error) {\n console.error('💥 Postal codes transform error:', error);\n this.postalCodes.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load postal codes:', err);\n this.postalCodes.set([]);\n }\n });\n\n // Load photo ID documents via general master service\n this.generalMasterService.getGeneralMasterByCode('core_photo_id_document').subscribe({\n next: (response) => {\n try {\n console.log('✅ Photo ID documents response:', response);\n const documents = this.transformGeneralMasterToDropdown(response);\n this.photoIdDocuments.set(documents);\n console.log('📄 Loaded photo ID documents:', documents.length);\n } catch (error) {\n console.error('💥 Photo ID documents transform error:', error);\n this.photoIdDocuments.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load photo ID documents:', err);\n // Fallback to static data\n this.photoIdDocuments.set([\n { value: 'passport', label: 'Passport' },\n { value: 'license', label: 'Driver License' },\n { value: 'national_id', label: 'National ID' },\n { value: 'voter_id', label: 'Voter ID' },\n { value: 'other', label: 'Other' }\n ]);\n }\n });\n\n // Load countries via country service\n this.countryService.getAllCountries({}).subscribe({\n next: (response) => {\n try {\n console.log('✅ Countries response:', response);\n const countries = this.transformCountryToDropdown(response);\n this.countries.set(countries);\n console.log('🌍 Loaded countries:', countries.length);\n } catch (error) {\n console.error('💥 Countries transform error:', error);\n this.countries.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load countries:', err);\n this.countries.set([]);\n }\n });\n } catch (error) {\n console.error('💥 LOADDROPDOWNS EXCEPTION:', error);\n }\n }\n\n // Helper method to transform general master response to dropdown options\n private transformGeneralMasterToDropdown(response: generalMasterListControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n\n let dataArray: ICoreSygms[] = [];\n\n // Handle different response structures - all general master data is in core_general_master\n if (Array.isArray(response.data)) {\n dataArray = response.data;\n }\n\n return dataArray.map((item: ICoreSygms, index: number) => {\n return {\n // API response already includes value and label fields\n value: (item as { value?: string }).value || item._id || `value_${index}`,\n label: (item as { label?: string }).label || item.sygms_title || 'Untitled'\n };\n });\n }\n\n // Helper method to transform currency response to dropdown options\n private transformCurrencyToDropdown(response: currencyListControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n\n console.log('🔍 Currency Response:', response);\n\n // Handle different response structures\n let dataArray: ICoreSycr[] = [];\n\n if (Array.isArray(response.data)) {\n dataArray = response.data;\n }\n\n return dataArray.map((item: ICoreSycr) => {\n return {\n value: item._id,\n label: `${item.sycr_code} - ${item.sycr_name} (${item.sycr_symbol})`\n };\n });\n }\n\n // Helper method to transform user response to dropdown options\n private transformUserToDropdown(response: userSelectControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n\n let dataArray: (CommonSelect & IUser)[] = [];\n\n // Handle different response structures\n if (response.data.auth_user_mst) {\n dataArray = response.data.auth_user_mst;\n } else if (Array.isArray(response.data)) {\n dataArray = response.data;\n }\n\n return dataArray.map((item: CommonSelect & IUser) => {\n return {\n value: item._id || \"\",\n label: item?.user_fullname || \"\"\n };\n });\n }\n\n // Helper method to transform pin code response to dropdown options\n private transformPinCodeToDropdown(response: pinCodeSelectControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n let dataArray: PinCodeData[] = [];\n\n // Handle different response structures\n if ('core_pin_code' in response.data && response.data.core_pin_code) {\n dataArray = response.data.core_pin_code;\n }\n\n // Clear the data map and rebuild it\n this.pinCodeDataMap.clear();\n\n return dataArray.map((item: PinCodeData) => {\n const pinCodeId = String(item._id);\n // Store the full pin code data for auto-population\n this.pinCodeDataMap.set(pinCodeId, item);\n\n // API response already includes value and label fields\n return {\n value: pinCodeId,\n label: `${item.sypin_pincode} - ${item.sypin_office_name || 'Unknown Office'}`\n };\n });\n }\n\n // Helper method to transform country response to dropdown options\n private transformCountryToDropdown(response: countryListControllerResponse): DropdownOption[] {\n try {\n if (!response?.success || !response?.data) {\n console.warn('⚠️ Country response missing success or data:', response);\n return [];\n }\n\n console.log('🔍 Country Response:', response);\n\n let dataArray: ICoreSyctr[] = [];\n\n // Handle different response structures\n if (Array.isArray(response.data)) {\n dataArray = response.data;\n } else if (response.data) {\n dataArray = response.data;\n }\n\n console.log('🔍 Country data array length:', dataArray.length);\n\n return dataArray.map((item: ICoreSyctr) => {\n return {\n value: item._id || \"\",\n label: `${item.syctr_country_iso_name || 'Unknown'} (${item.syctr_country_iso_code_two_char || 'XX'})`\n };\n });\n } catch (error) {\n console.error('💥 COUNTRY TRANSFORM EXCEPTION:', error);\n return [];\n }\n }\n\n // Helper method to get form control\n getControl(controlName: string) {\n return this.entityForm.get(controlName);\n }\n\n // Handle postal code search with debouncing\n onPostalCodeSearch(event: selectSearchType) {\n try {\n console.log('🔍 POSTAL CODE SEARCH EVENT:', event);\n\n // Set loading state\n this.postalCodesLoading.set(true);\n\n const payload: MPinCodeSelect = {\n sypin_pincode: event.query || \"\",\n sypin_id: event.value as string || \"\"\n };\n console.log('🔍 POSTAL CODE PAYLOAD:', payload);\n\n this.pinCodeService.searchPinCodes(payload).pipe(\n takeUntil(this.destroy$)\n ).subscribe({\n next: (response) => {\n console.log('✅ POSTAL CODE SEARCH SUCCESS:', response);\n const postalCodes = this.transformPinCodeToDropdown(response);\n this.postalCodes.set(postalCodes);\n console.log('📮 Updated postal codes count:', postalCodes.length);\n },\n error: (err) => {\n console.error('❌ POSTAL CODE SEARCH ERROR:', err);\n this.postalCodes.set([]);\n },\n complete: () => {\n // Clear loading state\n this.postalCodesLoading.set(false);\n }\n });\n } catch (error) {\n console.error('💥 POSTAL CODE SEARCH EXCEPTION:', error);\n this.postalCodes.set([]);\n this.postalCodesLoading.set(false);\n }\n }\n\n // Handle user search\n onUserSearch(event: selectSearchType) {\n try {\n console.log('🔍 USER SEARCH EVENT:', event);\n \n // Set loading state\n this.usersLoading.set(true);\n \n const payload: Partial<MUserSelect> = {\n user_fullname: event?.query || \"\",\n user_id: event?.value as string || \"\",\n }\n console.log('🔍 USER SEARCH PAYLOAD:', payload);\n\n this.userService.searchUsersByFullname(payload).subscribe({\n next: (response) => {\n console.log('✅ USER SEARCH SUCCESS:', response);\n const users = this.transformUserToDropdown(response);\n this.users.set(users);\n console.log('👥 Updated users count:', users.length);\n },\n error: (err) => {\n console.error('❌ USER SEARCH ERROR:', err);\n this.users.set([]);\n },\n complete: () => {\n // Clear loading state\n this.usersLoading.set(false);\n }\n });\n } catch (error) {\n console.error('💥 USER SEARCH EXCEPTION:', error);\n this.users.set([]);\n this.usersLoading.set(false);\n }\n }\n\n // Handle country search\n onCountrySearch(event: selectSearchType) {\n try {\n console.log('🔍 COUNTRY SEARCH EVENT:', event);\n \n // Set loading state\n this.countriesLoading.set(true);\n \n const payload: Partial<MSyctrList> = {\n query: event.query,\n syctr_id: event.value as string,\n }\n console.log('🔍 COUNTRY SEARCH PAYLOAD:', payload);\n\n this.countryService.getAllCountries(payload).subscribe({\n next: (response) => {\n console.log('✅ COUNTRY SEARCH SUCCESS:', response);\n const countries = this.transformCountryToDropdown(response);\n this.countries.set(countries);\n console.log('🌍 Updated countries count:', countries.length);\n },\n error: (err) => {\n console.error('❌ COUNTRY SEARCH ERROR:', err);\n this.countries.set([]);\n },\n complete: () => {\n // Clear loading state\n this.countriesLoading.set(false);\n }\n });\n } catch (error) {\n console.error('💥 COUNTRY SEARCH EXCEPTION:', error);\n this.countries.set([]);\n this.countriesLoading.set(false);\n }\n }\n\n // Handle postal code selection\n onPostalCodeSelection(event: Event | string) {\n let pinCodeId = '';\n if (typeof event === 'string') {\n pinCodeId = event;\n } else {\n const target = event.target as HTMLSelectElement;\n pinCodeId = target?.value || '';\n }\n console.log('📍 Postal Code Selected:', pinCodeId);\n // The auto-population is handled by the form value change listeners\n // This method can be used for additional logic if needed\n }\n\n // Check if a field has an error\n hasError(controlName: string, errorType?: string): boolean {\n const control = this.getControl(controlName);\n if (!control) return false;\n\n if (errorType) {\n return control.hasError(errorType) && (control.dirty || control.touched);\n }\n return control.invalid && (control.dirty || control.touched);\n }\n\n // Get error message for a field\n getErrorMessage(controlName: string): string {\n const control = this.getControl(controlName);\n if (!control || !control.errors) return '';\n\n const fieldName = controlName.replace('syen_', '').replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n\n if (control.hasError('required')) {\n return `${fieldName} is required`;\n }\n if (control.hasError('maxlength')) {\n return `Maximum length is ${control.errors['maxlength'].requiredLength} characters`;\n }\n if (control.hasError('email')) {\n return 'Please enter a valid email address';\n }\n if (control.hasError('pattern')) {\n return 'Please enter a valid URL starting with http:// or https://';\n }\n return 'Invalid input';\n }\n\n // Get form validation summary\n getFormValidationSummary(): string[] {\n const errors: string[] = [];\n Object.keys(this.entityForm.controls).forEach(key => {\n const control = this.entityForm.get(key);\n if (control && control.invalid && (control.dirty || control.touched)) {\n errors.push(this.getErrorMessage(key));\n }\n });\n return errors;\n }\n\n // Check if form is valid\n get isFormValid(): boolean {\n return this.entityForm.valid;\n }\n\n // Get current mode for display\n get currentMode(): string {\n return this.isEditMode() ? 'Edit' : 'Create';\n }\n\n // Get current entity ID for display\n get currentEntityId(): string | null {\n return this.entityId();\n }\n\n onFileChange(event: FileList | null) {\n if (event && event.length > 0) {\n this.logoFile = event[0];\n console.log('�� Logo File Selected:', this.logoFile.name);\n } else {\n this.logoFile = undefined;\n console.log('📄 No logo file selected.');\n }\n }\n\n onTabChange(tab: TabItem) {\n this.activeTab.set(tab.id);\n }\n\n onSubmit() {\n if (this.entityForm.valid) {\n this.loading.set(true);\n this.error.set(null);\n this.success.set(null);\n\n const formData = this.entityForm.value;\n const isEdit = this.isEditMode();\n const entityId = this.entityId();\n\n console.log(`🏢 ENTITY ${isEdit ? 'UPDATE' : 'CREATE'}: Form data:`, formData);\n\n // Validate required fields before submission\n const requiredFields = ['syen_name', 'syen_entity_code', 'syen_entity_type_gmst'];\n const missingFields = requiredFields.filter(field => !formData[field]);\n \n if (missingFields.length > 0) {\n this.error.set(`Missing required fields: ${missingFields.join(', ')}`);\n this.loading.set(false);\n return;\n }\n\n // Add entity ID to form data if in edit mode\n if (isEdit && entityId) {\n formData._id = entityId;\n }\n\n const saveOperation = this.entityService.saveUpdateEntity(formData);\n\n saveOperation.pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response) => {\n console.log(`✅ ENTITY ${isEdit ? 'UPDATE' : 'CREATE'} SUCCESS:`, response);\n \n if (response?.success) {\n const successMessage = isEdit \n ? 'Entity updated successfully!' \n : 'Entity created successfully!';\n this.success.set(successMessage);\n \n // Update the entity ID if it's a new entity\n if (!isEdit && response?.data) {\n const entityData = Array.isArray(response.data) ? response.data[0] : response.data;\n if (entityData?._id) {\n this.entityId.set(entityData._id);\n this.isEditMode.set(true);\n }\n }\n \n // Optionally redirect to list or stay on form\n // this.router.navigate(['/admin/entities']);\n } else {\n this.error.set(response?.message || `Failed to ${isEdit ? 'update' : 'create'} entity. Please try again.`);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error(`❌ ENTITY ${isEdit ? 'UPDATE' : 'CREATE'} ERROR:`, err);\n \n let errorMessage = `Failed to ${isEdit ? 'update' : 'save'} entity settings.`;\n \n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 400) {\n errorMessage = 'Invalid data provided. Please check your input.';\n } else if (err?.status === 404 && isEdit) {\n errorMessage = 'Entity not found. It may have been deleted.';\n } else if (err?.status === 409) {\n errorMessage = 'Entity with this code already exists. Please use a different code.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n \n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n } else {\n // Mark all fields as touched to show validation errors\n this.entityForm.markAllAsTouched();\n \n const validationErrors = this.getFormValidationSummary();\n console.warn('⚠️ FORM VALIDATION ERRORS:', validationErrors);\n \n this.error.set(`Please fix the following errors: ${validationErrors.join(', ')}`);\n }\n }\n\n onReset() {\n // Clear logo file\n this.logoFile = undefined;\n \n // Reset form to initial values\n this.entityForm.reset({\n syen_name: '',\n syen_entity_type_gmst: '',\n syen_entity_code: '',\n syen_udise_no: '',\n syen_affiliation_no: '',\n syen_isactive: true,\n syen_corporate_address: '',\n syen_corporate_pin_sypin: '',\n syen_corporate_city_sypin: '',\n syen_corporate_state_sypin: '',\n syen_corporate_country_syctr: '',\n syen_corporate_contact_person_user: '',\n syen_corporate_phone: '',\n syen_corporate_phone_alt: '',\n syen_corporate_fax: '',\n syen_corporate_email: '',\n syen_corporate_email_alt: '',\n syen_website: '',\n syen_currency_sycr: '',\n syen_registered_address: '',\n syen_registered_pin_sypin: '',\n syen_registered_city_sypin: '',\n syen_registered_state_sypin: '',\n syen_registered_country_syctr: '',\n syen_registered_contact_person_user: '',\n syen_registered_phone: '',\n syen_registered_fax: '',\n syen_registered_email: '',\n syen_photo_id_cyfm: ''\n });\n \n this.success.set(null);\n this.error.set(null);\n console.log('🔄 Form reset completed');\n }\n} ","<!-- \n DYNAMIC GRID SYSTEM FEATURES:\n \n Basic Grids: grid-1, grid-2, grid-3, grid-4, grid-5, grid-6\n \n Auto-fit Grids: grid-auto-fit-sm/md/lg/xl (dynamic columns based on content)\n Auto-fill Grids: grid-auto-fill-sm/md/lg (always fill available space)\n \n Custom Ratios: grid-ratio-1-2, grid-ratio-2-1, grid-ratio-1-3, grid-ratio-3-1, etc.\n Fractional: grid-quarter-three, grid-third-two, grid-half-half\n \n Gap Control: gap-xs, gap-sm, gap-md, gap-lg, gap-xl\n Specific Gaps: row-gap-xs/sm/md/lg, col-gap-xs/sm/md/lg\n \n Alignment: align-start/center/end/stretch, justify-start/center/end/stretch\n \n Responsive: xl-grid-*, lg-grid-*, md-grid-*, sm-grid-*, xs-grid-*\n \n Grid Items: span-1/2/3/4/5/6/full, row-span-*, start-*, end-*\n Item Alignment: self-start/center/end/stretch, justify-self-*\n \n Special: grid-dense (auto-fills gaps), grid-masonry (masonry layout)\n-->\n\n<div class=\"entity-form-container\">\n <form class=\"entity-form\" [formGroup]=\"entityForm\" [class.loading]=\"loading()\" (ngSubmit)=\"onSubmit()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">Create New Entity</h2>\n <p class=\"form-subtitle\">Add a new educational institution to the system</p>\n </div>\n\n <!-- Success and Error Messages -->\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n {{ success() }}\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n {{ error() }}\n </div>\n }\n\n <!-- Tab Navigation -->\n <div class=\"form-tabs\">\n <cide-ele-tab \n [tabs]=\"entityTabs()\"\n [activeTabId]=\"activeTab()\"\n size=\"md\"\n variant=\"default\"\n (tabChange)=\"onTabChange($event)\">\n </cide-ele-tab>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\"\n [class.loading]=\"loading()\">\n @switch (activeTab()) {\n \n @case ('basic') {\n <!-- Basic Information Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-auto-fit-md gap-md lg-grid-2 md-grid-1\">\n <div class=\"grid-item span-2 md-span-full\">\n <cide-ele-input \n id=\"syen_name\" \n type=\"text\"\n label=\"Institution Name\" \n formControlName=\"syen_name\"\n placeholder=\"Enter full institution name\">\n </cide-ele-input>\n </div>\n \n <cide-ele-input \n label=\"Institution Code\" \n formControlName=\"syen_entity_code\"\n id=\"syen_entity_code\"\n placeholder=\"Enter unique code (max 40 characters)\">\n </cide-ele-input>\n </div>\n\n <div class=\"grid grid-ratio-2-1-1 gap-md lg-grid-3 md-grid-2 sm-grid-1\">\n <cide-ele-select \n label=\"Entity Type\" \n [options]=\"entityTypes()\" \n formControlName=\"syen_entity_type_gmst\"\n placeholder=\"Select entity type\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"UDISE Number\" \n formControlName=\"syen_udise_no\"\n placeholder=\"Enter UDISE number\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Affiliation Number\" \n formControlName=\"syen_affiliation_no\"\n placeholder=\"Enter affiliation number\">\n </cide-ele-input>\n </div>\n\n <div class=\"grid grid-1 gap-sm\">\n <div class=\"checkbox-field\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n formControlName=\"syen_isactive\"\n class=\"checkbox-input\" />\n <span class=\"checkbox-text\">Active Status</span>\n <span class=\"checkbox-description\">Enable this entity for system operations</span>\n </label>\n </div>\n </div>\n </div>\n }\n\n @case ('corporate') {\n <!-- Corporate Address Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-1 gap-md\">\n <div class=\"grid-item span-full\">\n <cide-ele-textarea \n label=\"Corporate Address\" \n formControlName=\"syen_corporate_address\"\n placeholder=\"Enter complete corporate address\"\n [rows]=\"3\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"grid grid-auto-fit-sm gap-lg xl-grid-4 lg-grid-3 md-grid-2 sm-grid-1 align-end\">\n <cide-ele-select \n label=\"Postal Code\"\n [options]=\"postalCodes()\" \n formControlName=\"syen_corporate_pin_sypin\"\n placeholder=\"Select postal code\"\n [searchable]=\"true\"\n [loading]=\"postalCodesLoading()\"\n (searchChange)=\"onPostalCodeSearch($event)\"\n (selectionChange)=\"onPostalCodeSelection($event)\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"City\" \n formControlName=\"syen_corporate_city_sypin\"\n placeholder=\"Enter city\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"State\" \n formControlName=\"syen_corporate_state_sypin\"\n placeholder=\"Enter state\">\n </cide-ele-input>\n \n <cide-ele-select \n label=\"Country\" \n [options]=\"countries()\" \n formControlName=\"syen_corporate_country_syctr\"\n placeholder=\"Select country\"\n [searchable]=\"true\"\n [loading]=\"countriesLoading()\"\n (searchChange)=\"onCountrySearch($event)\">\n </cide-ele-select>\n </div>\n </div>\n }\n\n @case ('contact') {\n <!-- Contact Information Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-ratio-3-1 gap-lg md-grid-2 sm-grid-1 justify-stretch\">\n <div class=\"grid-item justify-self-stretch\">\n <cide-ele-select \n label=\"Primary Contact Person\"\n [options]=\"users()\" \n formControlName=\"syen_corporate_contact_person_user\"\n placeholder=\"Select contact person\"\n [searchable]=\"true\"\n [loading]=\"usersLoading()\"\n (searchChange)=\"onUserSearch($event)\">\n </cide-ele-select>\n </div>\n \n <div class=\"grid-item justify-self-stretch\">\n <cide-ele-select \n label=\"Currency\" \n [options]=\"currencies()\" \n formControlName=\"syen_currency_sycr\"\n placeholder=\"Select currency\">\n </cide-ele-select>\n </div>\n </div>\n\n <div class=\"grid grid-auto-fill-md gap-md col-gap-lg row-gap-sm xl-grid-3 lg-grid-2 md-grid-1 grid-dense\">\n <cide-ele-input \n label=\"Primary Phone\" \n formControlName=\"syen_corporate_phone\"\n type=\"tel\"\n placeholder=\"Enter phone number\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Alternate Phone\" \n formControlName=\"syen_corporate_phone_alt\"\n type=\"tel\"\n placeholder=\"Enter alternate phone\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Fax Number\" \n formControlName=\"syen_corporate_fax\"\n placeholder=\"Enter fax number\">\n </cide-ele-input>\n </div>\n\n <div class=\"grid grid-ratio-1-2-1 gap-xl lg-grid-3 md-grid-2 sm-grid-1 align-center\">\n <div class=\"grid-item self-stretch\">\n <cide-ele-input \n label=\"Primary Email\" \n formControlName=\"syen_corporate_email\"\n type=\"email\"\n placeholder=\"Enter primary email\">\n </cide-ele-input>\n </div>\n \n <div class=\"grid-item span-2 lg-span-1 self-stretch\">\n <cide-ele-input \n label=\"Website URL\" \n formControlName=\"syen_website\"\n type=\"url\"\n placeholder=\"Enter website URL\">\n </cide-ele-input>\n </div>\n \n <div class=\"grid-item self-stretch\">\n <cide-ele-input \n label=\"Alternate Email\" \n formControlName=\"syen_corporate_email_alt\"\n type=\"email\"\n placeholder=\"Enter alternate email\">\n </cide-ele-input>\n </div>\n </div>\n </div>\n }\n\n @case ('registered') {\n <!-- Registered Address Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-1\">\n <cide-ele-textarea \n label=\"Registered Address\" \n formControlName=\"syen_registered_address\"\n placeholder=\"Enter complete registered address\"\n [rows]=\"3\">\n </cide-ele-textarea>\n </div>\n\n <div class=\"grid grid-4\">\n <cide-ele-select \n label=\"Registered Postal Code\"\n [options]=\"postalCodes()\" \n formControlName=\"syen_registered_pin_sypin\"\n placeholder=\"Select postal code\"\n [searchable]=\"true\"\n [loading]=\"postalCodesLoading()\"\n (searchChange)=\"onPostalCodeSearch($event)\"\n (selectionChange)=\"onPostalCodeSelection($event)\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"Registered City\" \n formControlName=\"syen_registered_city_sypin\"\n placeholder=\"Enter city\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Registered State\" \n formControlName=\"syen_registered_state_sypin\"\n placeholder=\"Enter state\">\n </cide-ele-input>\n \n <cide-ele-select \n label=\"Registered Country\" \n [options]=\"countries()\" \n formControlName=\"syen_registered_country_syctr\"\n placeholder=\"Select country\"\n [searchable]=\"true\"\n [loading]=\"countriesLoading()\"\n (searchChange)=\"onCountrySearch($event)\">\n </cide-ele-select>\n </div>\n\n <div class=\"grid grid-3\">\n <cide-ele-select \n label=\"Registered Contact Person\"\n [options]=\"users()\" \n formControlName=\"syen_registered_contact_person_user\"\n placeholder=\"Select contact person\"\n [searchable]=\"true\"\n [loading]=\"usersLoading()\"\n (searchChange)=\"onUserSearch($event)\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"Registered Phone\" \n formControlName=\"syen_registered_phone\"\n type=\"tel\"\n placeholder=\"Enter phone number\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Registered Email\" \n formControlName=\"syen_registered_email\"\n type=\"email\"\n placeholder=\"Enter email\">\n </cide-ele-input>\n @if (hasError('syen_registered_email')) {\n <div class=\"error-message\">{{ getErrorMessage('syen_registered_email') }}</div>\n }\n </div>\n\n <div class=\"grid grid-1\">\n <cide-ele-input \n label=\"Registered Fax\" \n formControlName=\"syen_registered_fax\"\n placeholder=\"Enter fax number\">\n </cide-ele-input>\n </div>\n </div>\n }\n\n @case ('documents') {\n <!-- Documents Section -->\n <div class=\"form-section\">\n <!-- Photo ID Document -->\n <div class=\"grid grid-1 gap-md\">\n <cide-ele-select \n label=\"Photo ID Document\" \n [options]=\"photoIdDocuments()\" \n formControlName=\"syen_photo_id_cyfm\"\n placeholder=\"Select photo ID document\">\n </cide-ele-select>\n </div>\n\n <!-- Logo Upload -->\n <div class=\"grid grid-quarter-three gap-lg md-grid-1 align-center\">\n <div class=\"grid-item self-center justify-self-center\">\n <!-- Logo preview placeholder -->\n <div style=\"width: 120px; height: 120px; border: 2px dashed #cbd5e1; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #9ca3af; font-size: 0.875rem; text-align: center;\">\n Logo Preview\n </div>\n </div>\n <div class=\"grid-item self-stretch\">\n <cide-ele-file-input \n label=\"Upload Logo\" \n accept=\"image/*\" \n [multiple]=\"false\" \n (fileChange)=\"onFileChange($event)\"\n placeholder=\"Select institution logo or image\">\n </cide-ele-file-input>\n </div>\n </div>\n </div>\n }\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"onReset()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || entityForm.invalid\"\n [loading]=\"loading()\"\n leftIcon=\"check\">\n Create Entity\n </button>\n </div>\n </form>\n</div> ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, MEntity, entityControllerResponse, generateStringFromObject } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideAdmEntityListService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get list of entities using the proper API endpoint\r\n * @param body - MEntity payload for filtering/pagination\r\n * @returns Observable of entityControllerResponse\r\n */\r\n getEntityList(body: MEntity): Observable<entityControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.entity,\r\n query\r\n ]);\r\n\r\n console.log('🔍 ENTITY SERVICE: Making API call to:', url);\r\n console.log('🔍 ENTITY SERVICE: Payload:', body);\r\n\r\n return this.http.get(url) as Observable<entityControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get entity list with default parameters\r\n * @returns Observable of entityControllerResponse\r\n */\r\n getAllEntities(): Observable<entityControllerResponse> {\r\n const defaultPayload = {} as MEntity;\r\n return this.getEntityList(defaultPayload);\r\n }\r\n\r\n /**\r\n * Get filtered entity list\r\n * @param filters - Filter parameters\r\n * @returns Observable of entityControllerResponse\r\n */\r\n getFilteredEntities(filters: Partial<MEntity>): Observable<entityControllerResponse> {\r\n const payload = { ...filters } as MEntity;\r\n return this.getEntityList(payload);\r\n }\r\n} ","import { Component, signal, OnInit, inject, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport {\n CideInputComponent,\n CideIconComponent,\n TooltipDirective\n} from 'cloud-ide-element';\nimport { CideEleButtonComponent, CideSelectComponent } from 'cloud-ide-element';\nimport { CideEleDataGridComponent ,GridConfiguration, GridEvent} from 'cloud-ide-element';\nimport { CideAdmEntityListService } from './cide-adm-entity-list.service';\nimport { entityControllerResponse, entityResponseData, generateStringFromObject } from 'cloud-ide-lms-model';\n\n\n@Component({\n selector: 'cide-adm-entity-list',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CideInputComponent,\n CideIconComponent,\n CideEleButtonComponent,\n CideSelectComponent,\n TooltipDirective,\n CideEleDataGridComponent\n ],\n templateUrl: './cide-adm-entity-list.component.html',\n styleUrl: './cide-adm-entity-list.component.scss',\n styles: [`\n :host {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n \n .entity-list-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n \n .tw-overflow-auto {\n flex: 1;\n min-height: 0;\n }\n \n cide-ele-data-grid {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n `]\n})\nexport class CideAdmEntityListComponent implements OnInit {\n // Modern dependency injection using inject()\n router = inject(Router); // Made public for template access\n private entityService = inject(CideAdmEntityListService);\n\n // ViewChild reference to the grid component\n @ViewChild(CideEleDataGridComponent) gridComponent!: CideEleDataGridComponent<entityResponseData>;\n\n // State management using Angular Signals\n entities = signal<entityResponseData[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n searchQuery = signal('');\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n selectedEntityType = signal('');\n\n // Getter and setter for ngModel compatibility\n get selectedEntityTypeValue(): string {\n return this.selectedEntityType();\n }\n\n set selectedEntityTypeValue(value: string) {\n this.selectedEntityType.set(value);\n }\n\n // Pagination calculations\n totalPages = signal(0);\n hasNextPage = signal(false);\n hasPreviousPage = signal(false);\n jumpToPage: number = 1;\n loadStartTime: number = 0;\n\n // Filter options\n entityTypeOptions = signal([\n { value: '', label: 'All Entity Types' },\n { value: 'school', label: 'School' },\n { value: 'college', label: 'College' },\n { value: 'university', label: 'University' },\n { value: 'institute', label: 'Institute' }\n ]);\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<entityResponseData>>({\n id: 'entity-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Entity Details',\n type: 'custom',\n width: 'lg',\n truncate: true,\n align: 'left',\n renderer: 'entityDetailsRenderer'\n },\n {\n key: 'contact',\n header: 'Contact Information',\n type: 'custom',\n width: 'lg',\n truncate: true,\n align: 'left',\n renderer: 'contactInfoRenderer'\n },\n {\n key: 'syen_isactive',\n header: 'Status',\n type: 'status',\n width: 'md',\n truncate: false,\n align: 'center',\n statusConfig: {\n activeValue: true,\n activeLabel: 'Active',\n inactiveLabel: 'Inactive',\n activeClass: 'tw-bg-green-100 tw-text-green-800',\n inactiveClass: 'tw-bg-red-100 tw-text-red-800'\n }\n },\n {\n key: 'syen_entity_type_gmst',\n header: 'Entity Type',\n type: 'text',\n width: 'md',\n truncate: false,\n align: 'center'\n },\n {\n key: 'actions',\n header: 'Actions',\n type: 'actions',\n width: 'md',\n truncate: false,\n align: 'right',\n actions: [\n {\n key: 'edit',\n label: 'Edit',\n icon: 'pencil',\n variant: 'outline',\n tooltip: 'Edit entity',\n onClick: 'onEditEntity'\n },\n {\n key: 'delete',\n label: 'Delete',\n icon: 'trash',\n variant: 'danger',\n tooltip: 'Delete entity',\n onClick: 'onDeleteEntity'\n }\n ]\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search entities...',\n searchableColumns: ['syen_name', 'syen_entity_code', 'syen_corporate_email'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n fullHeight: true,\n onRowClick: 'onEntityRowClick',\n onRefresh: 'onEntityRefresh',\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'syen_parent_entity_id',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'isExpanded',\n hasChildrenKey: 'hasChildren'\n }\n });\n\n // Custom renderers for complex columns\n customRenderers = {\n entityDetailsRenderer: (value: unknown, row: entityResponseData): string => {\n const entityCode = row.syen_entity_code || 'N/A';\n const entityName = row.syen_name || 'Unknown Entity';\n\n return `\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <div class=\"tw-flex-shrink-0 tw-w-10 tw-h-10 tw-bg-blue-100 tw-rounded-full tw-flex tw-items-center tw-justify-center\">\n <span class=\"tw-text-blue-600 tw-font-semibold tw-text-sm\">\n ${entityCode.substring(0, 2).toUpperCase()}\n </span>\n </div>\n <div class=\"tw-flex-1 tw-min-w-0\">\n <p class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" title=\"${entityName}\">\n ${entityName}\n </p>\n <p class=\"tw-text-sm tw-text-gray-500 tw-truncate\" title=\"${entityCode}\">\n Code: ${entityCode}\n </p>\n </div>\n </div>\n `;\n },\n\n contactInfoRenderer: (value: unknown, row: entityResponseData): string => {\n const contactPerson = row.syen_corporate_contact_person_user || 'N/A';\n const email = row.syen_corporate_email || 'N/A';\n const phone = row.syen_corporate_phone ? String(row.syen_corporate_phone) : 'N/A';\n\n return `\n <div class=\"tw-space-y-1\">\n <p class=\"tw-text-sm tw-text-gray-900 tw-truncate tw-flex tw-items-center\" title=\"${contactPerson}\">\n <svg class=\"tw-flex-shrink-0 tw-w-4 tw-h-4 tw-text-gray-400 tw-mr-2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\"/>\n </svg>\n <span class=\"tw-truncate\">${contactPerson}</span>\n </p>\n <p class=\"tw-text-sm tw-text-gray-600 tw-truncate tw-flex tw-items-center\" title=\"${email}\">\n <svg class=\"tw-flex-shrink-0 tw-w-4 tw-h-4 tw-text-gray-400 tw-mr-2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z\"/>\n <path d=\"M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z\"/>\n </svg>\n <span class=\"tw-truncate\">${email}</span>\n </p>\n <p class=\"tw-text-sm tw-text-gray-600 tw-truncate tw-flex tw-items-center\" title=\"${phone}\">\n <svg class=\"tw-flex-shrink-0 tw-w-4 tw-h-4 tw-text-gray-400 tw-mr-2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z\"/>\n </svg>\n <span class=\"tw-truncate\">${phone}</span>\n </p>\n </div>\n `;\n }\n };\n\n // Action handlers\n actionHandlers = {\n onEditEntity: (entity: entityResponseData) => {\n const query: string = generateStringFromObject({\n syen_id: entity._id\n })\n this.router.navigate(['control-panel', 'entity-create', query]);\n },\n\n onDeleteEntity: (entity: entityResponseData) => {\n const entityName = entity.syen_name || 'this entity';\n if (confirm(`Are you sure you want to delete ${entityName}?`)) {\n this.onDeleteEntityConfirmed(entity._id || '');\n }\n }\n };\n\n ngOnInit() {\n console.log('🔧 ENTITY LIST: Component initializing');\n this.updatePaginationState();\n\n // Set initial loading state to false to allow grid to render\n this.loading.set(false);\n\n // Load entities from API\n this.loadEntities();\n }\n\n // Grid event handler\n onGridEvent(event: GridEvent<entityResponseData>) {\n console.log('📡 GRID EVENT: Received grid event:', event.type, event);\n\n switch (event.type) {\n case 'rowClick':\n this.onEntityRowClick(event.data as entityResponseData);\n break;\n case 'refresh':\n this.onEntityRefresh();\n break;\n case 'search':\n this.onEntitySearch(event.data as string);\n break;\n case 'pageChange':\n this.onEntityPageChange(event.data as number);\n break;\n default:\n console.log('Unhandled grid event:', event.type);\n }\n }\n\n // Event handlers for grid events\n private onEntityRowClick(entity: entityResponseData) {\n console.log('Entity row clicked:', entity);\n this.router.navigate(['admin', 'entity', 'view', entity._id]);\n }\n\n private onEntityRefresh() {\n console.log('Refreshing entities...');\n this.loadEntities(true);\n }\n\n private onEntitySearch(query: string) {\n console.log('Search entities:', query);\n this.searchQuery.set(query);\n // The grid handles the actual filtering\n }\n\n private onEntityPageChange(page: number) {\n console.log('Page changed to:', page);\n this.currentPage.set(page);\n \n // Reload data for the new page\n this.loadEntities(false);\n }\n\n private onDeleteEntityConfirmed(entityId: string) {\n // In a real app, you'd call the API to delete\n console.log('Deleting entity:', entityId);\n // For now, just reload the entities\n this.loadEntities(true);\n }\n\n // Update grid data method\n private updateGridData(entities: entityResponseData[]) {\n console.log('📊 GRID UPDATE: Updating grid with', entities.length, 'entities');\n console.log('📊 GRID UPDATE: Sample entity data:', entities[0] || 'No entities');\n\n // Set the entities signal\n this.entities.set(entities);\n\n // Update grid configuration with new data and ensure loading is false\n this.gridConfig.update(config => ({\n ...config,\n data: entities\n }));\n\n // Ensure loading states are cleared\n this.loading.set(false);\n \n // Clear page change loading state in the grid component\n if (this.gridComponent) {\n this.gridComponent.clearPageChangeLoading();\n }\n\n console.log('📊 GRID UPDATE: Grid config updated successfully');\n console.log('📊 GRID UPDATE: Current grid data length:', this.gridConfig().data.length);\n console.log('📊 GRID UPDATE: Loading state:', this.loading());\n console.log('📊 GRID UPDATE: Full grid config for debugging:', JSON.stringify(this.gridConfig(), null, 2));\n }\n\n loadEntities(isRefresh: boolean = false) {\n if (isRefresh) {\n console.log('🔄 ENTITY LIST: Refreshing entities');\n // Set the grid's refresh state to true\n if (this.gridComponent) {\n this.gridComponent.setRefreshing(true);\n }\n } else {\n this.loading.set(true);\n console.log('🔍 ENTITY LIST: Loading entities from API');\n }\n this.error.set(null);\n this.loadStartTime = Date.now();\n\n this.entityService.getAllEntities().subscribe({\n next: (response: entityControllerResponse) => {\n console.log('✅ ENTITY LIST: API response received:', response);\n\n // Process the response data\n if (response?.data) {\n // Handle both array and single object responses\n const entitiesData = Array.isArray(response.data) ? response.data : [response.data];\n console.log('📋 ENTITY LIST: Processed entities data:', entitiesData.length, 'entities');\n\n if (entitiesData.length > 0) {\n console.log('📊 ENTITY LIST: First entity sample:', entitiesData[0]);\n this.updateGridData(entitiesData);\n this.totalItems.set(entitiesData.length);\n } else {\n console.log('📊 ENTITY LIST: No entities returned, showing test data');\n this.loadTestData();\n }\n } else {\n console.warn('⚠️ ENTITY LIST: No data in API response, loading test data');\n this.loadTestData();\n }\n\n this.updatePaginationState();\n this.loading.set(false);\n \n // Clear page change loading state in the grid component\n if (this.gridComponent) {\n this.gridComponent.clearPageChangeLoading();\n }\n \n // Set the grid's refresh state to false when done\n if (isRefresh && this.gridComponent) {\n this.gridComponent.setRefreshing(false);\n }\n },\n error: (err) => {\n console.error('❌ ENTITY LIST: API error:', err);\n console.log('🧪 ENTITY LIST: API failed, loading test data for demonstration');\n\n // Load test data when API fails\n this.loadTestData();\n this.error.set('API unavailable. Showing sample data.');\n\n this.loading.set(false);\n \n // Clear page change loading state in the grid component\n if (this.gridComponent) {\n this.gridComponent.clearPageChangeLoading();\n }\n \n // Set the grid's refresh state to false when done\n if (isRefresh && this.gridComponent) {\n this.gridComponent.setRefreshing(false);\n }\n }\n });\n }\n\n private loadTestData() {\n console.log('🧪 ENTITY LIST: Loading test data');\n const testData: entityResponseData[] = [\n {\n _id: 'test-1',\n syen_name: 'Test University',\n syen_entity_code: 'TEST001',\n syen_corporate_email: 'test@university.com',\n syen_corporate_contact_person_user: 'John Doe',\n syen_corporate_phone: 9876543210, // Now a number\n syen_isactive: true,\n syen_entity_type_gmst: 'university',\n children: []\n },\n {\n _id: 'test-2',\n syen_name: 'Sample College',\n syen_entity_code: 'SAMP002',\n syen_corporate_email: 'info@samplecollege.edu',\n syen_corporate_contact_person_user: 'Jane Smith',\n syen_corporate_phone: 9876543211,\n syen_isactive: false,\n syen_entity_type_gmst: 'college',\n children: []\n },\n {\n _id: 'test-3',\n syen_name: 'Global Institute of Technology',\n syen_entity_code: 'GIT003',\n syen_corporate_email: 'admin@git.edu',\n syen_corporate_contact_person_user: 'Bob Johnson',\n syen_corporate_phone: 9876543212,\n syen_isactive: true,\n syen_entity_type_gmst: 'institute',\n children: []\n }\n ];\n\n console.log('🧪 ENTITY LIST: Test data prepared:', testData);\n this.updateGridData(testData);\n this.totalItems.set(testData.length);\n }\n\n private updatePaginationState() {\n const total = Math.ceil(this.totalItems() / this.pageSize());\n this.totalPages.set(total);\n this.hasNextPage.set(this.currentPage() < total);\n this.hasPreviousPage.set(this.currentPage() > 1);\n }\n\n onSearch() {\n this.currentPage.set(1);\n this.loadEntities();\n }\n\n onFilterChange() {\n this.currentPage.set(1);\n this.loadEntities();\n }\n\n onPageChange(page: number | string) {\n if (parseInt(page as string) >= 1 && parseInt(page as string) <= this.totalPages()) {\n this.currentPage.set(parseInt(page as string));\n this.loadEntities();\n }\n }\n\n onPageSizeChange() {\n this.currentPage.set(1);\n this.loadEntities();\n }\n\n onRefresh() {\n this.loadEntities(true); // Pass true for refresh\n }\n\n onAddEntity() {\n // Navigate to entity create form\n this.router.navigate(['/control-panel/entity-create']);\n }\n\n onEditEntity(entity: entityResponseData) {\n // TODO: Implement edit functionality - navigate to edit form with entity ID\n this.router.navigate(['/control-panel/entity-create'], {\n queryParams: { id: entity._id, mode: 'edit' }\n });\n console.log('Edit entity:', entity);\n }\n\n onViewEntity(entity: entityResponseData) {\n // TODO: Implement view functionality\n console.log('View entity:', entity);\n }\n\n onDeleteEntity(entity: entityResponseData) {\n if (confirm(`Are you sure you want to delete \"${entity.syen_name}\"?`)) {\n // TODO: Implement delete functionality\n console.log('Delete entity:', entity);\n }\n }\n\n getStatusClass(isActive: boolean): string {\n return isActive\n ? 'tw-bg-green-100 tw-text-green-800'\n : 'tw-bg-red-100 tw-text-red-800';\n }\n\n getStatusText(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n formatDate(date: Date | string | undefined): string {\n if (!date) return 'N/A';\n return new Date(date).toLocaleDateString();\n }\n\n // Pagination helper methods\n getPageNumbers(): number[] {\n const total = this.totalPages();\n const current = this.currentPage();\n const delta = 2; // Number of pages to show on each side of current page\n\n const pages: number[] = [];\n const start = Math.max(1, current - delta);\n const end = Math.min(total, current + delta);\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n return pages;\n }\n\n getItemRangeText(): string {\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\n const end = Math.min(this.currentPage() * this.pageSize(), this.totalItems());\n const total = this.totalItems();\n\n return `${start}-${end} of ${total}`;\n }\n\n trackByEntityId(index: number, entity: entityResponseData): string {\n return entity?._id || '';\n }\n\n // ===== Enhanced Pagination Methods =====\n\n /**\n * Get enhanced page numbers with ellipsis for better navigation\n */\n getEnhancedPageNumbers(): (number | string)[] {\n const total = this.totalPages();\n const current = this.currentPage();\n const pages: (number | string)[] = [];\n\n if (total <= 7) {\n // Show all pages if 7 or fewer\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n // Always show first page\n pages.push(1);\n\n if (current <= 4) {\n // Current page is near the beginning\n for (let i = 2; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(total);\n } else if (current >= total - 3) {\n // Current page is near the end\n pages.push('...');\n for (let i = total - 4; i <= total; i++) {\n pages.push(i);\n }\n } else {\n // Current page is in the middle\n pages.push('...');\n for (let i = current - 1; i <= current + 1; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(total);\n }\n }\n\n return pages;\n }\n\n /**\n * Calculate progress percentage based on current position\n */\n getProgressPercentage(): number {\n if (this.totalPages() === 0) return 0;\n return Math.round((this.currentPage() / this.totalPages()) * 100);\n }\n\n /**\n * Jump to specific page functionality\n */\n onJumpToPage(): void {\n if (this.jumpToPage >= 1 && this.jumpToPage <= this.totalPages()) {\n this.onPageChange(this.jumpToPage);\n }\n }\n\n /**\n * Get simulated load time for performance display\n */\n getLoadTime(): number {\n return this.loadStartTime > 0 ? Date.now() - this.loadStartTime : 0;\n }\n\n /**\n * Get total data size for display\n */\n getTotalDataSize(): number {\n return this.totalItems();\n }\n\n /**\n * Export current page entities\n */\n onExportCurrentPage(): void {\n const currentPageEntities = this.entities();\n console.log('Exporting current page:', currentPageEntities);\n // TODO: Implement actual export functionality\n alert(`Exporting ${currentPageEntities.length} entities from current page`);\n }\n\n /**\n * Export all entities\n */\n onExportAll(): void {\n console.log('Exporting all entities');\n // TODO: Implement actual export functionality\n alert(`Exporting all ${this.totalItems()} entities`);\n }\n} ","<!-- Entity List Container -->\n<div class=\"entity-list-container tw-bg-white tw-shadow-lg tw-rounded-lg tw-overflow-hidden\">\n \n <!-- Header Section with Filters -->\n <div class=\"tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-4 sm:tw-space-y-0\">\n \n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600\">apartment</cide-ele-icon>\n <div>\n <h5 class=\"tw-text-md tw-font-semibold tw-text-gray-900\">Entity Management</h5>\n <p class=\"tw-text-sm tw-text-gray-600\">Manage and view all entities in the system</p>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <!-- Entity Type Filter -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <label for=\"entityTypeFilter\" class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Type:</label>\n <cide-ele-select\n id=\"entityTypeFilter\"\n [options]=\"entityTypeOptions()\"\n [(ngModel)]=\"selectedEntityTypeValue\"\n (ngModelChange)=\"loadEntities()\"\n class=\"tw-min-w-40\">\n </cide-ele-select>\n </div>\n\n <!-- Add Entity Button -->\n <button\n cideEleButton\n variant=\"primary\"\n size=\"sm\"\n (click)=\"router.navigate(['control-panel', 'entity-create'])\"\n class=\"tw-whitespace-nowrap tw-flex tw-items-center tw-gap-2\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-6 tw-h-5\">add</cide-ele-icon>\n Add Entity\n </button>\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex\">\n <cide-ele-icon name=\"exclamation-triangle\" class=\"tw-text-red-400\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Data Grid Component -->\n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n [customRenderers]=\"customRenderers\"\n [actionHandlers]=\"actionHandlers\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n\n</div>","import { Routes } from '@angular/router';\r\n// import { authGuard } from '../../../../src/app/guards/auth.guard';\r\n\r\nexport const adminRoutes: Routes = [{\r\n path: \"admin-home\",\r\n loadComponent: () => import('./cide-adm-admin.component').then(c => c.CideAdmAdminComponent),\r\n // canActivate: [authGuard],\r\n},\r\n{\r\n path: \"home-admin\",\r\n loadComponent: () => import('./admin-module/home/home-wrapper/cide-adm-home-wrapper.component').then(c => c.CideAdmHomeWrapperComponent),\r\n},\r\n{\r\n path: \"entity-list\",\r\n loadComponent: () => import('./admin-module/entity/list/cide-adm-entity-list.component').then(c => c.CideAdmEntityListComponent),\r\n // canActivate: [authGuard],\r\n data: {\r\n reuseTab: true,\r\n sypg_page_code: \"admin_entity_list\"\r\n }\r\n},\r\n{\r\n path: \"entity-create\",\r\n loadComponent: () => import('./admin-module/entity/create/cide-adm-entity.component').then(c => c.CideAdmEntityComponent),\r\n // canActivate: [authGuard],\r\n data: {\r\n reuseTab: true,\r\n sypg_page_code: \"core_entity_form\"\r\n }\r\n},\r\n{\r\n path: \"entity-create/:query\",\r\n loadComponent: () => import('./admin-module/entity/create/cide-adm-entity.component').then(c => c.CideAdmEntityComponent),\r\n // canActivate: [authGuard],\r\n data: {\r\n reuseTab: true,\r\n sypg_page_code: \"core_entity_form\"\r\n }\r\n}]","/*\r\n * Public API Surface of cloud-ide-admin\r\n */\r\n\r\nexport * from './lib/cide-adm-admin.service';\r\nexport * from './lib/cide-adm-admin.component';\r\nexport * from './lib/admin-module/entity/create/cide-adm-entity.component';\r\nexport * from './lib/admin-module/entity/create/cide-adm-entity.service';\r\nexport * from './lib/admin-module/entity/list/cide-adm-entity-list.component';\r\nexport * from './lib/cloud-ide-admin.routes';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud-ide-admin.mjs","sources":["../../../projects/cloud-ide-admin/src/lib/cide-adm-admin.service.ts","../../../projects/cloud-ide-admin/src/lib/cide-adm-admin.component.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/cide-adm-entity.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/general-master-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/pin-code-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/user-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/currency-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/country-select.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/cide-adm-entity.component.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/create/cide-adm-entity.component.html","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/list/cide-adm-entity-list.service.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/list/cide-adm-entity-list.component.ts","../../../projects/cloud-ide-admin/src/lib/admin-module/entity/list/cide-adm-entity-list.component.html","../../../projects/cloud-ide-admin/src/lib/cloud-ide-admin.routes.ts","../../../projects/cloud-ide-admin/src/public-api.ts","../../../projects/cloud-ide-admin/src/cloud-ide-admin.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideAdmAdminService {\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CideLytSharedWrapperComponent, CideLytSharedWrapperSetupParam } from 'cloud-ide-layout';\r\n\r\n@Component({\r\n selector: 'cide-adm-admin',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n cide-adm-admin works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class CideAdmAdminComponent extends CideLytSharedWrapperComponent implements OnInit {\r\n public override shared_wrapper_setup_param: Partial<CideLytSharedWrapperSetupParam> = {\r\n sypg_page_code: \"default_home_adm\"\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit?.();\r\n }\r\n} ","import { Injectable, inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, entityControllerResponse, MEntity, generateStringFromObject } from 'cloud-ide-lms-model';\r\n\r\ninterface DropdownOption { \r\n value: string; \r\n label: string; \r\n}\r\n\r\ninterface EntityData {\r\n [key: string]: string | number | boolean | null | undefined;\r\n}\r\n\r\n@Injectable({ \r\n providedIn: 'root' \r\n})\r\nexport class CideAdmEntityService {\r\n private http = inject(HttpClient);\r\n\r\n getEntityTypes(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/entity-types');\r\n }\r\n\r\n getCurrencies(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/currencies');\r\n }\r\n\r\n getUsers(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/users');\r\n }\r\n\r\n getPostalCodes(): Observable<DropdownOption[]> {\r\n return this.http.get<DropdownOption[]>('/api/core/postal-codes');\r\n }\r\n\r\n /**\r\n * Save entity data using coreRoutesUrl?.entity endpoint\r\n * @param data - Entity data to save\r\n * @param logoFile - Optional logo file\r\n * @returns Observable of the save response\r\n */\r\n saveUpdateEntity(data: EntityData): Observable<entityControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.entity\r\n ]);\r\n \r\n console.log('🏢 ENTITY SERVICE: Making POST request to:', url);\r\n console.log('🏢 ENTITY SERVICE: Data payload:', data);\r\n\r\n \r\n return this.http.post<entityControllerResponse>(url, data);\r\n }\r\n\r\n /**\r\n * Get entity by ID\r\n * @param entityId - ID of the entity to retrieve\r\n * @returns Observable of the entity data\r\n */\r\n getEntityById(entityId: string): Observable<entityControllerResponse> {\r\n const payload: Partial<MEntity> = {\r\n syen_id: entityId\r\n };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.entity,\r\n query\r\n ]);\r\n \r\n return this.http.get<entityControllerResponse>(url);\r\n }\r\n\r\n /**\r\n * Delete entity by ID\r\n * @param entityId - ID of the entity to delete\r\n * @returns Observable of the delete response\r\n */\r\n deleteEntity(entityId: string): Observable<entityControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.entity,\r\n entityId\r\n ]);\r\n \r\n console.log('🏢 ENTITY SERVICE: Making DELETE request to:', url);\r\n \r\n return this.http.delete<entityControllerResponse>(url);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, generalMasterListControllerResponse, hostManagerRoutesUrl } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface MGeneralMaster {\r\n sygmt_code: string;\r\n [key: string]: string | number | boolean | null | undefined;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GeneralMasterSelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get general master data from API\r\n * @param body - MGeneralMaster payload with sygmt_code\r\n * @returns Observable of generalMasterListControllerResponse\r\n */\r\n getGeneralMasterData(body: MGeneralMaster): Observable<generalMasterListControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.generalMaster\r\n ]);\r\n \r\n console.log('🔍 GENERAL MASTER SERVICE: Making API call to:', url);\r\n console.log('🔍 GENERAL MASTER SERVICE: Payload:', body);\r\n \r\n return this.http.post(url, body) as Observable<generalMasterListControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get general master data by code\r\n * @param code - The general master code\r\n * @returns Observable of generalMasterListControllerResponse\r\n */\r\n getGeneralMasterByCode(code: string): Observable<generalMasterListControllerResponse> {\r\n const payload: MGeneralMaster = {\r\n sygmt_code: code\r\n };\r\n return this.getGeneralMasterData(payload);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, MPinCodeSelect, pinCodeSelectControllerResponse } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PinCodeSelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get pin code data from API\r\n * @param body - MPinCodeSelect payload with sypin_pincode\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n getPinCodeData(body: MPinCodeSelect): Observable<pinCodeSelectControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.pinCode\r\n ]);\r\n \r\n console.log('🔍 PIN CODE SERVICE: Making API call to:', url);\r\n console.log('🔍 PIN CODE SERVICE: Payload:', body);\r\n \r\n return this.http.post(url, body) as Observable<pinCodeSelectControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get pin code data by pincode\r\n * @param pincode - The pin code to search for\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n getPinCodeByCode(pincode: string): Observable<pinCodeSelectControllerResponse> {\r\n const payload: MPinCodeSelect = {\r\n sypin_pincode: pincode\r\n };\r\n return this.getPinCodeData(payload);\r\n }\r\n\r\n /**\r\n * Get all postal codes\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n getAllPostalCodes(): Observable<pinCodeSelectControllerResponse> {\r\n const payload: MPinCodeSelect = { sypin_pincode: '440022'};\r\n return this.getPinCodeData(payload);\r\n }\r\n\r\n /**\r\n * Search pin codes with partial match\r\n * @param searchTerm - Partial pin code or area name to search\r\n * @returns Observable of pinCodeSelectControllerResponse\r\n */\r\n searchPinCodes(payload: MPinCodeSelect): Observable<pinCodeSelectControllerResponse> {\r\n return this.getPinCodeData(payload);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, userRoutesUrl, hostManagerRoutesUrl, userSelectControllerResponse, MUserSelect } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserSelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get user data from API\r\n * @param body - MUserSelect payload\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n getUserData(body: MUserSelect): Observable<userSelectControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n userRoutesUrl.module, \r\n userRoutesUrl?.user\r\n ]);\r\n \r\n console.log('🔍 USER SELECT SERVICE: Making API call to:', url);\r\n console.log('🔍 USER SELECT SERVICE: Payload:', body);\r\n \r\n return this.http.post(url, body) as Observable<userSelectControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get all users\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n getAllUsers(): Observable<userSelectControllerResponse> {\r\n const payload: MUserSelect = { };\r\n return this.getUserData(payload);\r\n }\r\n\r\n /**\r\n * Search users by full name\r\n * @param userFullname - The user full name to search for\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n searchUsersByFullname(payload: Partial<MUserSelect>): Observable<userSelectControllerResponse> {\r\n return this.getUserData(payload);\r\n }\r\n\r\n /**\r\n * Search users with filters\r\n * @param filters - Filter parameters for user search\r\n * @returns Observable of userSelectControllerResponse\r\n */\r\n searchUsers(filters: Partial<MUserSelect>): Observable<userSelectControllerResponse> {\r\n const payload: MUserSelect = { ...filters };\r\n return this.getUserData(payload);\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, currencyListControllerResponse, MSycrList, generateStringFromObject } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CurrencySelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get currency data from API\r\n * @returns Observable of currencyListControllerResponse\r\n */\r\n getAllCurrencies(body: Partial<MSycrList>): Observable<currencyListControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.currency,\r\n query\r\n ]);\r\n \r\n console.log('🔍 CURRENCY SERVICE: Making API call to:', url);\r\n \r\n return this.http.get(url) as Observable<currencyListControllerResponse>;\r\n }\r\n\r\n /**\r\n * Search currencies with filters\r\n * @param filters - MSycrList payload for filtering\r\n * @returns Observable of currencyListControllerResponse\r\n */\r\n searchCurrencies(filters: MSycrList): Observable<currencyListControllerResponse> {\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl?.currency\r\n ]);\r\n \r\n console.log('🔍 CURRENCY SERVICE: Making search API call to:', url);\r\n console.log('🔍 CURRENCY SERVICE: Filters:', filters);\r\n \r\n return this.http.post(url, filters) as Observable<currencyListControllerResponse>;\r\n }\r\n} ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, countryListControllerResponse, generateStringFromObject, hostManagerRoutesUrl, MSyctrList } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CountrySelectService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get country data from API\r\n * @returns Observable of country response\r\n */\r\n getAllCountries(body: Partial<MSyctrList>): Observable<countryListControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost, \r\n coreRoutesUrl.module, \r\n coreRoutesUrl.country,\r\n query\r\n ]);\r\n \r\n console.log('🔍 COUNTRY SERVICE: Making API call to:', url);\r\n \r\n return this.http.get(url);\r\n }\r\n} ","import { Component, signal, OnInit, inject, OnDestroy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { CideAdmEntityService } from './cide-adm-entity.service';\nimport { CideInputComponent, CideSelectComponent, CideEleTabComponent, TabItem, CideEleButtonComponent } from 'cloud-ide-element';\nimport { CideEleFileInputComponent, CideTextareaComponent } from 'cloud-ide-element';\nimport { GeneralMasterSelectService } from './general-master-select.service';\nimport { PinCodeSelectService } from './pin-code-select.service';\nimport { UserSelectService } from './user-select.service';\nimport { CurrencySelectService } from './currency-select.service';\nimport { CountrySelectService } from './country-select.service';\nimport { CommonSelect, IUser, userSelectControllerResponse, pinCodeSelectControllerResponse, currencyListControllerResponse, ICoreSycr, countryListControllerResponse, ICoreSyctr, ICoreSypin, selectSearchType, MPinCodeSelect, MSyctrList, MUserSelect, entityControllerResponse, entityResponseData, generateObjectFromString, generalMasterListControllerResponse, ICoreSygms } from 'cloud-ide-lms-model';\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\n\n\ninterface DropdownOption {\n value: string;\n label: string;\n}\n\n// Interface for pin code data structure with additional fields\ninterface PinCodeData extends ICoreSypin {\n value?: string;\n label?: string;\n}\n\n@Component({\n selector: 'cide-adm-entity',\n standalone: true,\n imports: [\n ReactiveFormsModule,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideEleFileInputComponent,\n CideEleTabComponent,\n CideEleButtonComponent\n ],\n templateUrl: './cide-adm-entity.component.html',\n styleUrl: './cide-adm-entity.component.scss'\n})\nexport class CideAdmEntityComponent implements OnInit, OnDestroy {\n // Reactive form\n entityForm: FormGroup;\n\n entityTypes = signal<DropdownOption[]>([]);\n currencies = signal<DropdownOption[]>([]);\n users = signal<DropdownOption[]>([]);\n postalCodes = signal<DropdownOption[]>([]);\n photoIdDocuments = signal<DropdownOption[]>([]);\n countries = signal<DropdownOption[]>([]);\n\n // Store the full pin code data for auto-population\n private pinCodeDataMap = new Map<string, PinCodeData>();\n \n // Store logo file for upload\n private logoFile?: File;\n\n loading = signal(false);\n error = signal<string | null>(null);\n success = signal<string | null>(null);\n\n // Loading states for individual dropdowns\n postalCodesLoading = signal(false);\n usersLoading = signal(false);\n countriesLoading = signal(false);\n\n // Entity mode and ID\n isEditMode = signal(false);\n entityId = signal<string | null>(null);\n\n // Tab configuration\n activeTab = signal('basic');\n entityTabs = signal<TabItem[]>([\n { id: 'basic', label: 'Basic Information', icon: 'ℹ️' },\n { id: 'corporate', label: 'Corporate Address', icon: '🏢' },\n { id: 'contact', label: 'Contact Information', icon: '📧' },\n { id: 'registered', label: 'Registered Address', icon: '🏠' },\n { id: 'documents', label: 'Documents & Media', icon: '📄' }\n ]);\n\n // Modern dependency injection using inject()\n private entityService = inject(CideAdmEntityService);\n private generalMasterService = inject(GeneralMasterSelectService);\n private pinCodeService = inject(PinCodeSelectService);\n private userService = inject(UserSelectService);\n private currencyService = inject(CurrencySelectService);\n private countryService = inject(CountrySelectService);\n private fb = inject(FormBuilder);\n private route = inject(ActivatedRoute);\n\n private destroy$ = new Subject<void>();\n private globalErrorHandler?: (event: ErrorEvent) => void;\n private globalRejectionHandler?: (event: PromiseRejectionEvent) => void;\n\n constructor() {\n this.entityForm = this.fb.group({\n // Basic Information\n syen_name: ['', [Validators.required]],\n syen_entity_code: ['', [Validators.required, Validators.maxLength(40)]],\n syen_entity_type_gmst: ['', [Validators.required]],\n syen_udise_no: [''],\n syen_affiliation_no: [''],\n syen_isactive: [true],\n\n // Corporate Address\n syen_corporate_address: [''],\n syen_corporate_city_sypin: [''],\n syen_corporate_state_sypin: [''],\n syen_corporate_country_syctr: [''],\n syen_corporate_pin_sypin: [''],\n\n // Contact Information\n syen_corporate_contact_person_user: [''],\n syen_corporate_phone: [''],\n syen_corporate_phone_alt: [''],\n syen_corporate_fax: [''],\n syen_corporate_email: ['', [Validators.email]],\n syen_corporate_email_alt: ['', [Validators.email]],\n syen_website: ['', [Validators.pattern(/^https?:\\/\\/.+/)]],\n syen_currency_sycr: [''],\n\n // Registered Address\n syen_registered_address: [''],\n syen_registered_city_sypin: [''],\n syen_registered_state_sypin: [''],\n syen_registered_country_syctr: [''],\n syen_registered_pin_sypin: [''],\n syen_registered_contact_person_user: [''],\n syen_registered_phone: [''],\n syen_registered_email: ['', [Validators.email]],\n syen_registered_fax: [''],\n\n // Documents\n syen_photo_id_cyfm: ['']\n });\n\n // Listen for postal code changes to auto-populate address fields\n this.setupPostalCodeListeners();\n }\n\n ngOnInit() {\n // Add global error handler to catch any unhandled errors\n const errorHandler = (event: ErrorEvent) => {\n console.error('💥 GLOBAL ERROR:', event.error);\n };\n\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n console.error('💥 UNHANDLED PROMISE REJECTION:', event.reason);\n };\n\n window.addEventListener('error', errorHandler);\n window.addEventListener('unhandledrejection', rejectionHandler);\n\n // Store handlers for cleanup\n this.globalErrorHandler = errorHandler;\n this.globalRejectionHandler = rejectionHandler;\n\n // Check for entity ID in query parameters\n this.checkForEntityId();\n \n this.loadDropdowns();\n }\n\n ngOnDestroy(): void {\n // Clean up global event listeners\n if (this.globalErrorHandler) {\n window.removeEventListener('error', this.globalErrorHandler);\n }\n if (this.globalRejectionHandler) {\n window.removeEventListener('unhandledrejection', this.globalRejectionHandler);\n }\n\n // Clean up RxJS subscriptions\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // Check for entity ID in query parameters\n private checkForEntityId() {\n console.log('🔍 Checking for entity ID in query parameters', this.route.params);\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(params => {\n console.log('🔍 Query params:', params);\n // Check for entityId, id, or entity parameter\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n // If entityId is an object string (from generateStringFromObject), try to parse it\n const entityId = queryData.syen_id;\n if (entityId) {\n console.log('🔍 Entity ID found in query params:', entityId);\n this.entityId.set(entityId);\n this.isEditMode.set(true);\n this.loadEntityData(entityId);\n } else {\n console.log('🆕 No entity ID found - creating new entity');\n this.isEditMode.set(false);\n this.entityId.set(null);\n }\n });\n }\n\n // Load entity data for editing\n private loadEntityData(entityId: string) {\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📥 Loading entity data for ID:', entityId);\n\n this.entityService.getEntityById(entityId).pipe(\n takeUntil(this.destroy$)\n ).subscribe({\n next: (response: entityControllerResponse) => {\n console.log('✅ Entity data loaded:', response);\n \n if (response?.success && response?.data) {\n // Handle both array and single object responses\n const entityData = Array.isArray(response.data) ? response.data[0] : response.data;\n if (entityData) {\n this.populateFormWithEntityData(entityData);\n this.success.set('Entity data loaded successfully');\n } else {\n this.error.set('Entity data not found');\n console.error('❌ Entity data not found in response:', response);\n }\n } else {\n this.error.set('Failed to load entity data');\n console.error('❌ Entity data response invalid:', response);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('❌ Failed to load entity data:', err);\n \n let errorMessage = 'Failed to load entity data.';\n \n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 404) {\n errorMessage = 'Entity not found.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n \n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n }\n\n // Populate form with entity data\n private populateFormWithEntityData(entityData: entityResponseData) {\n try {\n console.log('📝 Populating form with entity data:', entityData);\n\n // Map the entity data to form controls - only use properties that exist in entityResponseData\n const formData = {\n // Basic Information\n syen_name: entityData.syen_name || '',\n syen_entity_code: entityData.syen_entity_code || '',\n syen_entity_type_gmst: entityData.syen_entity_type_gmst || '',\n syen_isactive: entityData.syen_isactive !== undefined ? entityData.syen_isactive : true,\n\n // Contact Information (only properties that exist in entityResponseData)\n syen_corporate_contact_person_user: entityData.syen_corporate_contact_person_user || '',\n syen_corporate_phone: entityData.syen_corporate_phone || '',\n syen_corporate_email: entityData.syen_corporate_email || '',\n\n // Set default values for other fields since they're not in entityResponseData\n syen_udise_no: entityData.syen_udise_no || '',\n syen_affiliation_no: entityData.syen_affiliation_no || '',\n syen_corporate_address: entityData.syen_corporate_address || '',\n syen_corporate_city_sypin: entityData.syen_corporate_city_sypin || '',\n syen_corporate_state_sypin: entityData.syen_corporate_state_sypin || '',\n syen_corporate_country_syctr: entityData.syen_corporate_country_syctr || '',\n syen_corporate_pin_sypin: entityData.syen_corporate_pin_sypin || '',\n syen_corporate_phone_alt: entityData.syen_corporate_phone_alt || '',\n syen_corporate_fax: entityData.syen_corporate_fax || '',\n syen_corporate_email_alt: entityData.syen_corporate_email_alt || '',\n syen_website: entityData.syen_website || '',\n syen_currency_sycr: entityData.syen_currency_sycr || '',\n syen_registered_address: entityData.syen_registered_address || '',\n syen_registered_city_sypin: entityData.syen_registered_city_sypin || '' ,\n syen_registered_state_sypin: entityData.syen_registered_state_sypin || '',\n syen_registered_country_syctr: entityData.syen_registered_country_syctr || '',\n syen_registered_pin_sypin: entityData.syen_registered_pin_sypin || '',\n syen_registered_contact_person_user: entityData.syen_registered_contact_person_user || '',\n syen_registered_phone: entityData.syen_registered_phone || '',\n syen_registered_email: entityData.syen_registered_email || '',\n syen_registered_fax: entityData.syen_registered_fax || '',\n syen_photo_id_cyfm: entityData.syen_photo_id_cyfm || ''\n };\n\n // Patch the form with the entity data\n this.entityForm.patchValue(formData, { emitEvent: false });\n\n console.log('✅ Form populated successfully');\n } catch (error) {\n console.error('💥 Error populating form with entity data:', error);\n this.error.set('Error loading entity data into form');\n }\n }\n\n // Setup listeners for postal code changes\n private setupPostalCodeListeners() {\n // Corporate postal code listener\n this.entityForm.get('syen_corporate_pin_sypin')?.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(pinCodeId => {\n if (pinCodeId) {\n this.populateAddressFromPinCode(pinCodeId, 'corporate');\n }\n });\n\n // Registered postal code listener\n this.entityForm.get('syen_registered_pin_sypin')?.valueChanges.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(pinCodeId => {\n if (pinCodeId) {\n this.populateAddressFromPinCode(pinCodeId, 'registered');\n }\n });\n }\n\n // Auto-populate address fields based on selected postal code\n private populateAddressFromPinCode(pinCodeId: string, addressType: 'corporate' | 'registered') {\n const pinCodeData = this.pinCodeDataMap.get(pinCodeId);\n console.log('🔍 Pin Code Data:', pinCodeData);\n if (!pinCodeData) {\n console.warn(`Pin code data not found for ID: ${pinCodeId}`);\n return;\n }\n\n const prefix = addressType === 'corporate' ? 'syen_corporate' : 'syen_registered';\n\n // Populate city, state, and country fields\n this.entityForm.patchValue({\n [`${prefix}_city_sypin`]: pinCodeData.sypin_district || '',\n [`${prefix}_state_sypin`]: pinCodeData.sypin_state_name || '',\n [`${prefix}_country_syctr`]: pinCodeData.sypin_country_id_syctr || ''\n }, { emitEvent: false });\n\n console.log(`📍 Auto-populated ${addressType} address from pin code:`, {\n city: pinCodeData.sypin_district,\n state: pinCodeData.sypin_state_name,\n country: pinCodeData.sypin_country_id_syctr\n });\n }\n\n loadDropdowns() {\n try {\n console.log('🚀 Loading dropdowns...');\n\n // Load entity types via general master service\n this.generalMasterService.getGeneralMasterByCode('core_entity_type').subscribe({\n next: (response) => {\n try {\n console.log('✅ Entity types response:', response);\n const types = this.transformGeneralMasterToDropdown(response);\n this.entityTypes.set(types);\n console.log('📋 Loaded entity types:', types.length);\n } catch (error) {\n console.error('💥 Entity types transform error:', error);\n this.entityTypes.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load entity types:', err);\n this.entityTypes.set([]);\n }\n });\n\n // Load currencies via currency service\n this.currencyService.getAllCurrencies({}).subscribe({\n next: (response) => {\n try {\n console.log('✅ Currencies response:', response);\n const currencies = this.transformCurrencyToDropdown(response);\n this.currencies.set(currencies);\n console.log('💰 Loaded currencies:', currencies.length);\n } catch (error) {\n console.error('💥 Currencies transform error:', error);\n this.currencies.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load currencies:', err);\n this.currencies.set([]);\n }\n });\n\n // Load users via user service\n this.userService.getAllUsers().subscribe({\n next: (response) => {\n try {\n console.log('✅ Users response:', response);\n const users = this.transformUserToDropdown(response);\n this.users.set(users);\n console.log('👥 Loaded users:', users.length);\n } catch (error) {\n console.error('💥 Users transform error:', error);\n this.users.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load users:', err);\n this.users.set([]);\n }\n });\n\n // Load postal codes via pin code service\n this.pinCodeService.getAllPostalCodes().subscribe({\n next: (response) => {\n try {\n console.log('✅ Postal codes response:', response);\n const postalCodes = this.transformPinCodeToDropdown(response);\n this.postalCodes.set(postalCodes);\n console.log('📮 Loaded postal codes:', postalCodes.length);\n } catch (error) {\n console.error('💥 Postal codes transform error:', error);\n this.postalCodes.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load postal codes:', err);\n this.postalCodes.set([]);\n }\n });\n\n // Load photo ID documents via general master service\n this.generalMasterService.getGeneralMasterByCode('core_photo_id_document').subscribe({\n next: (response) => {\n try {\n console.log('✅ Photo ID documents response:', response);\n const documents = this.transformGeneralMasterToDropdown(response);\n this.photoIdDocuments.set(documents);\n console.log('📄 Loaded photo ID documents:', documents.length);\n } catch (error) {\n console.error('💥 Photo ID documents transform error:', error);\n this.photoIdDocuments.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load photo ID documents:', err);\n // Fallback to static data\n this.photoIdDocuments.set([\n { value: 'passport', label: 'Passport' },\n { value: 'license', label: 'Driver License' },\n { value: 'national_id', label: 'National ID' },\n { value: 'voter_id', label: 'Voter ID' },\n { value: 'other', label: 'Other' }\n ]);\n }\n });\n\n // Load countries via country service\n this.countryService.getAllCountries({}).subscribe({\n next: (response) => {\n try {\n console.log('✅ Countries response:', response);\n const countries = this.transformCountryToDropdown(response);\n this.countries.set(countries);\n console.log('🌍 Loaded countries:', countries.length);\n } catch (error) {\n console.error('💥 Countries transform error:', error);\n this.countries.set([]);\n }\n },\n error: (err) => {\n console.error('❌ Failed to load countries:', err);\n this.countries.set([]);\n }\n });\n } catch (error) {\n console.error('💥 LOADDROPDOWNS EXCEPTION:', error);\n }\n }\n\n // Helper method to transform general master response to dropdown options\n private transformGeneralMasterToDropdown(response: generalMasterListControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n\n let dataArray: ICoreSygms[] = [];\n\n // Handle different response structures - all general master data is in core_general_master\n if (Array.isArray(response.data)) {\n dataArray = response.data;\n }\n\n return dataArray.map((item: ICoreSygms, index: number) => {\n return {\n // API response already includes value and label fields\n value: (item as { value?: string }).value || item._id || `value_${index}`,\n label: (item as { label?: string }).label || item.sygms_title || 'Untitled'\n };\n });\n }\n\n // Helper method to transform currency response to dropdown options\n private transformCurrencyToDropdown(response: currencyListControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n\n console.log('🔍 Currency Response:', response);\n\n // Handle different response structures\n let dataArray: ICoreSycr[] = [];\n\n if (Array.isArray(response.data)) {\n dataArray = response.data;\n }\n\n return dataArray.map((item: ICoreSycr) => {\n return {\n value: item._id,\n label: `${item.sycr_code} - ${item.sycr_name} (${item.sycr_symbol})`\n };\n });\n }\n\n // Helper method to transform user response to dropdown options\n private transformUserToDropdown(response: userSelectControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n\n let dataArray: (CommonSelect & IUser)[] = [];\n\n // Handle different response structures\n if (response.data.auth_user_mst) {\n dataArray = response.data.auth_user_mst;\n } else if (Array.isArray(response.data)) {\n dataArray = response.data;\n }\n\n return dataArray.map((item: CommonSelect & IUser) => {\n return {\n value: item._id || \"\",\n label: item?.user_fullname || \"\"\n };\n });\n }\n\n // Helper method to transform pin code response to dropdown options\n private transformPinCodeToDropdown(response: pinCodeSelectControllerResponse): DropdownOption[] {\n if (!response?.success || !response?.data) {\n return [];\n }\n let dataArray: PinCodeData[] = [];\n\n // Handle different response structures\n if ('core_pin_code' in response.data && response.data.core_pin_code) {\n dataArray = response.data.core_pin_code;\n }\n\n // Clear the data map and rebuild it\n this.pinCodeDataMap.clear();\n\n return dataArray.map((item: PinCodeData) => {\n const pinCodeId = String(item._id);\n // Store the full pin code data for auto-population\n this.pinCodeDataMap.set(pinCodeId, item);\n\n // API response already includes value and label fields\n return {\n value: pinCodeId,\n label: `${item.sypin_pincode} - ${item.sypin_office_name || 'Unknown Office'}`\n };\n });\n }\n\n // Helper method to transform country response to dropdown options\n private transformCountryToDropdown(response: countryListControllerResponse): DropdownOption[] {\n try {\n if (!response?.success || !response?.data) {\n console.warn('⚠️ Country response missing success or data:', response);\n return [];\n }\n\n console.log('🔍 Country Response:', response);\n\n let dataArray: ICoreSyctr[] = [];\n\n // Handle different response structures\n if (Array.isArray(response.data)) {\n dataArray = response.data;\n } else if (response.data) {\n dataArray = response.data;\n }\n\n console.log('🔍 Country data array length:', dataArray.length);\n\n return dataArray.map((item: ICoreSyctr) => {\n return {\n value: item._id || \"\",\n label: `${item.syctr_country_iso_name || 'Unknown'} (${item.syctr_country_iso_code_two_char || 'XX'})`\n };\n });\n } catch (error) {\n console.error('💥 COUNTRY TRANSFORM EXCEPTION:', error);\n return [];\n }\n }\n\n // Helper method to get form control\n getControl(controlName: string) {\n return this.entityForm.get(controlName);\n }\n\n // Handle postal code search with debouncing\n onPostalCodeSearch(event: selectSearchType) {\n try {\n console.log('🔍 POSTAL CODE SEARCH EVENT:', event);\n\n // Set loading state\n this.postalCodesLoading.set(true);\n\n const payload: MPinCodeSelect = {\n sypin_pincode: event.query || \"\",\n sypin_id: event.value as string || \"\"\n };\n console.log('🔍 POSTAL CODE PAYLOAD:', payload);\n\n this.pinCodeService.searchPinCodes(payload).pipe(\n takeUntil(this.destroy$)\n ).subscribe({\n next: (response) => {\n console.log('✅ POSTAL CODE SEARCH SUCCESS:', response);\n const postalCodes = this.transformPinCodeToDropdown(response);\n this.postalCodes.set(postalCodes);\n console.log('📮 Updated postal codes count:', postalCodes.length);\n },\n error: (err) => {\n console.error('❌ POSTAL CODE SEARCH ERROR:', err);\n this.postalCodes.set([]);\n },\n complete: () => {\n // Clear loading state\n this.postalCodesLoading.set(false);\n }\n });\n } catch (error) {\n console.error('💥 POSTAL CODE SEARCH EXCEPTION:', error);\n this.postalCodes.set([]);\n this.postalCodesLoading.set(false);\n }\n }\n\n // Handle user search\n onUserSearch(event: selectSearchType) {\n try {\n console.log('🔍 USER SEARCH EVENT:', event);\n \n // Set loading state\n this.usersLoading.set(true);\n \n const payload: Partial<MUserSelect> = {\n user_fullname: event?.query || \"\",\n user_id: event?.value as string || \"\",\n }\n console.log('🔍 USER SEARCH PAYLOAD:', payload);\n\n this.userService.searchUsersByFullname(payload).subscribe({\n next: (response) => {\n console.log('✅ USER SEARCH SUCCESS:', response);\n const users = this.transformUserToDropdown(response);\n this.users.set(users);\n console.log('👥 Updated users count:', users.length);\n },\n error: (err) => {\n console.error('❌ USER SEARCH ERROR:', err);\n this.users.set([]);\n },\n complete: () => {\n // Clear loading state\n this.usersLoading.set(false);\n }\n });\n } catch (error) {\n console.error('💥 USER SEARCH EXCEPTION:', error);\n this.users.set([]);\n this.usersLoading.set(false);\n }\n }\n\n // Handle country search\n onCountrySearch(event: selectSearchType) {\n try {\n console.log('🔍 COUNTRY SEARCH EVENT:', event);\n \n // Set loading state\n this.countriesLoading.set(true);\n \n const payload: Partial<MSyctrList> = {\n query: event.query,\n syctr_id: event.value as string,\n }\n console.log('🔍 COUNTRY SEARCH PAYLOAD:', payload);\n\n this.countryService.getAllCountries(payload).subscribe({\n next: (response) => {\n console.log('✅ COUNTRY SEARCH SUCCESS:', response);\n const countries = this.transformCountryToDropdown(response);\n this.countries.set(countries);\n console.log('🌍 Updated countries count:', countries.length);\n },\n error: (err) => {\n console.error('❌ COUNTRY SEARCH ERROR:', err);\n this.countries.set([]);\n },\n complete: () => {\n // Clear loading state\n this.countriesLoading.set(false);\n }\n });\n } catch (error) {\n console.error('💥 COUNTRY SEARCH EXCEPTION:', error);\n this.countries.set([]);\n this.countriesLoading.set(false);\n }\n }\n\n // Handle postal code selection\n onPostalCodeSelection(event: Event | string) {\n let pinCodeId = '';\n if (typeof event === 'string') {\n pinCodeId = event;\n } else {\n const target = event.target as HTMLSelectElement;\n pinCodeId = target?.value || '';\n }\n console.log('📍 Postal Code Selected:', pinCodeId);\n // The auto-population is handled by the form value change listeners\n // This method can be used for additional logic if needed\n }\n\n // Check if a field has an error\n hasError(controlName: string, errorType?: string): boolean {\n const control = this.getControl(controlName);\n if (!control) return false;\n\n if (errorType) {\n return control.hasError(errorType) && (control.dirty || control.touched);\n }\n return control.invalid && (control.dirty || control.touched);\n }\n\n // Get error message for a field\n getErrorMessage(controlName: string): string {\n const control = this.getControl(controlName);\n if (!control || !control.errors) return '';\n\n const fieldName = controlName.replace('syen_', '').replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n\n if (control.hasError('required')) {\n return `${fieldName} is required`;\n }\n if (control.hasError('maxlength')) {\n return `Maximum length is ${control.errors['maxlength'].requiredLength} characters`;\n }\n if (control.hasError('email')) {\n return 'Please enter a valid email address';\n }\n if (control.hasError('pattern')) {\n return 'Please enter a valid URL starting with http:// or https://';\n }\n return 'Invalid input';\n }\n\n // Get form validation summary\n getFormValidationSummary(): string[] {\n const errors: string[] = [];\n Object.keys(this.entityForm.controls).forEach(key => {\n const control = this.entityForm.get(key);\n if (control && control.invalid && (control.dirty || control.touched)) {\n errors.push(this.getErrorMessage(key));\n }\n });\n return errors;\n }\n\n // Check if form is valid\n get isFormValid(): boolean {\n return this.entityForm.valid;\n }\n\n // Get current mode for display\n get currentMode(): string {\n return this.isEditMode() ? 'Edit' : 'Create';\n }\n\n // Get current entity ID for display\n get currentEntityId(): string | null {\n return this.entityId();\n }\n\n onFileChange(event: FileList | null) {\n if (event && event.length > 0) {\n this.logoFile = event[0];\n console.log('�� Logo File Selected:', this.logoFile.name);\n } else {\n this.logoFile = undefined;\n console.log('📄 No logo file selected.');\n }\n }\n\n onTabChange(tab: TabItem) {\n this.activeTab.set(tab.id);\n }\n\n onSubmit() {\n if (this.entityForm.valid) {\n this.loading.set(true);\n this.error.set(null);\n this.success.set(null);\n\n const formData = this.entityForm.value;\n const isEdit = this.isEditMode();\n const entityId = this.entityId();\n\n console.log(`🏢 ENTITY ${isEdit ? 'UPDATE' : 'CREATE'}: Form data:`, formData);\n\n // Validate required fields before submission\n const requiredFields = ['syen_name', 'syen_entity_code', 'syen_entity_type_gmst'];\n const missingFields = requiredFields.filter(field => !formData[field]);\n \n if (missingFields.length > 0) {\n this.error.set(`Missing required fields: ${missingFields.join(', ')}`);\n this.loading.set(false);\n return;\n }\n\n // Add entity ID to form data if in edit mode\n if (isEdit && entityId) {\n formData._id = entityId;\n }\n\n const saveOperation = this.entityService.saveUpdateEntity(formData);\n\n saveOperation.pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response) => {\n console.log(`✅ ENTITY ${isEdit ? 'UPDATE' : 'CREATE'} SUCCESS:`, response);\n \n if (response?.success) {\n const successMessage = isEdit \n ? 'Entity updated successfully!' \n : 'Entity created successfully!';\n this.success.set(successMessage);\n \n // Update the entity ID if it's a new entity\n if (!isEdit && response?.data) {\n const entityData = Array.isArray(response.data) ? response.data[0] : response.data;\n if (entityData?._id) {\n this.entityId.set(entityData._id);\n this.isEditMode.set(true);\n }\n }\n \n // Optionally redirect to list or stay on form\n // this.router.navigate(['/admin/entities']);\n } else {\n this.error.set(response?.message || `Failed to ${isEdit ? 'update' : 'create'} entity. Please try again.`);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error(`❌ ENTITY ${isEdit ? 'UPDATE' : 'CREATE'} ERROR:`, err);\n \n let errorMessage = `Failed to ${isEdit ? 'update' : 'save'} entity settings.`;\n \n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 400) {\n errorMessage = 'Invalid data provided. Please check your input.';\n } else if (err?.status === 404 && isEdit) {\n errorMessage = 'Entity not found. It may have been deleted.';\n } else if (err?.status === 409) {\n errorMessage = 'Entity with this code already exists. Please use a different code.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n \n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n } else {\n // Mark all fields as touched to show validation errors\n this.entityForm.markAllAsTouched();\n \n const validationErrors = this.getFormValidationSummary();\n console.warn('⚠️ FORM VALIDATION ERRORS:', validationErrors);\n \n this.error.set(`Please fix the following errors: ${validationErrors.join(', ')}`);\n }\n }\n\n onReset() {\n // Clear logo file\n this.logoFile = undefined;\n \n // Reset form to initial values\n this.entityForm.reset({\n syen_name: '',\n syen_entity_type_gmst: '',\n syen_entity_code: '',\n syen_udise_no: '',\n syen_affiliation_no: '',\n syen_isactive: true,\n syen_corporate_address: '',\n syen_corporate_pin_sypin: '',\n syen_corporate_city_sypin: '',\n syen_corporate_state_sypin: '',\n syen_corporate_country_syctr: '',\n syen_corporate_contact_person_user: '',\n syen_corporate_phone: '',\n syen_corporate_phone_alt: '',\n syen_corporate_fax: '',\n syen_corporate_email: '',\n syen_corporate_email_alt: '',\n syen_website: '',\n syen_currency_sycr: '',\n syen_registered_address: '',\n syen_registered_pin_sypin: '',\n syen_registered_city_sypin: '',\n syen_registered_state_sypin: '',\n syen_registered_country_syctr: '',\n syen_registered_contact_person_user: '',\n syen_registered_phone: '',\n syen_registered_fax: '',\n syen_registered_email: '',\n syen_photo_id_cyfm: ''\n });\n \n this.success.set(null);\n this.error.set(null);\n console.log('🔄 Form reset completed');\n }\n} ","<!-- \n DYNAMIC GRID SYSTEM FEATURES:\n \n Basic Grids: grid-1, grid-2, grid-3, grid-4, grid-5, grid-6\n \n Auto-fit Grids: grid-auto-fit-sm/md/lg/xl (dynamic columns based on content)\n Auto-fill Grids: grid-auto-fill-sm/md/lg (always fill available space)\n \n Custom Ratios: grid-ratio-1-2, grid-ratio-2-1, grid-ratio-1-3, grid-ratio-3-1, etc.\n Fractional: grid-quarter-three, grid-third-two, grid-half-half\n \n Gap Control: gap-xs, gap-sm, gap-md, gap-lg, gap-xl\n Specific Gaps: row-gap-xs/sm/md/lg, col-gap-xs/sm/md/lg\n \n Alignment: align-start/center/end/stretch, justify-start/center/end/stretch\n \n Responsive: xl-grid-*, lg-grid-*, md-grid-*, sm-grid-*, xs-grid-*\n \n Grid Items: span-1/2/3/4/5/6/full, row-span-*, start-*, end-*\n Item Alignment: self-start/center/end/stretch, justify-self-*\n \n Special: grid-dense (auto-fills gaps), grid-masonry (masonry layout)\n-->\n\n<div class=\"entity-form-container\">\n <form class=\"entity-form\" [formGroup]=\"entityForm\" [class.loading]=\"loading()\" (ngSubmit)=\"onSubmit()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">Create New Entity</h2>\n <p class=\"form-subtitle\">Add a new educational institution to the system</p>\n </div>\n\n <!-- Success and Error Messages -->\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n {{ success() }}\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n {{ error() }}\n </div>\n }\n\n <!-- Tab Navigation -->\n <div class=\"form-tabs\">\n <cide-ele-tab \n [tabs]=\"entityTabs()\"\n [activeTabId]=\"activeTab()\"\n size=\"md\"\n variant=\"default\"\n (tabChange)=\"onTabChange($event)\">\n </cide-ele-tab>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\"\n [class.loading]=\"loading()\">\n @switch (activeTab()) {\n \n @case ('basic') {\n <!-- Basic Information Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-auto-fit-md gap-md lg-grid-2 md-grid-1\">\n <div class=\"grid-item span-2 md-span-full\">\n <cide-ele-input \n id=\"syen_name\" \n type=\"text\"\n label=\"Institution Name\" \n formControlName=\"syen_name\"\n placeholder=\"Enter full institution name\">\n </cide-ele-input>\n </div>\n \n <cide-ele-input \n label=\"Institution Code\" \n formControlName=\"syen_entity_code\"\n id=\"syen_entity_code\"\n placeholder=\"Enter unique code (max 40 characters)\">\n </cide-ele-input>\n </div>\n\n <div class=\"grid grid-ratio-2-1-1 gap-md lg-grid-3 md-grid-2 sm-grid-1\">\n <cide-ele-select \n label=\"Entity Type\" \n [options]=\"entityTypes()\" \n formControlName=\"syen_entity_type_gmst\"\n placeholder=\"Select entity type\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"UDISE Number\" \n formControlName=\"syen_udise_no\"\n placeholder=\"Enter UDISE number\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Affiliation Number\" \n formControlName=\"syen_affiliation_no\"\n placeholder=\"Enter affiliation number\">\n </cide-ele-input>\n </div>\n\n <div class=\"grid grid-1 gap-sm\">\n <div class=\"checkbox-field\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n formControlName=\"syen_isactive\"\n class=\"checkbox-input\" />\n <span class=\"checkbox-text\">Active Status</span>\n <span class=\"checkbox-description\">Enable this entity for system operations</span>\n </label>\n </div>\n </div>\n </div>\n }\n\n @case ('corporate') {\n <!-- Corporate Address Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-1 gap-md\">\n <div class=\"grid-item span-full\">\n <cide-ele-textarea \n label=\"Corporate Address\" \n formControlName=\"syen_corporate_address\"\n placeholder=\"Enter complete corporate address\"\n [rows]=\"3\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"grid grid-auto-fit-sm gap-lg xl-grid-4 lg-grid-3 md-grid-2 sm-grid-1 align-end\">\n <cide-ele-select \n label=\"Postal Code\"\n [options]=\"postalCodes()\" \n formControlName=\"syen_corporate_pin_sypin\"\n placeholder=\"Select postal code\"\n [searchable]=\"true\"\n [loading]=\"postalCodesLoading()\"\n (searchChange)=\"onPostalCodeSearch($event)\"\n (selectionChange)=\"onPostalCodeSelection($event)\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"City\" \n formControlName=\"syen_corporate_city_sypin\"\n placeholder=\"Enter city\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"State\" \n formControlName=\"syen_corporate_state_sypin\"\n placeholder=\"Enter state\">\n </cide-ele-input>\n \n <cide-ele-select \n label=\"Country\" \n [options]=\"countries()\" \n formControlName=\"syen_corporate_country_syctr\"\n placeholder=\"Select country\"\n [searchable]=\"true\"\n [loading]=\"countriesLoading()\"\n (searchChange)=\"onCountrySearch($event)\">\n </cide-ele-select>\n </div>\n </div>\n }\n\n @case ('contact') {\n <!-- Contact Information Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-ratio-3-1 gap-lg md-grid-2 sm-grid-1 justify-stretch\">\n <div class=\"grid-item justify-self-stretch\">\n <cide-ele-select \n label=\"Primary Contact Person\"\n [options]=\"users()\" \n formControlName=\"syen_corporate_contact_person_user\"\n placeholder=\"Select contact person\"\n [searchable]=\"true\"\n [loading]=\"usersLoading()\"\n (searchChange)=\"onUserSearch($event)\">\n </cide-ele-select>\n </div>\n \n <div class=\"grid-item justify-self-stretch\">\n <cide-ele-select \n label=\"Currency\" \n [options]=\"currencies()\" \n formControlName=\"syen_currency_sycr\"\n placeholder=\"Select currency\">\n </cide-ele-select>\n </div>\n </div>\n\n <div class=\"grid grid-auto-fill-md gap-md col-gap-lg row-gap-sm xl-grid-3 lg-grid-2 md-grid-1 grid-dense\">\n <cide-ele-input \n label=\"Primary Phone\" \n formControlName=\"syen_corporate_phone\"\n type=\"tel\"\n placeholder=\"Enter phone number\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Alternate Phone\" \n formControlName=\"syen_corporate_phone_alt\"\n type=\"tel\"\n placeholder=\"Enter alternate phone\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Fax Number\" \n formControlName=\"syen_corporate_fax\"\n placeholder=\"Enter fax number\">\n </cide-ele-input>\n </div>\n\n <div class=\"grid grid-ratio-1-2-1 gap-xl lg-grid-3 md-grid-2 sm-grid-1 align-center\">\n <div class=\"grid-item self-stretch\">\n <cide-ele-input \n label=\"Primary Email\" \n formControlName=\"syen_corporate_email\"\n type=\"email\"\n placeholder=\"Enter primary email\">\n </cide-ele-input>\n </div>\n \n <div class=\"grid-item span-2 lg-span-1 self-stretch\">\n <cide-ele-input \n label=\"Website URL\" \n formControlName=\"syen_website\"\n type=\"url\"\n placeholder=\"Enter website URL\">\n </cide-ele-input>\n </div>\n \n <div class=\"grid-item self-stretch\">\n <cide-ele-input \n label=\"Alternate Email\" \n formControlName=\"syen_corporate_email_alt\"\n type=\"email\"\n placeholder=\"Enter alternate email\">\n </cide-ele-input>\n </div>\n </div>\n </div>\n }\n\n @case ('registered') {\n <!-- Registered Address Section -->\n <div class=\"form-section\">\n <div class=\"grid grid-1\">\n <cide-ele-textarea \n label=\"Registered Address\" \n formControlName=\"syen_registered_address\"\n placeholder=\"Enter complete registered address\"\n [rows]=\"3\">\n </cide-ele-textarea>\n </div>\n\n <div class=\"grid grid-4\">\n <cide-ele-select \n label=\"Registered Postal Code\"\n [options]=\"postalCodes()\" \n formControlName=\"syen_registered_pin_sypin\"\n placeholder=\"Select postal code\"\n [searchable]=\"true\"\n [loading]=\"postalCodesLoading()\"\n (searchChange)=\"onPostalCodeSearch($event)\"\n (selectionChange)=\"onPostalCodeSelection($event)\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"Registered City\" \n formControlName=\"syen_registered_city_sypin\"\n placeholder=\"Enter city\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Registered State\" \n formControlName=\"syen_registered_state_sypin\"\n placeholder=\"Enter state\">\n </cide-ele-input>\n \n <cide-ele-select \n label=\"Registered Country\" \n [options]=\"countries()\" \n formControlName=\"syen_registered_country_syctr\"\n placeholder=\"Select country\"\n [searchable]=\"true\"\n [loading]=\"countriesLoading()\"\n (searchChange)=\"onCountrySearch($event)\">\n </cide-ele-select>\n </div>\n\n <div class=\"grid grid-3\">\n <cide-ele-select \n label=\"Registered Contact Person\"\n [options]=\"users()\" \n formControlName=\"syen_registered_contact_person_user\"\n placeholder=\"Select contact person\"\n [searchable]=\"true\"\n [loading]=\"usersLoading()\"\n (searchChange)=\"onUserSearch($event)\">\n </cide-ele-select>\n \n <cide-ele-input \n label=\"Registered Phone\" \n formControlName=\"syen_registered_phone\"\n type=\"tel\"\n placeholder=\"Enter phone number\">\n </cide-ele-input>\n \n <cide-ele-input \n label=\"Registered Email\" \n formControlName=\"syen_registered_email\"\n type=\"email\"\n placeholder=\"Enter email\">\n </cide-ele-input>\n @if (hasError('syen_registered_email')) {\n <div class=\"error-message\">{{ getErrorMessage('syen_registered_email') }}</div>\n }\n </div>\n\n <div class=\"grid grid-1\">\n <cide-ele-input \n label=\"Registered Fax\" \n formControlName=\"syen_registered_fax\"\n placeholder=\"Enter fax number\">\n </cide-ele-input>\n </div>\n </div>\n }\n\n @case ('documents') {\n <!-- Documents Section -->\n <div class=\"form-section\">\n <!-- Photo ID Document -->\n <div class=\"grid grid-1 gap-md\">\n <cide-ele-select \n label=\"Photo ID Document\" \n [options]=\"photoIdDocuments()\" \n formControlName=\"syen_photo_id_cyfm\"\n placeholder=\"Select photo ID document\">\n </cide-ele-select>\n </div>\n\n <!-- Logo Upload -->\n <div class=\"grid grid-quarter-three gap-lg md-grid-1 align-center\">\n <div class=\"grid-item self-center justify-self-center\">\n <!-- Logo preview placeholder -->\n <div style=\"width: 120px; height: 120px; border: 2px dashed #cbd5e1; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #9ca3af; font-size: 0.875rem; text-align: center;\">\n Logo Preview\n </div>\n </div>\n <div class=\"grid-item self-stretch\">\n <cide-ele-file-input \n label=\"Upload Logo\" \n accept=\"image/*\" \n [multiple]=\"false\" \n (fileChange)=\"onFileChange($event)\"\n placeholder=\"Select institution logo or image\">\n </cide-ele-file-input>\n </div>\n </div>\n </div>\n }\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"onReset()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || entityForm.invalid\"\n [loading]=\"loading()\"\n leftIcon=\"check\">\n Create Entity\n </button>\n </div>\n </form>\n</div> ","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, MEntity, entityControllerResponse, generateStringFromObject } from 'cloud-ide-lms-model';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideAdmEntityListService {\r\n private http = inject(HttpClient);\r\n\r\n /**\r\n * Get list of entities using the proper API endpoint\r\n * @param body - MEntity payload for filtering/pagination\r\n * @returns Observable of entityControllerResponse\r\n */\r\n getEntityList(body: MEntity): Observable<entityControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n const url = cidePath.join([\r\n hostManagerRoutesUrl.cideSuiteHost,\r\n coreRoutesUrl.module,\r\n coreRoutesUrl.entity,\r\n query\r\n ]);\r\n\r\n console.log('🔍 ENTITY SERVICE: Making API call to:', url);\r\n console.log('🔍 ENTITY SERVICE: Payload:', body);\r\n\r\n return this.http.get(url) as Observable<entityControllerResponse>;\r\n }\r\n\r\n /**\r\n * Get entity list with default parameters\r\n * @returns Observable of entityControllerResponse\r\n */\r\n getAllEntities(): Observable<entityControllerResponse> {\r\n const defaultPayload = {} as MEntity;\r\n return this.getEntityList(defaultPayload);\r\n }\r\n\r\n /**\r\n * Get filtered entity list\r\n * @param filters - Filter parameters\r\n * @returns Observable of entityControllerResponse\r\n */\r\n getFilteredEntities(filters: Partial<MEntity>): Observable<entityControllerResponse> {\r\n const payload = { ...filters } as MEntity;\r\n return this.getEntityList(payload);\r\n }\r\n} ","import { Component, signal, OnInit, inject, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport {\n CideInputComponent,\n CideIconComponent,\n TooltipDirective\n} from 'cloud-ide-element';\nimport { CideEleButtonComponent, CideSelectComponent } from 'cloud-ide-element';\nimport { CideEleDataGridComponent ,GridConfiguration, GridEvent} from 'cloud-ide-element';\nimport { CideAdmEntityListService } from './cide-adm-entity-list.service';\nimport { entityControllerResponse, entityResponseData, generateStringFromObject } from 'cloud-ide-lms-model';\n\n\n@Component({\n selector: 'cide-adm-entity-list',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CideInputComponent,\n CideIconComponent,\n CideEleButtonComponent,\n CideSelectComponent,\n TooltipDirective,\n CideEleDataGridComponent\n ],\n templateUrl: './cide-adm-entity-list.component.html',\n styleUrl: './cide-adm-entity-list.component.scss',\n styles: [`\n :host {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n \n .entity-list-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n \n .tw-overflow-auto {\n flex: 1;\n min-height: 0;\n }\n \n cide-ele-data-grid {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n `]\n})\nexport class CideAdmEntityListComponent implements OnInit {\n // Modern dependency injection using inject()\n router = inject(Router); // Made public for template access\n private entityService = inject(CideAdmEntityListService);\n\n // ViewChild reference to the grid component\n @ViewChild(CideEleDataGridComponent) gridComponent!: CideEleDataGridComponent<entityResponseData>;\n\n // State management using Angular Signals\n entities = signal<entityResponseData[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n searchQuery = signal('');\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n selectedEntityType = signal('');\n\n // Getter and setter for ngModel compatibility\n get selectedEntityTypeValue(): string {\n return this.selectedEntityType();\n }\n\n set selectedEntityTypeValue(value: string) {\n this.selectedEntityType.set(value);\n }\n\n // Pagination calculations\n totalPages = signal(0);\n hasNextPage = signal(false);\n hasPreviousPage = signal(false);\n jumpToPage: number = 1;\n loadStartTime: number = 0;\n\n // Filter options\n entityTypeOptions = signal([\n { value: '', label: 'All Entity Types' },\n { value: 'school', label: 'School' },\n { value: 'college', label: 'College' },\n { value: 'university', label: 'University' },\n { value: 'institute', label: 'Institute' }\n ]);\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<entityResponseData>>({\n id: 'entity-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Entity Details',\n type: 'custom',\n width: 'lg',\n truncate: true,\n align: 'left',\n renderer: 'entityDetailsRenderer'\n },\n {\n key: 'contact',\n header: 'Contact Information',\n type: 'custom',\n width: 'lg',\n truncate: true,\n align: 'left',\n renderer: 'contactInfoRenderer'\n },\n {\n key: 'syen_isactive',\n header: 'Status',\n type: 'status',\n width: 'md',\n truncate: false,\n align: 'center',\n statusConfig: {\n activeValue: true,\n activeLabel: 'Active',\n inactiveLabel: 'Inactive',\n activeClass: 'tw-bg-green-100 tw-text-green-800',\n inactiveClass: 'tw-bg-red-100 tw-text-red-800'\n }\n },\n {\n key: 'syen_entity_type_gmst',\n header: 'Entity Type',\n type: 'text',\n width: 'md',\n truncate: false,\n align: 'center'\n },\n {\n key: 'actions',\n header: 'Actions',\n type: 'actions',\n width: 'md',\n truncate: false,\n align: 'right',\n actions: [\n {\n key: 'edit',\n label: 'Edit',\n icon: 'pencil',\n variant: 'outline',\n tooltip: 'Edit entity',\n onClick: 'onEditEntity'\n },\n {\n key: 'delete',\n label: 'Delete',\n icon: 'trash',\n variant: 'danger',\n tooltip: 'Delete entity',\n onClick: 'onDeleteEntity'\n }\n ]\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search entities...',\n searchableColumns: ['syen_name', 'syen_entity_code', 'syen_corporate_email'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n fullHeight: true,\n onRowClick: 'onEntityRowClick',\n onRefresh: 'onEntityRefresh',\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'syen_parent_entity_id',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'isExpanded',\n hasChildrenKey: 'hasChildren'\n }\n });\n\n // Custom renderers for complex columns\n customRenderers = {\n entityDetailsRenderer: (value: unknown, row: entityResponseData): string => {\n const entityCode = row.syen_entity_code || 'N/A';\n const entityName = row.syen_name || 'Unknown Entity';\n\n return `\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <div class=\"tw-flex-shrink-0 tw-w-10 tw-h-10 tw-bg-blue-100 tw-rounded-full tw-flex tw-items-center tw-justify-center\">\n <span class=\"tw-text-blue-600 tw-font-semibold tw-text-sm\">\n ${entityCode.substring(0, 2).toUpperCase()}\n </span>\n </div>\n <div class=\"tw-flex-1 tw-min-w-0\">\n <p class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" title=\"${entityName}\">\n ${entityName}\n </p>\n <p class=\"tw-text-sm tw-text-gray-500 tw-truncate\" title=\"${entityCode}\">\n Code: ${entityCode}\n </p>\n </div>\n </div>\n `;\n },\n\n contactInfoRenderer: (value: unknown, row: entityResponseData): string => {\n const contactPerson = row.syen_corporate_contact_person_user || 'N/A';\n const email = row.syen_corporate_email || 'N/A';\n const phone = row.syen_corporate_phone ? String(row.syen_corporate_phone) : 'N/A';\n\n return `\n <div class=\"tw-space-y-1\">\n <p class=\"tw-text-sm tw-text-gray-900 tw-truncate tw-flex tw-items-center\" title=\"${contactPerson}\">\n <svg class=\"tw-flex-shrink-0 tw-w-4 tw-h-4 tw-text-gray-400 tw-mr-2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\"/>\n </svg>\n <span class=\"tw-truncate\">${contactPerson}</span>\n </p>\n <p class=\"tw-text-sm tw-text-gray-600 tw-truncate tw-flex tw-items-center\" title=\"${email}\">\n <svg class=\"tw-flex-shrink-0 tw-w-4 tw-h-4 tw-text-gray-400 tw-mr-2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z\"/>\n <path d=\"M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z\"/>\n </svg>\n <span class=\"tw-truncate\">${email}</span>\n </p>\n <p class=\"tw-text-sm tw-text-gray-600 tw-truncate tw-flex tw-items-center\" title=\"${phone}\">\n <svg class=\"tw-flex-shrink-0 tw-w-4 tw-h-4 tw-text-gray-400 tw-mr-2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path d=\"M2 3a1 1 0 011-1h2.153a1 1 0 01.986.836l.74 4.435a1 1 0 01-.54 1.06l-1.548.773a11.037 11.037 0 006.105 6.105l.774-1.548a1 1 0 011.059-.54l4.435.74a1 1 0 01.836.986V17a1 1 0 01-1 1h-2C7.82 18 2 12.18 2 5V3z\"/>\n </svg>\n <span class=\"tw-truncate\">${phone}</span>\n </p>\n </div>\n `;\n }\n };\n\n // Action handlers\n actionHandlers = {\n onEditEntity: (entity: entityResponseData) => {\n const query: string = generateStringFromObject({\n syen_id: entity._id\n })\n this.router.navigate(['control-panel', 'entity-create', query]);\n },\n\n onDeleteEntity: (entity: entityResponseData) => {\n const entityName = entity.syen_name || 'this entity';\n if (confirm(`Are you sure you want to delete ${entityName}?`)) {\n this.onDeleteEntityConfirmed(entity._id || '');\n }\n }\n };\n\n ngOnInit() {\n console.log('🔧 ENTITY LIST: Component initializing');\n this.updatePaginationState();\n\n // Set initial loading state to false to allow grid to render\n this.loading.set(false);\n\n // Load entities from API\n this.loadEntities();\n }\n\n // Grid event handler\n onGridEvent(event: GridEvent<entityResponseData>) {\n console.log('📡 GRID EVENT: Received grid event:', event.type, event);\n\n switch (event.type) {\n case 'rowClick':\n this.onEntityRowClick(event.data as entityResponseData);\n break;\n case 'refresh':\n this.onEntityRefresh();\n break;\n case 'search':\n this.onEntitySearch(event.data as string);\n break;\n case 'pageChange':\n this.onEntityPageChange(event.data as number);\n break;\n default:\n console.log('Unhandled grid event:', event.type);\n }\n }\n\n // Event handlers for grid events\n private onEntityRowClick(entity: entityResponseData) {\n console.log('Entity row clicked:', entity);\n this.router.navigate(['admin', 'entity', 'view', entity._id]);\n }\n\n private onEntityRefresh() {\n console.log('Refreshing entities...');\n this.loadEntities(true);\n }\n\n private onEntitySearch(query: string) {\n console.log('Search entities:', query);\n this.searchQuery.set(query);\n // The grid handles the actual filtering\n }\n\n private onEntityPageChange(page: number) {\n console.log('Page changed to:', page);\n this.currentPage.set(page);\n \n // Reload data for the new page\n this.loadEntities(false);\n }\n\n private onDeleteEntityConfirmed(entityId: string) {\n // In a real app, you'd call the API to delete\n console.log('Deleting entity:', entityId);\n // For now, just reload the entities\n this.loadEntities(true);\n }\n\n // Update grid data method\n private updateGridData(entities: entityResponseData[]) {\n console.log('📊 GRID UPDATE: Updating grid with', entities.length, 'entities');\n console.log('📊 GRID UPDATE: Sample entity data:', entities[0] || 'No entities');\n\n // Set the entities signal\n this.entities.set(entities);\n\n // Update grid configuration with new data and ensure loading is false\n this.gridConfig.update(config => ({\n ...config,\n data: entities\n }));\n\n // Ensure loading states are cleared\n this.loading.set(false);\n \n // Clear page change loading state in the grid component\n if (this.gridComponent) {\n this.gridComponent.clearPageChangeLoading();\n }\n\n console.log('📊 GRID UPDATE: Grid config updated successfully');\n console.log('📊 GRID UPDATE: Current grid data length:', this.gridConfig().data.length);\n console.log('📊 GRID UPDATE: Loading state:', this.loading());\n console.log('📊 GRID UPDATE: Full grid config for debugging:', JSON.stringify(this.gridConfig(), null, 2));\n }\n\n loadEntities(isRefresh: boolean = false) {\n if (isRefresh) {\n console.log('🔄 ENTITY LIST: Refreshing entities');\n // Set the grid's refresh state to true\n if (this.gridComponent) {\n this.gridComponent.setRefreshing(true);\n }\n } else {\n this.loading.set(true);\n console.log('🔍 ENTITY LIST: Loading entities from API');\n }\n this.error.set(null);\n this.loadStartTime = Date.now();\n\n this.entityService.getAllEntities().subscribe({\n next: (response: entityControllerResponse) => {\n console.log('✅ ENTITY LIST: API response received:', response);\n\n // Process the response data\n if (response?.data) {\n // Handle both array and single object responses\n const entitiesData = Array.isArray(response.data) ? response.data : [response.data];\n console.log('📋 ENTITY LIST: Processed entities data:', entitiesData.length, 'entities');\n\n if (entitiesData.length > 0) {\n console.log('📊 ENTITY LIST: First entity sample:', entitiesData[0]);\n this.updateGridData(entitiesData);\n this.totalItems.set(entitiesData.length);\n } else {\n console.log('📊 ENTITY LIST: No entities returned, showing test data');\n this.loadTestData();\n }\n } else {\n console.warn('⚠️ ENTITY LIST: No data in API response, loading test data');\n this.loadTestData();\n }\n\n this.updatePaginationState();\n this.loading.set(false);\n \n // Clear page change loading state in the grid component\n if (this.gridComponent) {\n this.gridComponent.clearPageChangeLoading();\n }\n \n // Set the grid's refresh state to false when done\n if (isRefresh && this.gridComponent) {\n this.gridComponent.setRefreshing(false);\n }\n },\n error: (err) => {\n console.error('❌ ENTITY LIST: API error:', err);\n console.log('🧪 ENTITY LIST: API failed, loading test data for demonstration');\n\n // Load test data when API fails\n this.loadTestData();\n this.error.set('API unavailable. Showing sample data.');\n\n this.loading.set(false);\n \n // Clear page change loading state in the grid component\n if (this.gridComponent) {\n this.gridComponent.clearPageChangeLoading();\n }\n \n // Set the grid's refresh state to false when done\n if (isRefresh && this.gridComponent) {\n this.gridComponent.setRefreshing(false);\n }\n }\n });\n }\n\n private loadTestData() {\n console.log('🧪 ENTITY LIST: Loading test data');\n const testData: entityResponseData[] = [\n {\n _id: 'test-1',\n syen_name: 'Test University',\n syen_entity_code: 'TEST001',\n syen_corporate_email: 'test@university.com',\n syen_corporate_contact_person_user: 'John Doe',\n syen_corporate_phone: 9876543210, // Now a number\n syen_isactive: true,\n syen_entity_type_gmst: 'university',\n children: []\n },\n {\n _id: 'test-2',\n syen_name: 'Sample College',\n syen_entity_code: 'SAMP002',\n syen_corporate_email: 'info@samplecollege.edu',\n syen_corporate_contact_person_user: 'Jane Smith',\n syen_corporate_phone: 9876543211,\n syen_isactive: false,\n syen_entity_type_gmst: 'college',\n children: []\n },\n {\n _id: 'test-3',\n syen_name: 'Global Institute of Technology',\n syen_entity_code: 'GIT003',\n syen_corporate_email: 'admin@git.edu',\n syen_corporate_contact_person_user: 'Bob Johnson',\n syen_corporate_phone: 9876543212,\n syen_isactive: true,\n syen_entity_type_gmst: 'institute',\n children: []\n }\n ];\n\n console.log('🧪 ENTITY LIST: Test data prepared:', testData);\n this.updateGridData(testData);\n this.totalItems.set(testData.length);\n }\n\n private updatePaginationState() {\n const total = Math.ceil(this.totalItems() / this.pageSize());\n this.totalPages.set(total);\n this.hasNextPage.set(this.currentPage() < total);\n this.hasPreviousPage.set(this.currentPage() > 1);\n }\n\n onSearch() {\n this.currentPage.set(1);\n this.loadEntities();\n }\n\n onFilterChange() {\n this.currentPage.set(1);\n this.loadEntities();\n }\n\n onPageChange(page: number | string) {\n if (parseInt(page as string) >= 1 && parseInt(page as string) <= this.totalPages()) {\n this.currentPage.set(parseInt(page as string));\n this.loadEntities();\n }\n }\n\n onPageSizeChange() {\n this.currentPage.set(1);\n this.loadEntities();\n }\n\n onRefresh() {\n this.loadEntities(true); // Pass true for refresh\n }\n\n onAddEntity() {\n // Navigate to entity create form\n this.router.navigate(['/control-panel/entity-create']);\n }\n\n onEditEntity(entity: entityResponseData) {\n // TODO: Implement edit functionality - navigate to edit form with entity ID\n this.router.navigate(['/control-panel/entity-create'], {\n queryParams: { id: entity._id, mode: 'edit' }\n });\n console.log('Edit entity:', entity);\n }\n\n onViewEntity(entity: entityResponseData) {\n // TODO: Implement view functionality\n console.log('View entity:', entity);\n }\n\n onDeleteEntity(entity: entityResponseData) {\n if (confirm(`Are you sure you want to delete \"${entity.syen_name}\"?`)) {\n // TODO: Implement delete functionality\n console.log('Delete entity:', entity);\n }\n }\n\n getStatusClass(isActive: boolean): string {\n return isActive\n ? 'tw-bg-green-100 tw-text-green-800'\n : 'tw-bg-red-100 tw-text-red-800';\n }\n\n getStatusText(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n formatDate(date: Date | string | undefined): string {\n if (!date) return 'N/A';\n return new Date(date).toLocaleDateString();\n }\n\n // Pagination helper methods\n getPageNumbers(): number[] {\n const total = this.totalPages();\n const current = this.currentPage();\n const delta = 2; // Number of pages to show on each side of current page\n\n const pages: number[] = [];\n const start = Math.max(1, current - delta);\n const end = Math.min(total, current + delta);\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n return pages;\n }\n\n getItemRangeText(): string {\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\n const end = Math.min(this.currentPage() * this.pageSize(), this.totalItems());\n const total = this.totalItems();\n\n return `${start}-${end} of ${total}`;\n }\n\n trackByEntityId(index: number, entity: entityResponseData): string {\n return entity?._id || '';\n }\n\n // ===== Enhanced Pagination Methods =====\n\n /**\n * Get enhanced page numbers with ellipsis for better navigation\n */\n getEnhancedPageNumbers(): (number | string)[] {\n const total = this.totalPages();\n const current = this.currentPage();\n const pages: (number | string)[] = [];\n\n if (total <= 7) {\n // Show all pages if 7 or fewer\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n // Always show first page\n pages.push(1);\n\n if (current <= 4) {\n // Current page is near the beginning\n for (let i = 2; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(total);\n } else if (current >= total - 3) {\n // Current page is near the end\n pages.push('...');\n for (let i = total - 4; i <= total; i++) {\n pages.push(i);\n }\n } else {\n // Current page is in the middle\n pages.push('...');\n for (let i = current - 1; i <= current + 1; i++) {\n pages.push(i);\n }\n pages.push('...');\n pages.push(total);\n }\n }\n\n return pages;\n }\n\n /**\n * Calculate progress percentage based on current position\n */\n getProgressPercentage(): number {\n if (this.totalPages() === 0) return 0;\n return Math.round((this.currentPage() / this.totalPages()) * 100);\n }\n\n /**\n * Jump to specific page functionality\n */\n onJumpToPage(): void {\n if (this.jumpToPage >= 1 && this.jumpToPage <= this.totalPages()) {\n this.onPageChange(this.jumpToPage);\n }\n }\n\n /**\n * Get simulated load time for performance display\n */\n getLoadTime(): number {\n return this.loadStartTime > 0 ? Date.now() - this.loadStartTime : 0;\n }\n\n /**\n * Get total data size for display\n */\n getTotalDataSize(): number {\n return this.totalItems();\n }\n\n /**\n * Export current page entities\n */\n onExportCurrentPage(): void {\n const currentPageEntities = this.entities();\n console.log('Exporting current page:', currentPageEntities);\n // TODO: Implement actual export functionality\n alert(`Exporting ${currentPageEntities.length} entities from current page`);\n }\n\n /**\n * Export all entities\n */\n onExportAll(): void {\n console.log('Exporting all entities');\n // TODO: Implement actual export functionality\n alert(`Exporting all ${this.totalItems()} entities`);\n }\n} ","<!-- Entity List Container -->\n<div class=\"entity-list-container tw-bg-white tw-shadow-lg tw-rounded-lg tw-overflow-hidden\">\n \n <!-- Header Section with Filters -->\n <div class=\"tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-4 sm:tw-space-y-0\">\n \n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600\">apartment</cide-ele-icon>\n <div>\n <h5 class=\"tw-text-md tw-font-semibold tw-text-gray-900\">Entity Management</h5>\n <p class=\"tw-text-sm tw-text-gray-600\">Manage and view all entities in the system</p>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <!-- Entity Type Filter -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <label for=\"entityTypeFilter\" class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Type:</label>\n <cide-ele-select\n id=\"entityTypeFilter\"\n [options]=\"entityTypeOptions()\"\n [(ngModel)]=\"selectedEntityTypeValue\"\n (ngModelChange)=\"loadEntities()\"\n class=\"tw-min-w-40\">\n </cide-ele-select>\n </div>\n\n <!-- Add Entity Button -->\n <button\n cideEleButton\n variant=\"primary\"\n size=\"sm\"\n (click)=\"router.navigate(['control-panel', 'entity-create'])\"\n class=\"tw-whitespace-nowrap tw-flex tw-items-center tw-gap-2\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-6 tw-h-5\">add</cide-ele-icon>\n Add Entity\n </button>\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex\">\n <cide-ele-icon name=\"exclamation-triangle\" class=\"tw-text-red-400\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Data Grid Component -->\n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n [customRenderers]=\"customRenderers\"\n [actionHandlers]=\"actionHandlers\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n\n</div>","import { Routes } from '@angular/router';\r\n// import { authGuard } from '../../../../src/app/guards/auth.guard';\r\n\r\nexport const adminRoutes: Routes = [{\r\n path: \"admin-home\",\r\n loadComponent: () => import('./admin-module/home/home-wrapper/cide-adm-home-wrapper.component').then(c => c.CideAdmHomeWrapperComponent),\r\n // canActivate: [authGuard],\r\n},\r\n{\r\n path: \"home-admin\",\r\n loadComponent: () => import('./admin-module/home/home-wrapper/cide-adm-home-wrapper.component').then(c => c.CideAdmHomeWrapperComponent),\r\n},\r\n{\r\n path: \"entity-list\",\r\n loadComponent: () => import('./admin-module/entity/list/cide-adm-entity-list.component').then(c => c.CideAdmEntityListComponent),\r\n // canActivate: [authGuard],\r\n data: {\r\n reuseTab: true,\r\n sypg_page_code: \"admin_entity_list\"\r\n }\r\n},\r\n{\r\n path: \"entity-create\",\r\n loadComponent: () => import('./admin-module/entity/create/cide-adm-entity.component').then(c => c.CideAdmEntityComponent),\r\n // canActivate: [authGuard],\r\n data: {\r\n reuseTab: true,\r\n sypg_page_code: \"core_entity_form\"\r\n }\r\n},\r\n{\r\n path: \"entity-create/:query\",\r\n loadComponent: () => import('./admin-module/entity/create/cide-adm-entity.component').then(c => c.CideAdmEntityComponent),\r\n // canActivate: [authGuard],\r\n data: {\r\n reuseTab: true,\r\n sypg_page_code: \"core_entity_form\"\r\n }\r\n}]","/*\r\n * Public API Surface of cloud-ide-admin\r\n */\r\n\r\nexport * from './lib/cide-adm-admin.service';\r\nexport * from './lib/cide-adm-admin.component';\r\nexport * from './lib/admin-module/entity/create/cide-adm-entity.component';\r\nexport * from './lib/admin-module/entity/create/cide-adm-entity.service';\r\nexport * from './lib/admin-module/entity/list/cide-adm-entity-list.component';\r\nexport * from './lib/cloud-ide-admin.routes';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloud-ide-admin",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"