perfil-usuario.component.ts 3.75 KB
Newer Older
1 2 3 4
import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';
import { MostrarOcultarService } from '../../../../services/mostrar-ocultar.service';
import { Perfil } from '../../../../Models/perfil';
import { PerfilService } from '../../../../services/perfiles/perfil.service';
5
import { Observable, Subscription } from 'rxjs';
6 7 8 9
import { Router } from '@angular/router';
import { MatTableDataSource } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
10 11
import { ConfirmacionEliminacionComponent } from '../../../programa/opciones/ConfirmacionEliminacion/ConfirmacionEliminacion.component';
import { MatDialog } from '@angular/material/dialog';
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

@Component({
  selector: 'app-perfil-usuario',
  templateUrl: './perfil-usuario.component.html',
  styleUrls: ['./perfil-usuario.component.css']
})
export class PerfilUsuarioComponent implements OnInit {

  terminoBusqueda: string = '';
  perfil!: Perfil[];
  parametrosSubscription: Subscription;
  dataSource: MatTableDataSource<Perfil>;
  displayedColumns: string[] = [
    'Nro',
    'Nombre de Perfil',
    'Acciones',
  ];

  @ViewChild(MatPaginator) paginator!: MatPaginator;
  @ViewChild(MatSort) sort!: MatSort;

  filtroGeneral: string = '';


  constructor(
    public mostrarOcultarService: MostrarOcultarService,
    private router: Router,
39 40
    private perfilService: PerfilService,
    private dialog: MatDialog
41 42 43 44 45 46 47 48 49
  ) {
    this.dataSource = new MatTableDataSource<Perfil>([]);
  }


   applyFilter(event: Event) {
    const filterValue = (event.target as HTMLInputElement).value;
    this.dataSource.filter = filterValue.trim();
    this.filtroGeneral = filterValue.trim();
50

51 52
    this.dataSource.filterPredicate = (data: Perfil) => {
      const nombre = data.uzytperfil_nombre.toLowerCase();
53

54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
      // Filtrar por todos los campos (nombre de institución, dirección, representante y parroquia)
      return (
        nombre.includes(this.filtroGeneral.toLowerCase())
      );
    };
  }

  ngAfterViewInit() {
    this.dataSource.paginator = this.paginator;
    this.dataSource.sort = this.sort;
  }

  AgregarParametro() {
    this.router.navigate(['main/AddPerfilUsuario']);
  }

  editParametros(id: number) {
    console.log("id perfil ", id)
    const registroSeleccionado = this.perfil.find(
      (perfil) => perfil.id === id
    );
    this.mostrarOcultarService.perfilEditado = registroSeleccionado;
    this.router.navigate(['main/EditPerfilUsuario', id]);
  }


  eliminarParametro(id: number) {
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
    this.openModalDelete('¿Estás seguro de eliminar el Perfil?').subscribe(result => {
      if (result) {
        console.log("id", id);
        this.perfilService.eliminarParametros(id).subscribe(
          () => {
            // Manejar la eliminación exitosa
            console.log('Registro eliminado correctamente');
            this.obtenerRegistros();
          },
          (error) => {
            // Manejar el error en caso de que ocurra
            console.error('Error al eliminar el registro', error);
          }
        );
      }
    });
97 98
  }

99 100 101 102 103 104
  formularioEnviado:boolean;
  openModalDelete(mensaje: string): Observable<string>{
    const dialogRef = this.dialog.open(ConfirmacionEliminacionComponent, {
      disableClose: true,
      data: { mensaje: mensaje }
    });
105

106 107
    return dialogRef.afterClosed();
  }
108 109 110 111 112 113 114 115 116 117 118 119 120 121

  volver() {
    this.router.navigate(['main/PrincipalUsuarios']);
  }

  obtenerRegistros() {
    this.parametrosSubscription = this.perfilService.obtenerParametros().subscribe((data) => {
      this.perfil = data;
      this.dataSource.data = this.perfil;
    });
  }

  ngOnInit() {
    this.obtenerRegistros();
122

123 124 125 126 127 128 129 130 131
  }

  ngOnDestroy() {
    // Desuscribirse para evitar fugas de memoria
    this.parametrosSubscription.unsubscribe();
  }


}