import { Component, EventEmitter, OnInit, Output } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { Router } from '@angular/router';
import { objetivosBV } from 'src/app/modules/main/Models/objetivoPLNBV';
import { Actualiza_datosService } from 'src/app/modules/main/services/actualiza_datos/actualiza_datos.service';
import { Compartir_idService } from 'src/app/modules/main/services/compartir_id/compartir_id.service';
import { ObjetivosPLNBVService } from 'src/app/modules/main/services/objetivosPLNBV/objetivos-plnbv.service';
import { prograObj } from 'src/app/modules/main/Models/prograObj';
import { EnvioFormularioComponent } from '../../../../programa/opciones/envio-formulario/envio-formulario.component';
import { PrograObjService } from 'src/app/modules/main/services/prograObj/prograObj.service';

@Component({
  selector: 'vex-add-objetivos-plnbv',
  templateUrl: './add-objetivos-plnbv.component.html',
  styleUrls: ['./add-objetivos-plnbv.component.css']
})
export class AddObjetivosPLNBVComponent implements OnInit {
  @Output() formularioGuardado = new EventEmitter<void>();
  obj!: objetivosBV[];
  idRecuperado: number;
  politicas: any[] = [];
  objetivos: any[] = [];
  myForm: FormGroup;
  formularioEnviado: boolean;
  selectedObjetivo: string;
  constructor(
    private formBuilder: FormBuilder,
    private objS: ObjetivosPLNBVService,
    private objPM: prograObj,
    private idCompartido: Compartir_idService,
    private dialog: MatDialog,
    private datosCompartidos: Actualiza_datosService,
    private objPS: PrograObjService) {
      this.myForm = this.formBuilder.group({
        // Define los campos y validaciones para el formulario 1
        objetivo: ['',Validators.required],
        politica: ['',Validators.required]
      });
      this.obj = [];
    }

    ngOnInit(): void {
      this.idRecuperado = parseInt(localStorage.getItem('proyectoId'),10);
      this.obtenerObjetivos();
    }

    onSubmit() {
      if (this.myForm.valid) {
        try {
          this.objPM.uzytavproyec_id = this.idRecuperado;
          this.objPM.uzytavobjetivo_b_vivir_id = this.myForm.value.politica;

          this.objPS.guardarParametros(this.objPM).subscribe(response => {
            this.objPS.parametrosActualizados.next();
            this.openModal();
            this.formularioGuardado.emit();
            this.datosCompartidos.actualizarDatos(this.objPM);
            this.myForm.reset();
          });
        } catch (error) {
          console.error('Error al enviar los datos:', error);
        }
      }
    }

    obtenerObjetivos() {
      this.objS.obtenerParametros().subscribe(data => {
        this.obj = data.filter(item => !item.uzytavobjetivo_b_vivirid_padre);
      });
    }

    obtenerHijos(id: number) {
      this.objS.obtenerHijos(id).subscribe(data => {
        this.politicas = data.filter(item => item.uzytavobjetivo_b_vivirid_padre);
      });
    }

    openModal() {
      const dialogRef = this.dialog.open(EnvioFormularioComponent, {
        disableClose: true
      });

      dialogRef.afterClosed().subscribe(result => {
        console.log('La ventana modal se ha cerrado');
        this.formularioEnviado = true;
      });
    }
}