{"ast":null,"code":"import { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { DialogCadastroComponent } from '../shared/dialog-cadastro/dialog-cadastro.component';\nimport { environment } from '../environments/environment';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nimport * as i2 from \"@angular/material/dialog\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@angular/forms\";\nimport * as i5 from \"@angular/material/table\";\nimport * as i6 from \"@angular/material/icon\";\nimport * as i7 from \"@angular/material/card\";\nimport * as i8 from \"@angular/material/form-field\";\nimport * as i9 from \"@angular/material/select\";\nimport * as i10 from \"@angular/material/core\";\nimport * as i11 from \"@angular/material/input\";\nimport * as i12 from \"@angular/material/button\";\nconst _c0 = () => [\"usuario\", \"estacionamento\", \"perfil\", \"actions\"];\nconst _c1 = () => [\"name\", \"acoes\"];\nfunction CadastroComponent_mat_option_39_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 36);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const usuario_r2 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", usuario_r2.id);\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate2(\" \", usuario_r2.nome, \" (\", usuario_r2.email, \") \");\n  }\n}\nfunction CadastroComponent_mat_option_44_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 36);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const perfil_r3 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", perfil_r3.id);\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate1(\" \", perfil_r3.name, \" \");\n  }\n}\nfunction CadastroComponent_mat_option_49_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 36);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const cliente_r4 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", cliente_r4.id);\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate1(\" \", cliente_r4.name, \" \");\n  }\n}\nfunction CadastroComponent_th_60_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Usu\\u00E1rio\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_61_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const row_r5 = ctx.$implicit;\n    const ctx_r5 = i0.ɵɵnextContext();\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(ctx_r5.getUsuarioNome(row_r5.userId));\n  }\n}\nfunction CadastroComponent_th_63_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Estacionamento\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_64_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const row_r7 = ctx.$implicit;\n    const ctx_r5 = i0.ɵɵnextContext();\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(ctx_r5.getEstacionamentoNome(row_r7.parkingId));\n  }\n}\nfunction CadastroComponent_th_66_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Perfil\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_67_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const row_r8 = ctx.$implicit;\n    const ctx_r5 = i0.ɵɵnextContext();\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(ctx_r5.getPerfilNome(row_r8.profileId));\n  }\n}\nfunction CadastroComponent_th_69_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"A\\u00E7\\u00F5es\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_70_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r9 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"td\", 38)(1, \"button\", 39);\n    i0.ɵɵlistener(\"click\", function CadastroComponent_td_70_Template_button_click_1_listener() {\n      const row_r10 = i0.ɵɵrestoreView(_r9).$implicit;\n      const ctx_r5 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r5.removerVinculo(row_r10.id));\n    });\n    i0.ɵɵelementStart(2, \"mat-icon\");\n    i0.ɵɵtext(3, \"delete\");\n    i0.ɵɵelementEnd()()();\n  }\n}\nfunction CadastroComponent_tr_71_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"tr\", 40);\n  }\n}\nfunction CadastroComponent_tr_72_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"tr\", 41);\n  }\n}\nfunction CadastroComponent_th_84_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Nome\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_85_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const user_r11 = ctx.$implicit;\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(user_r11.nome);\n  }\n}\nfunction CadastroComponent_th_87_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Email\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_88_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const user_r12 = ctx.$implicit;\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(user_r12.email);\n  }\n}\nfunction CadastroComponent_th_90_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Cargo\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_91_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const user_r13 = ctx.$implicit;\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(user_r13.cargo);\n  }\n}\nfunction CadastroComponent_th_93_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Perfil\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_94_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const user_r14 = ctx.$implicit;\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate((user_r14.profile == null ? null : user_r14.profile.name) || \"\\u2014\");\n  }\n}\nfunction CadastroComponent_tr_95_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"tr\", 40);\n  }\n}\nfunction CadastroComponent_tr_96_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"tr\", 41);\n  }\n}\nfunction CadastroComponent_th_112_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"Nome\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_113_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"td\", 38);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const p_r15 = ctx.$implicit;\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(p_r15.name);\n  }\n}\nfunction CadastroComponent_th_115_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"th\", 37);\n    i0.ɵɵtext(1, \"A\\u00E7\\u00F5es\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction CadastroComponent_td_116_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r16 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"td\", 38)(1, \"button\", 42);\n    i0.ɵɵlistener(\"click\", function CadastroComponent_td_116_Template_button_click_1_listener() {\n      const p_r17 = i0.ɵɵrestoreView(_r16).$implicit;\n      const ctx_r5 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r5.editarEstacionamento(p_r17));\n    });\n    i0.ɵɵelementStart(2, \"mat-icon\");\n    i0.ɵɵtext(3, \"edit\");\n    i0.ɵɵelementEnd()();\n    i0.ɵɵelementStart(4, \"button\", 39);\n    i0.ɵɵlistener(\"click\", function CadastroComponent_td_116_Template_button_click_4_listener() {\n      const p_r17 = i0.ɵɵrestoreView(_r16).$implicit;\n      const ctx_r5 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r5.deletarEstacionamento(p_r17.id));\n    });\n    i0.ɵɵelementStart(5, \"mat-icon\");\n    i0.ɵɵtext(6, \"delete\");\n    i0.ɵɵelementEnd()()();\n  }\n}\nfunction CadastroComponent_tr_117_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"tr\", 40);\n  }\n}\nfunction CadastroComponent_tr_118_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"tr\", 41);\n  }\n}\nexport let CadastroComponent = /*#__PURE__*/(() => {\n  class CadastroComponent {\n    constructor(http, dialog) {\n      this.http = http;\n      this.dialog = dialog;\n      this.usuario = {\n        username: '',\n        email: '',\n        password: '',\n        nome: '',\n        cargo: ''\n      };\n      this.usuarios = [];\n      this.usuariosDataSource = new MatTableDataSource();\n      this.usuariosLista = [];\n      this.parkings = [];\n      this.clientes = [];\n      this.perfis = [];\n      this.userParkingProfiles = [];\n      this.parkingForm = {\n        id: null,\n        name: ''\n      };\n      this.usuarioSelecionadoId = 0;\n      this.perfilSelecionadoId = 0;\n      this.estacionamentoSelecionadoId = 0;\n      this.dataSource = new MatTableDataSource();\n      this.displayedColumns = ['nome', 'email', 'cargo', 'perfil'];\n    }\n    ngOnInit() {\n      this.carregarUsuarios();\n      this.carregarPerfis();\n      this.carregarEstacionamentos();\n      this.carregarVinculos();\n    }\n    aplicarFiltro(event) {\n      const valorFiltro = event.target.value;\n      this.usuariosDataSource.filter = valorFiltro.trim().toLowerCase();\n    }\n    carregarUsuarios() {\n      const url = `${environment.apiUrlBackEnd}/api/users`;\n      this.http.get(url).subscribe(data => {\n        this.usuarios = data;\n        this.usuariosDataSource.data = data;\n      });\n    }\n    carregarPerfis() {\n      const url = `${environment.apiUrlBackEnd}/api/user-profiles`;\n      this.http.get(url).subscribe(data => {\n        this.perfis = data;\n      });\n    }\n    carregarEstacionamentos() {\n      const url = `${environment.apiUrlBackEnd}/api/parkings`;\n      this.http.get(url).subscribe(data => {\n        this.clientes = data;\n      });\n    }\n    carregarVinculos() {\n      const url = `${environment.apiUrlBackEnd}/api/user-parking-profiles`;\n      this.http.get(url).subscribe(data => {\n        this.userParkingProfiles = data;\n        this.dataSource = new MatTableDataSource(this.userParkingProfiles);\n        this.dataSource.paginator = this.paginator;\n      });\n    }\n    cadastrar() {\n      const url = `${environment.apiUrlBackEnd}/api/auth/register`;\n      this.http.post(url, this.usuario, {\n        responseType: 'text'\n      }).subscribe({\n        next: res => {\n          this.abrirPopup(res.includes('sucesso') ? 'Registro bem-sucedido' : res);\n          this.listarUsuarios();\n        },\n        error: err => {\n          const msg = err.status === 409 ? 'Usuário já existe' : 'Erro no cadastro';\n          this.abrirPopup(msg);\n        }\n      });\n    }\n    abrirPopup(mensagem) {\n      this.dialog.open(DialogCadastroComponent, {\n        data: {\n          mensagem\n        }\n      });\n    }\n    atribuirPerfil() {\n      const payload = {\n        userId: this.usuarioSelecionadoId,\n        profileId: this.perfilSelecionadoId,\n        parkingId: this.estacionamentoSelecionadoId\n      };\n      const url = `${environment.apiUrlBackEnd}/api/user-parking-profiles`;\n      this.http.post(url, payload).subscribe(() => {\n        alert('Perfil atribuído com sucesso');\n        this.carregarVinculos();\n      });\n    }\n    listarUsuarios() {\n      const url = `${environment.apiUrlBackEnd}/api/users`;\n      this.http.get(url).subscribe({\n        next: res => {\n          this.usuarios = res;\n          this.usuariosDataSource.data = res;\n          this.usuariosLista = res; // para uso no mat-select\n        },\n        error: err => console.error('Erro ao buscar usuários:', err)\n      });\n    }\n    salvarEstacionamento() {\n      const method = this.parkingForm.id ? 'put' : 'post';\n      const url = this.parkingForm.id ? `${environment.apiUrlBackEnd}/api/parkings/${this.parkingForm.id}` : `${environment.apiUrlBackEnd}/api/parkings`;\n      this.http[method](url, this.parkingForm).subscribe(() => {\n        this.carregarEstacionamentos();\n        this.limparFormulario();\n      });\n    }\n    editarEstacionamento(p) {\n      this.parkingForm = {\n        ...p\n      };\n    }\n    deletarEstacionamento(id) {\n      if (confirm('Tem certeza que deseja excluir?')) {\n        const url = `${environment.apiUrlBackEnd}/api/parkings/${id}`;\n        this.http.delete(url).subscribe(() => {\n          this.carregarEstacionamentos();\n        });\n      }\n    }\n    limparFormulario() {\n      this.parkingForm = {\n        id: null,\n        name: ''\n      };\n    }\n    removerVinculo(id) {\n      const url = `${environment.apiUrlBackEnd}/api/user-parking-profiles/${id}`;\n      this.http.delete(url).subscribe(() => {\n        this.carregarVinculos();\n      });\n    }\n    // 🔍 Métodos auxiliares para nome\n    getUsuarioNome(id) {\n      const user = this.usuarios.find(u => u.id === id);\n      return user ? user.nome : '—';\n    }\n    getEstacionamentoNome(id) {\n      const est = this.clientes.find(p => p.id === id);\n      return est ? est.name : '—';\n    }\n    getPerfilNome(id) {\n      const perfil = this.perfis.find(p => p.id === id);\n      return perfil ? perfil.name : '—';\n    }\n    static #_ = this.ɵfac = function CadastroComponent_Factory(t) {\n      return new (t || CadastroComponent)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i2.MatDialog));\n    };\n    static #_2 = this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n      type: CadastroComponent,\n      selectors: [[\"app-cadastro\"]],\n      viewQuery: function CadastroComponent_Query(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵviewQuery(MatPaginator, 5);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.paginator = _t.first);\n        }\n      },\n      decls: 119,\n      vars: 26,\n      consts: [[\"cadastroForm\", \"ngForm\"], [1, \"cadastro-container\"], [\"color\", \"primary\"], [3, \"ngSubmit\"], [\"appearance\", \"outline\", 1, \"full-width\"], [\"matInput\", \"\", \"name\", \"username\", \"required\", \"\", 3, \"ngModelChange\", \"ngModel\"], [\"matInput\", \"\", \"name\", \"email\", \"required\", \"\", \"type\", \"email\", 3, \"ngModelChange\", \"ngModel\"], [\"matInput\", \"\", \"name\", \"password\", \"required\", \"\", \"type\", \"password\", 3, \"ngModelChange\", \"ngModel\"], [\"matInput\", \"\", \"name\", \"nome\", \"required\", \"\", 3, \"ngModelChange\", \"ngModel\"], [\"matInput\", \"\", \"name\", \"cargo\", \"required\", \"\", 3, \"ngModelChange\", \"ngModel\"], [\"mat-raised-button\", \"\", \"color\", \"primary\", \"type\", \"submit\"], [\"color\", \"accent\"], [1, \"full-width\"], [3, \"valueChange\", \"value\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"mat-raised-button\", \"\", \"color\", \"accent\", 3, \"click\"], [\"mat-table\", \"\", 1, \"mat-elevation-z8\", \"full-width\", 3, \"dataSource\"], [\"matColumnDef\", \"usuario\"], [\"mat-header-cell\", \"\", 4, \"matHeaderCellDef\"], [\"mat-cell\", \"\", 4, \"matCellDef\"], [\"matColumnDef\", \"estacionamento\"], [\"matColumnDef\", \"perfil\"], [\"matColumnDef\", \"actions\"], [\"mat-header-row\", \"\", 4, \"matHeaderRowDef\"], [\"mat-row\", \"\", 4, \"matRowDef\", \"matRowDefColumns\"], [\"appearance\", \"fill\", 1, \"full-width\"], [\"matInput\", \"\", \"placeholder\", \"Digite para filtrar\", 3, \"keyup\"], [\"matColumnDef\", \"nome\"], [\"matColumnDef\", \"email\"], [\"matColumnDef\", \"cargo\"], [1, \"cadastro-card\"], [\"matInput\", \"\", \"name\", \"name\", \"required\", \"\", 3, \"ngModelChange\", \"ngModel\"], [1, \"btn-container\"], [\"mat-stroked-button\", \"\", \"type\", \"button\", 3, \"click\"], [\"matColumnDef\", \"name\"], [\"matColumnDef\", \"acoes\"], [3, \"value\"], [\"mat-header-cell\", \"\"], [\"mat-cell\", \"\"], [\"mat-icon-button\", \"\", \"color\", \"warn\", 3, \"click\"], [\"mat-header-row\", \"\"], [\"mat-row\", \"\"], [\"mat-icon-button\", \"\", \"color\", \"primary\", 3, \"click\"]],\n      template: function CadastroComponent_Template(rf, ctx) {\n        if (rf & 1) {\n          const _r1 = i0.ɵɵgetCurrentView();\n          i0.ɵɵelementStart(0, \"mat-card\", 1)(1, \"h2\")(2, \"mat-icon\", 2);\n          i0.ɵɵtext(3, \"person_add\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵtext(4, \" Cadastro de Usu\\u00E1rio\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(5, \"form\", 3, 0);\n          i0.ɵɵlistener(\"ngSubmit\", function CadastroComponent_Template_form_ngSubmit_5_listener() {\n            i0.ɵɵrestoreView(_r1);\n            return i0.ɵɵresetView(ctx.cadastrar());\n          });\n          i0.ɵɵelementStart(7, \"mat-form-field\", 4)(8, \"mat-label\");\n          i0.ɵɵtext(9, \"Username\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(10, \"input\", 5);\n          i0.ɵɵtwoWayListener(\"ngModelChange\", function CadastroComponent_Template_input_ngModelChange_10_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.usuario.username, $event) || (ctx.usuario.username = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(11, \"mat-form-field\", 4)(12, \"mat-label\");\n          i0.ɵɵtext(13, \"Email\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(14, \"input\", 6);\n          i0.ɵɵtwoWayListener(\"ngModelChange\", function CadastroComponent_Template_input_ngModelChange_14_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.usuario.email, $event) || (ctx.usuario.email = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(15, \"mat-form-field\", 4)(16, \"mat-label\");\n          i0.ɵɵtext(17, \"Senha\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(18, \"input\", 7);\n          i0.ɵɵtwoWayListener(\"ngModelChange\", function CadastroComponent_Template_input_ngModelChange_18_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.usuario.password, $event) || (ctx.usuario.password = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(19, \"mat-form-field\", 4)(20, \"mat-label\");\n          i0.ɵɵtext(21, \"Nome\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(22, \"input\", 8);\n          i0.ɵɵtwoWayListener(\"ngModelChange\", function CadastroComponent_Template_input_ngModelChange_22_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.usuario.nome, $event) || (ctx.usuario.nome = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(23, \"mat-form-field\", 4)(24, \"mat-label\");\n          i0.ɵɵtext(25, \"Cargo\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(26, \"input\", 9);\n          i0.ɵɵtwoWayListener(\"ngModelChange\", function CadastroComponent_Template_input_ngModelChange_26_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.usuario.cargo, $event) || (ctx.usuario.cargo = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(27, \"button\", 10);\n          i0.ɵɵtext(28, \"Cadastrar\");\n          i0.ɵɵelementEnd()()();\n          i0.ɵɵelement(29, \"br\");\n          i0.ɵɵelementStart(30, \"mat-card\", 1)(31, \"h2\")(32, \"mat-icon\", 11);\n          i0.ɵɵtext(33, \"group_add\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵtext(34, \" Atribuir Perfil a Usu\\u00E1rio\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(35, \"mat-form-field\", 12)(36, \"mat-label\");\n          i0.ɵɵtext(37, \"Usu\\u00E1rio\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(38, \"mat-select\", 13);\n          i0.ɵɵtwoWayListener(\"valueChange\", function CadastroComponent_Template_mat_select_valueChange_38_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.usuarioSelecionadoId, $event) || (ctx.usuarioSelecionadoId = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵtemplate(39, CadastroComponent_mat_option_39_Template, 2, 3, \"mat-option\", 14);\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(40, \"mat-form-field\", 12)(41, \"mat-label\");\n          i0.ɵɵtext(42, \"Perfil\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(43, \"mat-select\", 13);\n          i0.ɵɵtwoWayListener(\"valueChange\", function CadastroComponent_Template_mat_select_valueChange_43_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.perfilSelecionadoId, $event) || (ctx.perfilSelecionadoId = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵtemplate(44, CadastroComponent_mat_option_44_Template, 2, 2, \"mat-option\", 14);\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(45, \"mat-form-field\", 12)(46, \"mat-label\");\n          i0.ɵɵtext(47, \"Estacionamento\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(48, \"mat-select\", 13);\n          i0.ɵɵtwoWayListener(\"valueChange\", function CadastroComponent_Template_mat_select_valueChange_48_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.estacionamentoSelecionadoId, $event) || (ctx.estacionamentoSelecionadoId = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵtemplate(49, CadastroComponent_mat_option_49_Template, 2, 2, \"mat-option\", 14);\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(50, \"button\", 15);\n          i0.ɵɵlistener(\"click\", function CadastroComponent_Template_button_click_50_listener() {\n            i0.ɵɵrestoreView(_r1);\n            return i0.ɵɵresetView(ctx.atribuirPerfil());\n          });\n          i0.ɵɵtext(51, \"Atribuir Perfil\");\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelement(52, \"br\");\n          i0.ɵɵelementStart(53, \"mat-card\", 1)(54, \"h3\")(55, \"mat-icon\");\n          i0.ɵɵtext(56, \"link\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵtext(57, \" V\\u00EDnculos de Perfil por Usu\\u00E1rio/Estacionamento\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(58, \"table\", 16);\n          i0.ɵɵelementContainerStart(59, 17);\n          i0.ɵɵtemplate(60, CadastroComponent_th_60_Template, 2, 0, \"th\", 18)(61, CadastroComponent_td_61_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(62, 20);\n          i0.ɵɵtemplate(63, CadastroComponent_th_63_Template, 2, 0, \"th\", 18)(64, CadastroComponent_td_64_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(65, 21);\n          i0.ɵɵtemplate(66, CadastroComponent_th_66_Template, 2, 0, \"th\", 18)(67, CadastroComponent_td_67_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(68, 22);\n          i0.ɵɵtemplate(69, CadastroComponent_th_69_Template, 2, 0, \"th\", 18)(70, CadastroComponent_td_70_Template, 4, 0, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵtemplate(71, CadastroComponent_tr_71_Template, 1, 0, \"tr\", 23)(72, CadastroComponent_tr_72_Template, 1, 0, \"tr\", 24);\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(73, \"mat-card\", 1)(74, \"h2\")(75, \"mat-icon\");\n          i0.ɵɵtext(76, \"list\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵtext(77, \" Lista de Usu\\u00E1rios\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(78, \"mat-form-field\", 25)(79, \"mat-label\");\n          i0.ɵɵtext(80, \"Filtrar usu\\u00E1rios\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(81, \"input\", 26);\n          i0.ɵɵlistener(\"keyup\", function CadastroComponent_Template_input_keyup_81_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            return i0.ɵɵresetView(ctx.aplicarFiltro($event));\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(82, \"table\", 16);\n          i0.ɵɵelementContainerStart(83, 27);\n          i0.ɵɵtemplate(84, CadastroComponent_th_84_Template, 2, 0, \"th\", 18)(85, CadastroComponent_td_85_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(86, 28);\n          i0.ɵɵtemplate(87, CadastroComponent_th_87_Template, 2, 0, \"th\", 18)(88, CadastroComponent_td_88_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(89, 29);\n          i0.ɵɵtemplate(90, CadastroComponent_th_90_Template, 2, 0, \"th\", 18)(91, CadastroComponent_td_91_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(92, 21);\n          i0.ɵɵtemplate(93, CadastroComponent_th_93_Template, 2, 0, \"th\", 18)(94, CadastroComponent_td_94_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵtemplate(95, CadastroComponent_tr_95_Template, 1, 0, \"tr\", 23)(96, CadastroComponent_tr_96_Template, 1, 0, \"tr\", 24);\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(97, \"mat-card\", 30)(98, \"h2\");\n          i0.ɵɵtext(99, \"Cadastro de Estacionamento\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(100, \"form\", 3);\n          i0.ɵɵlistener(\"ngSubmit\", function CadastroComponent_Template_form_ngSubmit_100_listener() {\n            i0.ɵɵrestoreView(_r1);\n            return i0.ɵɵresetView(ctx.salvarEstacionamento());\n          });\n          i0.ɵɵelementStart(101, \"mat-form-field\", 4)(102, \"mat-label\");\n          i0.ɵɵtext(103, \"Nome\");\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(104, \"input\", 31);\n          i0.ɵɵtwoWayListener(\"ngModelChange\", function CadastroComponent_Template_input_ngModelChange_104_listener($event) {\n            i0.ɵɵrestoreView(_r1);\n            i0.ɵɵtwoWayBindingSet(ctx.parkingForm.name, $event) || (ctx.parkingForm.name = $event);\n            return i0.ɵɵresetView($event);\n          });\n          i0.ɵɵelementEnd()();\n          i0.ɵɵelementStart(105, \"div\", 32)(106, \"button\", 10);\n          i0.ɵɵtext(107);\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(108, \"button\", 33);\n          i0.ɵɵlistener(\"click\", function CadastroComponent_Template_button_click_108_listener() {\n            i0.ɵɵrestoreView(_r1);\n            return i0.ɵɵresetView(ctx.limparFormulario());\n          });\n          i0.ɵɵtext(109, \"Limpar\");\n          i0.ɵɵelementEnd()()();\n          i0.ɵɵelementStart(110, \"table\", 16);\n          i0.ɵɵelementContainerStart(111, 34);\n          i0.ɵɵtemplate(112, CadastroComponent_th_112_Template, 2, 0, \"th\", 18)(113, CadastroComponent_td_113_Template, 2, 1, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵelementContainerStart(114, 35);\n          i0.ɵɵtemplate(115, CadastroComponent_th_115_Template, 2, 0, \"th\", 18)(116, CadastroComponent_td_116_Template, 7, 0, \"td\", 19);\n          i0.ɵɵelementContainerEnd();\n          i0.ɵɵtemplate(117, CadastroComponent_tr_117_Template, 1, 0, \"tr\", 23)(118, CadastroComponent_tr_118_Template, 1, 0, \"tr\", 24);\n          i0.ɵɵelementEnd()();\n        }\n        if (rf & 2) {\n          i0.ɵɵadvance(10);\n          i0.ɵɵtwoWayProperty(\"ngModel\", ctx.usuario.username);\n          i0.ɵɵadvance(4);\n          i0.ɵɵtwoWayProperty(\"ngModel\", ctx.usuario.email);\n          i0.ɵɵadvance(4);\n          i0.ɵɵtwoWayProperty(\"ngModel\", ctx.usuario.password);\n          i0.ɵɵadvance(4);\n          i0.ɵɵtwoWayProperty(\"ngModel\", ctx.usuario.nome);\n          i0.ɵɵadvance(4);\n          i0.ɵɵtwoWayProperty(\"ngModel\", ctx.usuario.cargo);\n          i0.ɵɵadvance(12);\n          i0.ɵɵtwoWayProperty(\"value\", ctx.usuarioSelecionadoId);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"ngForOf\", ctx.usuarios);\n          i0.ɵɵadvance(4);\n          i0.ɵɵtwoWayProperty(\"value\", ctx.perfilSelecionadoId);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"ngForOf\", ctx.perfis);\n          i0.ɵɵadvance(4);\n          i0.ɵɵtwoWayProperty(\"value\", ctx.estacionamentoSelecionadoId);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"ngForOf\", ctx.clientes);\n          i0.ɵɵadvance(9);\n          i0.ɵɵproperty(\"dataSource\", ctx.dataSource);\n          i0.ɵɵadvance(13);\n          i0.ɵɵproperty(\"matHeaderRowDef\", i0.ɵɵpureFunction0(22, _c0));\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"matRowDefColumns\", i0.ɵɵpureFunction0(23, _c0));\n          i0.ɵɵadvance(10);\n          i0.ɵɵproperty(\"dataSource\", ctx.usuarios);\n          i0.ɵɵadvance(13);\n          i0.ɵɵproperty(\"matHeaderRowDef\", ctx.displayedColumns);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"matRowDefColumns\", ctx.displayedColumns);\n          i0.ɵɵadvance(8);\n          i0.ɵɵtwoWayProperty(\"ngModel\", ctx.parkingForm.name);\n          i0.ɵɵadvance(3);\n          i0.ɵɵtextInterpolate1(\" \", ctx.parkingForm.id ? \"Atualizar\" : \"Cadastrar\", \" \");\n          i0.ɵɵadvance(3);\n          i0.ɵɵproperty(\"dataSource\", ctx.parkings);\n          i0.ɵɵadvance(7);\n          i0.ɵɵproperty(\"matHeaderRowDef\", i0.ɵɵpureFunction0(24, _c1));\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"matRowDefColumns\", i0.ɵɵpureFunction0(25, _c1));\n        }\n      },\n      dependencies: [i3.NgForOf, i4.ɵNgNoValidate, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.RequiredValidator, i4.NgModel, i4.NgForm, i5.MatTable, i5.MatHeaderCellDef, i5.MatHeaderRowDef, i5.MatColumnDef, i5.MatCellDef, i5.MatRowDef, i5.MatHeaderCell, i5.MatCell, i5.MatHeaderRow, i5.MatRow, i6.MatIcon, i7.MatCard, i8.MatFormField, i8.MatLabel, i9.MatSelect, i10.MatOption, i11.MatInput, i12.MatButton, i12.MatIconButton],\n      encapsulation: 2\n    });\n  }\n  return CadastroComponent;\n})();","map":{"version":3,"names":["MatTableDataSource","MatPaginator","DialogCadastroComponent","environment","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","usuario_r2","id","ɵɵadvance","ɵɵtextInterpolate2","nome","email","perfil_r3","ɵɵtextInterpolate1","name","cliente_r4","ɵɵtextInterpolate","ctx_r5","getUsuarioNome","row_r5","userId","getEstacionamentoNome","row_r7","parkingId","getPerfilNome","row_r8","profileId","ɵɵlistener","CadastroComponent_td_70_Template_button_click_1_listener","row_r10","ɵɵrestoreView","_r9","$implicit","ɵɵnextContext","ɵɵresetView","removerVinculo","ɵɵelement","user_r11","user_r12","user_r13","cargo","user_r14","profile","p_r15","CadastroComponent_td_116_Template_button_click_1_listener","p_r17","_r16","editarEstacionamento","CadastroComponent_td_116_Template_button_click_4_listener","deletarEstacionamento","CadastroComponent","constructor","http","dialog","usuario","username","password","usuarios","usuariosDataSource","usuariosLista","parkings","clientes","perfis","userParkingProfiles","parkingForm","usuarioSelecionadoId","perfilSelecionadoId","estacionamentoSelecionadoId","dataSource","displayedColumns","ngOnInit","carregarUsuarios","carregarPerfis","carregarEstacionamentos","carregarVinculos","aplicarFiltro","event","valorFiltro","target","value","filter","trim","toLowerCase","url","apiUrlBackEnd","get","subscribe","data","paginator","cadastrar","post","responseType","next","res","abrirPopup","includes","listarUsuarios","error","err","msg","status","mensagem","open","atribuirPerfil","payload","alert","console","salvarEstacionamento","method","limparFormulario","p","confirm","delete","user","find","u","est","perfil","_","ɵɵdirectiveInject","i1","HttpClient","i2","MatDialog","_2","selectors","viewQuery","CadastroComponent_Query","rf","ctx","CadastroComponent_Template_form_ngSubmit_5_listener","_r1","ɵɵtwoWayListener","CadastroComponent_Template_input_ngModelChange_10_listener","$event","ɵɵtwoWayBindingSet","CadastroComponent_Template_input_ngModelChange_14_listener","CadastroComponent_Template_input_ngModelChange_18_listener","CadastroComponent_Template_input_ngModelChange_22_listener","CadastroComponent_Template_input_ngModelChange_26_listener","CadastroComponent_Template_mat_select_valueChange_38_listener","ɵɵtemplate","CadastroComponent_mat_option_39_Template","CadastroComponent_Template_mat_select_valueChange_43_listener","CadastroComponent_mat_option_44_Template","CadastroComponent_Template_mat_select_valueChange_48_listener","CadastroComponent_mat_option_49_Template","CadastroComponent_Template_button_click_50_listener","ɵɵelementContainerStart","CadastroComponent_th_60_Template","CadastroComponent_td_61_Template","CadastroComponent_th_63_Template","CadastroComponent_td_64_Template","CadastroComponent_th_66_Template","CadastroComponent_td_67_Template","CadastroComponent_th_69_Template","CadastroComponent_td_70_Template","CadastroComponent_tr_71_Template","CadastroComponent_tr_72_Template","CadastroComponent_Template_input_keyup_81_listener","CadastroComponent_th_84_Template","CadastroComponent_td_85_Template","CadastroComponent_th_87_Template","CadastroComponent_td_88_Template","CadastroComponent_th_90_Template","CadastroComponent_td_91_Template","CadastroComponent_th_93_Template","CadastroComponent_td_94_Template","CadastroComponent_tr_95_Template","CadastroComponent_tr_96_Template","CadastroComponent_Template_form_ngSubmit_100_listener","CadastroComponent_Template_input_ngModelChange_104_listener","CadastroComponent_Template_button_click_108_listener","CadastroComponent_th_112_Template","CadastroComponent_td_113_Template","CadastroComponent_th_115_Template","CadastroComponent_td_116_Template","CadastroComponent_tr_117_Template","CadastroComponent_tr_118_Template","ɵɵtwoWayProperty","ɵɵpureFunction0","_c0","_c1"],"sources":["/root/rfcontavagas_hom/12.-Servidor-local-Docker/Front-Parking-Angular/src/app/cadastro/cadastro.component.ts","/root/rfcontavagas_hom/12.-Servidor-local-Docker/Front-Parking-Angular/src/app/cadastro/cadastro.component.html"],"sourcesContent":["import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { DialogCadastroComponent } from '../shared/dialog-cadastro/dialog-cadastro.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from '../environments/environment';\r\n\r\n\r\n@Component({\r\n  selector: 'app-cadastro',\r\n  templateUrl: './cadastro.component.html'\r\n})\r\nexport class CadastroComponent implements OnInit {\r\n\r\n  usuario = { username: '', email: '', password: '', nome: '', cargo: '' };\r\n\r\n  usuarios: any[] = [];\r\n  usuariosDataSource = new MatTableDataSource<any>();\r\n  usuariosLista: any[] = [];\r\n  parkings: any[] = [];\r\n\r\n\r\n  clientes: any[] = [];\r\n  perfis: any[] = [];\r\n  userParkingProfiles: any[] = [];\r\n  parkingForm = { id: null, name: '' };\r\n\r\n  usuarioSelecionadoId: number = 0;\r\n  perfilSelecionadoId: number = 0;\r\n  estacionamentoSelecionadoId: number = 0;\r\n\r\n  dataSource = new MatTableDataSource<any>();\r\n  @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n\r\n  constructor(private http: HttpClient, private dialog: MatDialog) {}\r\n\r\n  ngOnInit() {\r\n    this.carregarUsuarios();\r\n    this.carregarPerfis();\r\n    this.carregarEstacionamentos();\r\n    this.carregarVinculos();\r\n  }\r\n  displayedColumns: string[] = ['nome', 'email', 'cargo', 'perfil'];\r\n  aplicarFiltro(event: Event) {\r\n    const valorFiltro = (event.target as HTMLInputElement).value;\r\n    this.usuariosDataSource.filter = valorFiltro.trim().toLowerCase();\r\n  }\r\n  \r\ncarregarUsuarios(): void {\r\n  const url = `${environment.apiUrlBackEnd}/api/users`;\r\n  this.http.get<any[]>(url).subscribe(data => {\r\n    this.usuarios = data;\r\n    this.usuariosDataSource.data = data;\r\n  });\r\n}\r\n  carregarPerfis() {\r\n  const url = `${environment.apiUrlBackEnd}/api/user-profiles`;\r\n  this.http.get<any[]>(url).subscribe(data => {\r\n    this.perfis = data;\r\n  });\r\n}\r\n\r\ncarregarEstacionamentos() {\r\n  const url = `${environment.apiUrlBackEnd}/api/parkings`;\r\n  this.http.get<any[]>(url).subscribe(data => {\r\n    this.clientes = data;\r\n  });\r\n}\r\n\r\ncarregarVinculos() {\r\n  const url = `${environment.apiUrlBackEnd}/api/user-parking-profiles`;\r\n  this.http.get<any[]>(url).subscribe(data => {\r\n    this.userParkingProfiles = data;\r\n    this.dataSource = new MatTableDataSource(this.userParkingProfiles);\r\n    this.dataSource.paginator = this.paginator;\r\n  });\r\n}\r\n\r\ncadastrar() {\r\n  const url = `${environment.apiUrlBackEnd}/api/auth/register`;\r\n  this.http.post(url, this.usuario, { responseType: 'text' })\r\n    .subscribe({\r\n      next: (res) => {\r\n        this.abrirPopup(res.includes('sucesso') ? 'Registro bem-sucedido' : res);\r\n        this.listarUsuarios();\r\n      },\r\n      error: (err) => {\r\n        const msg = err.status === 409 ? 'Usuário já existe' : 'Erro no cadastro';\r\n        this.abrirPopup(msg);\r\n      }\r\n    });\r\n}\r\n\r\n\r\nabrirPopup(mensagem: string) {\r\n  this.dialog.open(DialogCadastroComponent, { data: { mensagem } });\r\n}\r\n\r\n atribuirPerfil() {\r\n  const payload = {\r\n    userId: this.usuarioSelecionadoId,\r\n    profileId: this.perfilSelecionadoId,\r\n    parkingId: this.estacionamentoSelecionadoId\r\n  };\r\n\r\n  const url = `${environment.apiUrlBackEnd}/api/user-parking-profiles`;\r\n  this.http.post(url, payload).subscribe(() => {\r\n    alert('Perfil atribuído com sucesso');\r\n    this.carregarVinculos();\r\n  });\r\n}\r\n\r\nlistarUsuarios() {\r\n  const url = `${environment.apiUrlBackEnd}/api/users`;\r\n  this.http.get<any[]>(url).subscribe({\r\n    next: (res) => {\r\n      this.usuarios = res;\r\n      this.usuariosDataSource.data = res;\r\n      this.usuariosLista = res; // para uso no mat-select\r\n    },\r\n    error: (err) => console.error('Erro ao buscar usuários:', err)\r\n  });\r\n}\r\n\r\nsalvarEstacionamento() {\r\n  const method = this.parkingForm.id ? 'put' : 'post';\r\n  const url = this.parkingForm.id\r\n    ? `${environment.apiUrlBackEnd}/api/parkings/${this.parkingForm.id}`\r\n    : `${environment.apiUrlBackEnd}/api/parkings`;\r\n\r\n  this.http[method](url, this.parkingForm).subscribe(() => {\r\n    this.carregarEstacionamentos();\r\n    this.limparFormulario();\r\n  });\r\n}\r\n\r\neditarEstacionamento(p: any) {\r\n  this.parkingForm = { ...p };\r\n}\r\n\r\ndeletarEstacionamento(id: number) {\r\n  if (confirm('Tem certeza que deseja excluir?')) {\r\n    const url = `${environment.apiUrlBackEnd}/api/parkings/${id}`;\r\n    this.http.delete(url).subscribe(() => {\r\n      this.carregarEstacionamentos();\r\n    });\r\n  }\r\n}\r\n\r\nlimparFormulario() {\r\n  this.parkingForm = { id: null, name: '' };\r\n}\r\n\r\nremoverVinculo(id: number) {\r\n  const url = `${environment.apiUrlBackEnd}/api/user-parking-profiles/${id}`;\r\n  this.http.delete(url).subscribe(() => {\r\n    this.carregarVinculos();\r\n  });\r\n}\r\n\r\n  // 🔍 Métodos auxiliares para nome\r\n  getUsuarioNome(id: number): string {\r\n    const user = this.usuarios.find(u => u.id === id);\r\n    return user ? user.nome : '—';\r\n  }\r\n\r\n  getEstacionamentoNome(id: number): string {\r\n    const est = this.clientes.find(p => p.id === id);\r\n    return est ? est.name : '—';\r\n  }\r\n\r\n  getPerfilNome(id: number): string {\r\n    const perfil = this.perfis.find(p => p.id === id);\r\n    return perfil ? perfil.name : '—';\r\n  }\r\n}\r\n","<mat-card class=\"cadastro-container\">\r\n  <h2><mat-icon color=\"primary\">person_add</mat-icon> Cadastro de Usuário</h2>\r\n\r\n  <form (ngSubmit)=\"cadastrar()\" #cadastroForm=\"ngForm\">\r\n    <mat-form-field appearance=\"outline\" class=\"full-width\">\r\n      <mat-label>Username</mat-label>\r\n      <input matInput name=\"username\" [(ngModel)]=\"usuario.username\" required />\r\n    </mat-form-field>\r\n\r\n    <mat-form-field appearance=\"outline\" class=\"full-width\">\r\n      <mat-label>Email</mat-label>\r\n      <input matInput name=\"email\" [(ngModel)]=\"usuario.email\" required type=\"email\" />\r\n    </mat-form-field>\r\n\r\n    <mat-form-field appearance=\"outline\" class=\"full-width\">\r\n      <mat-label>Senha</mat-label>\r\n      <input matInput name=\"password\" [(ngModel)]=\"usuario.password\" required type=\"password\" />\r\n    </mat-form-field>\r\n\r\n    <mat-form-field appearance=\"outline\" class=\"full-width\">\r\n      <mat-label>Nome</mat-label>\r\n      <input matInput name=\"nome\" [(ngModel)]=\"usuario.nome\" required />\r\n    </mat-form-field>\r\n\r\n    <mat-form-field appearance=\"outline\" class=\"full-width\">\r\n      <mat-label>Cargo</mat-label>\r\n      <input matInput name=\"cargo\" [(ngModel)]=\"usuario.cargo\" required />\r\n    </mat-form-field>\r\n\r\n    <button mat-raised-button color=\"primary\" type=\"submit\">Cadastrar</button>\r\n  </form>\r\n</mat-card>\r\n\r\n<br />\r\n\r\n<mat-card class=\"cadastro-container\">\r\n  <h2><mat-icon color=\"accent\">group_add</mat-icon> Atribuir Perfil a Usuário</h2>\r\n\r\n  <mat-form-field class=\"full-width\">\r\n    <mat-label>Usuário</mat-label>\r\n    <mat-select [(value)]=\"usuarioSelecionadoId\">\r\n      <mat-option *ngFor=\"let usuario of usuarios\" [value]=\"usuario.id\">\r\n        {{ usuario.nome }} ({{ usuario.email }})\r\n      </mat-option>\r\n    </mat-select>\r\n  </mat-form-field>\r\n\r\n  <mat-form-field class=\"full-width\">\r\n    <mat-label>Perfil</mat-label>\r\n    <mat-select [(value)]=\"perfilSelecionadoId\">\r\n      <mat-option *ngFor=\"let perfil of perfis\" [value]=\"perfil.id\">\r\n        {{ perfil.name }}\r\n      </mat-option>\r\n    </mat-select>\r\n  </mat-form-field>\r\n\r\n  <mat-form-field class=\"full-width\">\r\n    <mat-label>Estacionamento</mat-label>\r\n    <mat-select [(value)]=\"estacionamentoSelecionadoId\">\r\n      <mat-option *ngFor=\"let cliente of clientes\" [value]=\"cliente.id\">\r\n        {{ cliente.name }}\r\n      </mat-option>\r\n    </mat-select>\r\n  </mat-form-field>\r\n\r\n  <button mat-raised-button color=\"accent\" (click)=\"atribuirPerfil()\">Atribuir Perfil</button>\r\n</mat-card>\r\n\r\n<br />\r\n\r\n<mat-card class=\"cadastro-container\">\r\n  <h3><mat-icon>link</mat-icon> Vínculos de Perfil por Usuário/Estacionamento</h3>\r\n\r\n  <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 full-width\">\r\n\r\n    <ng-container matColumnDef=\"usuario\">\r\n      <th mat-header-cell *matHeaderCellDef>Usuário</th>\r\n      <td mat-cell *matCellDef=\"let row\">{{ getUsuarioNome(row.userId) }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"estacionamento\">\r\n      <th mat-header-cell *matHeaderCellDef>Estacionamento</th>\r\n      <td mat-cell *matCellDef=\"let row\">{{ getEstacionamentoNome(row.parkingId) }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"perfil\">\r\n      <th mat-header-cell *matHeaderCellDef>Perfil</th>\r\n      <td mat-cell *matCellDef=\"let row\">{{ getPerfilNome(row.profileId) }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"actions\">\r\n      <th mat-header-cell *matHeaderCellDef>Ações</th>\r\n      <td mat-cell *matCellDef=\"let row\">\r\n        <button mat-icon-button color=\"warn\" (click)=\"removerVinculo(row.id)\">\r\n          <mat-icon>delete</mat-icon>\r\n        </button>\r\n      </td>\r\n    </ng-container>\r\n\r\n    <tr mat-header-row *matHeaderRowDef=\"['usuario', 'estacionamento', 'perfil', 'actions']\"></tr>\r\n    <tr mat-row *matRowDef=\"let row; columns: ['usuario', 'estacionamento', 'perfil', 'actions'];\"></tr>\r\n  </table>\r\n</mat-card>\r\n<mat-card class=\"cadastro-container\">\r\n  <h2><mat-icon>list</mat-icon> Lista de Usuários</h2>\r\n\r\n  <mat-form-field appearance=\"fill\" class=\"full-width\">\r\n    <mat-label>Filtrar usuários</mat-label>\r\n    <input matInput (keyup)=\"aplicarFiltro($event)\" placeholder=\"Digite para filtrar\" />\r\n  </mat-form-field>\r\n\r\n  <table mat-table [dataSource]=\"usuarios\" class=\"mat-elevation-z8 full-width\">\r\n    <ng-container matColumnDef=\"nome\">\r\n      <th mat-header-cell *matHeaderCellDef>Nome</th>\r\n      <td mat-cell *matCellDef=\"let user\">{{ user.nome }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"email\">\r\n      <th mat-header-cell *matHeaderCellDef>Email</th>\r\n      <td mat-cell *matCellDef=\"let user\">{{ user.email }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"cargo\">\r\n      <th mat-header-cell *matHeaderCellDef>Cargo</th>\r\n      <td mat-cell *matCellDef=\"let user\">{{ user.cargo }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"perfil\">\r\n      <th mat-header-cell *matHeaderCellDef>Perfil</th>\r\n      <td mat-cell *matCellDef=\"let user\">{{ user.profile?.name || '—' }}</td>\r\n    </ng-container>\r\n\r\n    <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n    <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n  </table>\r\n</mat-card>\r\n<mat-card class=\"cadastro-card\">\r\n  <h2>Cadastro de Estacionamento</h2>\r\n  <form (ngSubmit)=\"salvarEstacionamento()\">\r\n    <mat-form-field appearance=\"outline\" class=\"full-width\">\r\n      <mat-label>Nome</mat-label>\r\n      <input matInput [(ngModel)]=\"parkingForm.name\" name=\"name\" required />\r\n    </mat-form-field>\r\n\r\n    <div class=\"btn-container\">\r\n      <button mat-raised-button color=\"primary\" type=\"submit\">\r\n        {{ parkingForm.id ? 'Atualizar' : 'Cadastrar' }}\r\n      </button>\r\n      <button mat-stroked-button type=\"button\" (click)=\"limparFormulario()\">Limpar</button>\r\n    </div>\r\n  </form>\r\n\r\n  <table mat-table [dataSource]=\"parkings\" class=\"mat-elevation-z8 full-width\">\r\n    <ng-container matColumnDef=\"name\">\r\n      <th mat-header-cell *matHeaderCellDef>Nome</th>\r\n      <td mat-cell *matCellDef=\"let p\">{{ p.name }}</td>\r\n    </ng-container>\r\n\r\n    <ng-container matColumnDef=\"acoes\">\r\n      <th mat-header-cell *matHeaderCellDef>Ações</th>\r\n      <td mat-cell *matCellDef=\"let p\">\r\n        <button mat-icon-button color=\"primary\" (click)=\"editarEstacionamento(p)\">\r\n          <mat-icon>edit</mat-icon>\r\n        </button>\r\n        <button mat-icon-button color=\"warn\" (click)=\"deletarEstacionamento(p.id)\">\r\n          <mat-icon>delete</mat-icon>\r\n        </button>\r\n      </td>\r\n    </ng-container>\r\n\r\n    <tr mat-header-row *matHeaderRowDef=\"['name', 'acoes']\"></tr>\r\n    <tr mat-row *matRowDef=\"let row; columns: ['name', 'acoes'];\"></tr>\r\n  </table>\r\n</mat-card>\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}