import { Component, OnInit, OnDestroy, Input } from '@angular/core';
import { MostrarOcultarService } from '../../../../../services/mostrar-ocultar.service';
import { GrupoEvaluacion} from '../../../../../Models/grupos-evaluacion'
import { GruposParametrosEvaluacionService } from '../../../../../services/grupos-parametros-evaluacion/grupos-parametros-evaluacion.service';
import { Subscription} from 'rxjs';
import { Router } from '@angular/router';
import { distinctUntilChanged } from 'rxjs/operators';

@Component({
  selector: 'app-grupo-parametros-eva',
  templateUrl: './grupo-parametros-eva.component.html',
  styleUrls: ['./grupo-parametros-eva.component.css']
})
export class GrupoParametrosEvaComponent implements OnInit {

  mostrarDiv: number[] = [];
  grupoEvaluacion!: GrupoEvaluacion[];
  parametrosSubscription: Subscription;
  @Input() idConf2: number;



  toggleDiv(i: number) {
    const index = this.mostrarDiv.indexOf(i);
    if (index > -1) {
      this.mostrarDiv.splice(index, 1); // Eliminar el índice del arreglo
    } else {
      this.mostrarDiv.push(i); // Agregar el índice al arreglo
    }
  }

  constructor(
    private mostrarOcultarService: MostrarOcultarService,
    private gruposParametrosEvaluacionService: GruposParametrosEvaluacionService,
    private router: Router
  ) {
  }

  AgregarParametro() {
    this.router.navigate(['main/NuevoGrupoParametrosEvaComponent'], { queryParams: { idGrupo: this.idConf2.toString() } });
  }

  
  EditarParametro(id:number){
    const registroSeleccionado = this.grupoEvaluacion.find(parametro => parametro.uzytavcabparaevaf_id === id);
    this.mostrarOcultarService.grupoEvaluacionEditado = registroSeleccionado;
    this.router.navigate(['main/EditGrupoParametrosEvaComponent', id]);

  }

  eliminarParametro(id: number) {
    const confirmacion = confirm('¿Estás seguro de que quieres eliminar este parámetro?');
    if (confirmacion) {
      console.log("id",id);
      this.gruposParametrosEvaluacionService.eliminarParametros(id).subscribe(
        () => {
          // Manejar la eliminación exitosa
          console.log('Registro eliminado correctamente');
          this.obtenerRegistros(this.idConf2);
        },
        (error) => {
          // Manejar el error en caso de que ocurra
          console.error('Error al eliminar el registro', error);
        }
      );
    }
  }


  ngOnInit() {
    this.obtenerRegistros(this.idConf2);

    // Suscribirse a la notificación de actualización de componentes
    this.parametrosSubscription = this.gruposParametrosEvaluacionService.parametrosActualizados
      .pipe(distinctUntilChanged())
      .subscribe(() => {
        this.obtenerRegistros(this.idConf2);
      });

  }


  obtenerRegistros(id:number) {
    this.gruposParametrosEvaluacionService.obtenerParametrosGrupoFinales(id).subscribe(data => {
      this.grupoEvaluacion = data;
    });
  }

}