{"ast":null,"code":"import { HttpHeaders } from '@angular/common/http';\nimport { environment } from './environments/environment';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./services/auth.service\";\nimport * as i2 from \"./services/client.service\";\nimport * as i3 from \"./services/user.service\";\nimport * as i4 from \"@angular/router\";\nimport * as i5 from \"@angular/common/http\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"@angular/forms\";\nfunction AppComponent_nav_0_li_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\")(1, \"a\", 7);\n    i0.ɵɵtext(2, \"Home\");\n    i0.ɵɵelementEnd()();\n  }\n}\nfunction AppComponent_nav_0_li_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\")(1, \"a\", 8);\n    i0.ɵɵtext(2, \"Ajuste de P\\u00E1tio\");\n    i0.ɵɵelementEnd()();\n  }\n}\nfunction AppComponent_nav_0_li_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\")(1, \"a\", 9);\n    i0.ɵɵtext(2, \"Mensagens\");\n    i0.ɵɵelementEnd()();\n  }\n}\nfunction AppComponent_nav_0_li_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\")(1, \"a\", 10);\n    i0.ɵɵtext(2, \"Relat\\u00F3rio\");\n    i0.ɵɵelementEnd()();\n  }\n}\nfunction AppComponent_nav_0_li_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\")(1, \"a\", 11);\n    i0.ɵɵtext(2, \"Cadastro\");\n    i0.ɵɵelementEnd()();\n  }\n}\nfunction AppComponent_nav_0_option_12_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"option\", 12);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const cliente_r3 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", cliente_r3.id);\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(cliente_r3.name || \"Sem Nome\");\n  }\n}\nfunction AppComponent_nav_0_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r1 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"nav\")(1, \"ul\");\n    i0.ɵɵtemplate(2, AppComponent_nav_0_li_2_Template, 3, 0, \"li\", 0)(3, AppComponent_nav_0_li_3_Template, 3, 0, \"li\", 0)(4, AppComponent_nav_0_li_4_Template, 3, 0, \"li\", 0)(5, AppComponent_nav_0_li_5_Template, 3, 0, \"li\", 0)(6, AppComponent_nav_0_li_6_Template, 3, 0, \"li\", 0);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(7, \"div\", 1)(8, \"div\", 2)(9, \"label\", 3);\n    i0.ɵɵtext(10, \"Selecionar Cliente:\");\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(11, \"select\", 4);\n    i0.ɵɵtwoWayListener(\"ngModelChange\", function AppComponent_nav_0_Template_select_ngModelChange_11_listener($event) {\n      i0.ɵɵrestoreView(_r1);\n      const ctx_r1 = i0.ɵɵnextContext();\n      i0.ɵɵtwoWayBindingSet(ctx_r1.selectedClient, $event) || (ctx_r1.selectedClient = $event);\n      return i0.ɵɵresetView($event);\n    });\n    i0.ɵɵlistener(\"change\", function AppComponent_nav_0_Template_select_change_11_listener() {\n      i0.ɵɵrestoreView(_r1);\n      const ctx_r1 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r1.onClientChange(ctx_r1.selectedClient));\n    });\n    i0.ɵɵtemplate(12, AppComponent_nav_0_option_12_Template, 2, 2, \"option\", 5);\n    i0.ɵɵelementEnd()();\n    i0.ɵɵelementStart(13, \"button\", 6);\n    i0.ɵɵlistener(\"click\", function AppComponent_nav_0_Template_button_click_13_listener() {\n      i0.ɵɵrestoreView(_r1);\n      const ctx_r1 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r1.logout());\n    });\n    i0.ɵɵtext(14, \"Logout\");\n    i0.ɵɵelementEnd()()();\n  }\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngIf\", ctx_r1.authService.hasFunctionality(\"TELA HOME\"));\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r1.authService.hasFunctionality(\"TELA AJUSTE DE PATIO\"));\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r1.authService.hasFunctionality(\"TELA DE MENSAGENS\"));\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r1.authService.hasFunctionality(\"TELA RELATORIOS\"));\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r1.authService.hasFunctionality(\"TELA DE CADASTRO\"));\n    i0.ɵɵadvance(5);\n    i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r1.selectedClient);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngForOf\", ctx_r1.clients);\n  }\n}\nexport let AppComponent = /*#__PURE__*/(() => {\n  class AppComponent {\n    constructor(authService, clientService, userService, router, cdRef,\n    // 👈 novo\n    http) {\n      this.authService = authService;\n      this.clientService = clientService;\n      this.userService = userService;\n      this.router = router;\n      this.cdRef = cdRef;\n      this.http = http;\n      this.title = 'RF ContaVagas';\n      this.selectedClient = '';\n      this.clients = [];\n      this.userName = '';\n      this.userRole = '';\n      this.grounds = [];\n      this.clientId_adjustment = 0;\n    }\n    ngOnInit() {\n      this.clientService.selectedClient$.subscribe(clientId => {\n        this.selectedClient = clientId;\n        this.cdRef.detectChanges(); // 👈 força a atualização segura\n      });\n    }\n    loadClients() {\n      const userId = this.userService.getUserId();\n      const apiUrl = environment.apiUrlBackEnd;\n      const url = `${apiUrl}/api/users/${userId}/access`;\n      this.http.get(url).subscribe(data => {\n        if (data.parkingAccess && data.parkingAccess.length > 0) {\n          const firstParkingAccess = data.parkingAccess[0];\n          this.userName = `Nome: ${firstParkingAccess.nome}`;\n          this.userRole = `Cargo: ${firstParkingAccess.cargo}`;\n          this.userService.setUserAccessData(data); // ✔ salva o objeto completo retornado da API\n          this.clients = data.parkingAccess.map(parking => ({\n            id: parking.id,\n            name: parking.parkingName\n          }));\n          if (this.clients.length) {\n            this.selectedClient = this.clients[0].id.toString();\n            this.clientService.setSelectedClient(this.clients[0].id);\n            this.getParkingData(this.clients[0].id);\n          }\n        }\n      }, error => {\n        console.error('Erro ao buscar dados de acesso do usuário', error);\n      });\n    }\n    getParkingData(clientId) {\n      const apiUrl = environment.apiUrlBackEndExternaApiDB + `/v1/spark-customers/ground/{\"id_customer\":${clientId},\"id_park\":1}`;\n      const headers = new HttpHeaders().set('device', 'manager');\n      this.http.get(apiUrl, {\n        headers\n      }).subscribe(data => {\n        this.grounds = data;\n        if (this.grounds.length > 0) {\n          this.selectedGround = this.grounds[0];\n        }\n      }, error => {\n        console.error('Erro ao buscar dados dos grounds', error);\n      });\n      this.clientId_adjustment = clientId;\n    }\n    onClientChange(clientId) {\n      this.selectedClient = clientId;\n      const numericClientId = +clientId;\n      this.clientService.updateSelectedClient(clientId);\n      this.getParkingData(numericClientId);\n      this.updateUserAccessForClient(numericClientId); // ✅ nova chamada para atualizar menus\n    }\n    updateUserAccessForClient(clientId) {\n      const userId = this.userService.getUserId();\n      const apiUrl = environment.apiUrlBackEnd;\n      const url = `${apiUrl}/api/users/${userId}/access`;\n      this.http.get(url).subscribe(data => {\n        const selectedAccess = data.parkingAccess.find(p => p.id === clientId);\n        if (selectedAccess) {\n          this.userService.setUserAccessData({\n            ...data,\n            parkingAccess: [selectedAccess]\n          });\n        } else {\n          this.userService.setUserAccessData({\n            ...data,\n            parkingAccess: []\n          });\n        }\n      }, error => {\n        console.error('Erro ao atualizar funcionalidades do usuário para o cliente selecionado', error);\n      });\n    }\n    logout() {\n      this.authService.setLoggedOut();\n      this.router.navigate(['/login']);\n    }\n    static #_ = this.ɵfac = function AppComponent_Factory(t) {\n      return new (t || AppComponent)(i0.ɵɵdirectiveInject(i1.AuthService), i0.ɵɵdirectiveInject(i2.ClientService), i0.ɵɵdirectiveInject(i3.UserService), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i5.HttpClient));\n    };\n    static #_2 = this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n      type: AppComponent,\n      selectors: [[\"app-root\"]],\n      decls: 2,\n      vars: 1,\n      consts: [[4, \"ngIf\"], [1, \"navbar-actions\"], [1, \"client-selection\"], [\"for\", \"clienteSelect\"], [\"id\", \"clienteSelect\", 3, \"ngModelChange\", \"change\", \"ngModel\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [1, \"logout-btn\", 3, \"click\"], [\"routerLink\", \"/home\"], [\"routerLink\", \"/ajuste-patio\"], [\"routerLink\", \"/configuracao-mensagens\"], [\"routerLink\", \"/relatorio\"], [\"routerLink\", \"/cadastro\"], [3, \"value\"]],\n      template: function AppComponent_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵtemplate(0, AppComponent_nav_0_Template, 15, 7, \"nav\", 0);\n          i0.ɵɵelement(1, \"router-outlet\");\n        }\n        if (rf & 2) {\n          i0.ɵɵproperty(\"ngIf\", ctx.authService.isLoggedIn());\n        }\n      },\n      dependencies: [i6.NgForOf, i6.NgIf, i4.RouterOutlet, i4.RouterLink, i7.NgSelectOption, i7.ɵNgSelectMultipleOption, i7.SelectControlValueAccessor, i7.NgControlStatus, i7.NgModel],\n      styles: [\"nav[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;background-color:#2c3e50;color:#fff;padding:10px 20px}nav[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]{list-style:none;display:flex;gap:20px;margin:0;padding:0}nav[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{color:#fff;text-decoration:none;font-weight:500}.navbar-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.client-selection[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{margin-right:6px;font-weight:500}.client-selection[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{padding:6px 10px;border-radius:4px;border:none;font-size:14px}.logout-btn[_ngcontent-%COMP%]{background-color:transparent;border:1px solid white;color:#fff;padding:6px 12px;border-radius:4px;cursor:pointer;font-weight:500;transition:background-color .3s}.logout-btn[_ngcontent-%COMP%]:hover{background-color:#34495e}\\n\\n/*# sourceMappingURL=app.component.css.map*/\"]\n    });\n  }\n  return AppComponent;\n})();","map":{"version":3,"names":["HttpHeaders","environment","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","cliente_r3","id","ɵɵadvance","ɵɵtextInterpolate","name","ɵɵtemplate","AppComponent_nav_0_li_2_Template","AppComponent_nav_0_li_3_Template","AppComponent_nav_0_li_4_Template","AppComponent_nav_0_li_5_Template","AppComponent_nav_0_li_6_Template","ɵɵtwoWayListener","AppComponent_nav_0_Template_select_ngModelChange_11_listener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵtwoWayBindingSet","selectedClient","ɵɵresetView","ɵɵlistener","AppComponent_nav_0_Template_select_change_11_listener","onClientChange","AppComponent_nav_0_option_12_Template","AppComponent_nav_0_Template_button_click_13_listener","logout","authService","hasFunctionality","ɵɵtwoWayProperty","clients","AppComponent","constructor","clientService","userService","router","cdRef","http","title","userName","userRole","grounds","clientId_adjustment","ngOnInit","selectedClient$","subscribe","clientId","detectChanges","loadClients","userId","getUserId","apiUrl","apiUrlBackEnd","url","get","data","parkingAccess","length","firstParkingAccess","nome","cargo","setUserAccessData","map","parking","parkingName","toString","setSelectedClient","getParkingData","error","console","apiUrlBackEndExternaApiDB","headers","set","selectedGround","numericClientId","updateSelectedClient","updateUserAccessForClient","selectedAccess","find","p","setLoggedOut","navigate","_","ɵɵdirectiveInject","i1","AuthService","i2","ClientService","i3","UserService","i4","Router","ChangeDetectorRef","i5","HttpClient","_2","selectors","decls","vars","consts","template","AppComponent_Template","rf","ctx","AppComponent_nav_0_Template","ɵɵelement","isLoggedIn"],"sources":["/root/rfcontavagas_hom/12.-Servidor-local-Docker/Front-Parking-Angular/src/app/app.component.ts","/root/rfcontavagas_hom/12.-Servidor-local-Docker/Front-Parking-Angular/src/app/app.component.html"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\nimport { ClientService } from './services/client.service';\r\nimport { AuthService } from './services/auth.service';\r\nimport { UserService } from './services/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { environment } from './environments/environment';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-root',\r\n  templateUrl: './app.component.html',\r\n  styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit {\r\n  title = 'RF ContaVagas';\r\n  selectedClient = '';\r\n  clients: { id: number, name: string }[] = [];\r\n  userName: string = '';\r\n  userRole: string = '';\r\n  grounds: any[] = [];\r\n  selectedGround: any;\r\n  clientId_adjustment: number = 0;\r\n\r\n  constructor(\r\n    public authService: AuthService,\r\n    private clientService: ClientService,\r\n    private userService: UserService,\r\n    private router: Router,\r\n    private cdRef: ChangeDetectorRef, // 👈 novo\r\n\r\n    private http: HttpClient\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.clientService.selectedClient$.subscribe(clientId => {\r\n      this.selectedClient = clientId;\r\n      this.cdRef.detectChanges(); // 👈 força a atualização segura\r\n\r\n\r\n      \r\n    });\r\n  }\r\n\r\n  loadClients(): void {\r\n    const userId = this.userService.getUserId();\r\n    const apiUrl = environment.apiUrlBackEnd;\r\n    const url = `${apiUrl}/api/users/${userId}/access`;\r\n\r\n    this.http.get<any>(url).subscribe(\r\n      (data) => {\r\n        if (data.parkingAccess && data.parkingAccess.length > 0) {\r\n          const firstParkingAccess = data.parkingAccess[0];\r\n          this.userName = `Nome: ${firstParkingAccess.nome}`;\r\n          this.userRole = `Cargo: ${firstParkingAccess.cargo}`;\r\n          this.userService.setUserAccessData(data); // ✔ salva o objeto completo retornado da API\r\n\r\n          this.clients = data.parkingAccess.map((parking: any) => ({\r\n            id: parking.id,\r\n            name: parking.parkingName\r\n          }));\r\n\r\n          if (this.clients.length) {\r\n            this.selectedClient = this.clients[0].id.toString();\r\n            this.clientService.setSelectedClient(this.clients[0].id);\r\n            this.getParkingData(this.clients[0].id);\r\n          }\r\n        }\r\n      },\r\n      (error) => {\r\n        console.error('Erro ao buscar dados de acesso do usuário', error);\r\n      }\r\n    );\r\n  }\r\n\r\n  getParkingData(clientId: number) {\r\n    const apiUrl = environment.apiUrlBackEndExternaApiDB + `/v1/spark-customers/ground/{\"id_customer\":${clientId},\"id_park\":1}`;\r\n    const headers = new HttpHeaders().set('device', 'manager');\r\n\r\n    this.http.get<any[]>(apiUrl, { headers }).subscribe(\r\n      data => {\r\n        this.grounds = data;\r\n        if (this.grounds.length > 0) {\r\n          this.selectedGround = this.grounds[0];\r\n        }\r\n      },\r\n      error => {\r\n        console.error('Erro ao buscar dados dos grounds', error);\r\n      }\r\n    );\r\n    this.clientId_adjustment = clientId;\r\n  }\r\n\r\n  onClientChange(clientId: string) {\r\n    this.selectedClient = clientId;\r\n    const numericClientId = +clientId;\r\n    this.clientService.updateSelectedClient(clientId);\r\n    this.getParkingData(numericClientId);\r\n  \r\n    this.updateUserAccessForClient(numericClientId); // ✅ nova chamada para atualizar menus\r\n  }\r\n  updateUserAccessForClient(clientId: number): void {\r\n    const userId = this.userService.getUserId();\r\n    const apiUrl = environment.apiUrlBackEnd;\r\n    const url = `${apiUrl}/api/users/${userId}/access`;\r\n  \r\n    this.http.get<any>(url).subscribe(\r\n      (data) => {\r\n        const selectedAccess = data.parkingAccess.find((p: any) => p.id === clientId);\r\n        if (selectedAccess) {\r\n          this.userService.setUserAccessData({ ...data, parkingAccess: [selectedAccess] });\r\n        } else {\r\n          this.userService.setUserAccessData({ ...data, parkingAccess: [] });\r\n        }\r\n      },\r\n      (error) => {\r\n        console.error('Erro ao atualizar funcionalidades do usuário para o cliente selecionado', error);\r\n      }\r\n    );\r\n  }\r\n  \r\n\r\n  logout() {\r\n    this.authService.setLoggedOut();\r\n    this.router.navigate(['/login']);\r\n  }\r\n}\r\n","<nav *ngIf=\"authService.isLoggedIn()\">\r\n  <!-- Menu de navegação principal, exibe itens conforme funcionalidades do usuário -->\r\n  <ul>\r\n    <!-- Exibe o link 'Home' se o usuário tiver a funcionalidade 'TELA HOME' -->\r\n    <li *ngIf=\"authService.hasFunctionality('TELA HOME')\">\r\n      <a routerLink=\"/home\">Home</a>\r\n    </li>\r\n    <!-- Exibe o link 'Ajuste de Pátio' se o usuário tiver a funcionalidade 'TELA AJUSTE DE PATIO' -->\r\n    <li *ngIf=\"authService.hasFunctionality('TELA AJUSTE DE PATIO')\">\r\n      <a routerLink=\"/ajuste-patio\">Ajuste de Pátio</a>\r\n    </li>\r\n    <!-- Exibe o link 'Mensagens' se o usuário tiver a funcionalidade 'TELA DE MENSAGENS' -->\r\n    <li *ngIf=\"authService.hasFunctionality('TELA DE MENSAGENS')\">\r\n      <a routerLink=\"/configuracao-mensagens\">Mensagens</a>\r\n    </li>\r\n    <!-- Exibe o link 'Relatório' se o usuário tiver a funcionalidade 'TELA RELATORIOS' -->\r\n    <li *ngIf=\"authService.hasFunctionality('TELA RELATORIOS')\">\r\n      <a routerLink=\"/relatorio\">Relatório</a>\r\n    </li>\r\n    <!-- Exibe o link 'Cadastro' se o usuário tiver a funcionalidade 'TELA DE CADASTRO' -->\r\n    <li *ngIf=\"authService.hasFunctionality('TELA DE CADASTRO')\">\r\n      <a routerLink=\"/cadastro\">Cadastro</a>\r\n    </li>\r\n    <!-- Link de Agendamento sempre visível \r\n    <li><a routerLink=\"/scheduling\">Agendamento</a></li>\r\n    -->\r\n  </ul>\r\n\r\n  <div class=\"navbar-actions\">\r\n    <div class=\"client-selection\">\r\n      <label for=\"clienteSelect\">Selecionar Cliente:</label>\r\n      <select id=\"clienteSelect\" [(ngModel)]=\"selectedClient\" (change)=\"onClientChange(selectedClient)\">\r\n        <option *ngFor=\"let cliente of clients\" [value]=\"cliente.id\">{{ cliente.name || 'Sem Nome' }}</option>\r\n      </select>\r\n    </div>\r\n    <button class=\"logout-btn\" (click)=\"logout()\">Logout</button>\r\n  </div>\r\n</nav>\r\n\r\n<router-outlet></router-outlet>\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}