import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { GruposParametrosEvaluacionService } from '../../../../../services/grupos-parametros-evaluacion/grupos-parametros-evaluacion.service';
import { GrupoEvaluacion } from '../../../../../Models/grupos-evaluacion';
import { ActivatedRoute, Router } from '@angular/router';


interface TipoParametroEF {
  name: string;
}


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



export class NuevoGrupoParametrosEvaComponent implements OnInit {

  grupoEvaluacion: GrupoEvaluacion;
  myForm: FormGroup;
  tipo :number
  id: number;
  
  constructor( private formBuilder: FormBuilder,
    private gruposService: GruposParametrosEvaluacionService,
    private route: Router,
    private router: ActivatedRoute) { 
      this.grupoEvaluacion = new GrupoEvaluacion();
    }

  ngOnInit() {

    this.router.queryParams.subscribe(params => {
      this.id = params['idGrupo'];
    });

    this.myForm = this.formBuilder.group({
      nombre: ['', Validators.required],
      descripcion1: ['', Validators.required],
      descripcion2: ['', Validators.required],
      tipo: ['', Validators.required],
    });
  }

  volver() {
    this.route.navigate(['main/ParametrosEvaluacionFinal'])
  }

  transformarTipo() {
    const tipoParametroSeleccionado = this.myForm.value.tipo as TipoParametroEF;
    this.tipo = this.getTipoValue(tipoParametroSeleccionado);
  }

  getTipoValue(tipoParametro: TipoParametroEF): number {
    switch (tipoParametro.name) {
      case 'Analisis Pertinencia':
        return 1;
      case 'Analisis Eficacia':
        return 2;
      case 'Analisis Eficiencia':
        return 3;
      case 'Analisis Sostenibilidad':
        return 4;
      default:
        return 0; // Valor por defecto si no se encuentra ninguna coincidencia
    }
  }

  enviarSolicitud = false;
  onSubmit() {
    if (this.myForm.valid && !this.enviarSolicitud) {
      this.enviarSolicitud = true;
      this.transformarTipo()
      this.grupoEvaluacion.uzytavconparaeva_id = this.id
      this.grupoEvaluacion.uzytavcabparaevaf_nombre = this.myForm.value.nombre;
      this.grupoEvaluacion.uzytavcabparaevaf_desc1 = this.myForm.value.descripcion1;
      this.grupoEvaluacion.uzytavcabparaevaf_desc2 = this.myForm.value.descripcion2;
      this.grupoEvaluacion.uzytavcabparaevaf_tipo = this.tipo;

      this.gruposService.guardarParametros(this.grupoEvaluacion).subscribe(() => {
        this.gruposService.parametrosActualizados.next();
        this.route.navigate(['main/ParametrosEvaluacionFinal']);

      });
    }
  }


  tiposParametrosF = new FormControl<TipoParametroEF | null>(null, Validators.required);
  selectFormControl = new FormControl('', Validators.required);
  tipos: TipoParametroEF[] = [
    {name: 'Analisis Pertinencia'},
    {name: 'Analisis Eficacia'},
    {name: 'Analisis Eficiencia'},
    {name: 'Analisis Sostenibilidad'},
  ];

}