add-objetivos-plnbv.component.ts 3.69 KB
Newer Older
1
import { Component, EventEmitter, OnInit, Output } from '@angular/core';
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
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 {
19
  @Output() formularioGuardado = new EventEmitter<void>();
20
  obj!: objetivosBV[];
21
  idRecuperado: number;
22 23
  politicas: any[] = [];
  objetivos: any[] = [];
24
  progObj: prograObj[] = [];
25 26 27 28 29 30 31 32 33 34 35 36 37
  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
38 39
        objetivo: ['',Validators.required],
        politica: ['',Validators.required]
40 41 42 43 44
      });
      this.obj = [];
    }

    ngOnInit(): void {
45
      this.idRecuperado = parseInt(localStorage.getItem('proyectoId'),10);
46 47 48 49 50 51
      this.obtenerObjetivos();
    }

    onSubmit() {
      if (this.myForm.valid) {
        try {
52
          this.objPM.uzytavproyec_id = this.idRecuperado;
53 54 55 56
          this.objPM.uzytavobjetivo_b_vivir_id = this.myForm.value.politica;

          this.objPS.guardarParametros(this.objPM).subscribe(response => {
            this.objPS.parametrosActualizados.next();
57
            this.openModal('La información ha sido enviada con exito');
58
            this.formularioGuardado.emit();
59 60 61 62 63 64 65 66 67 68 69 70 71
            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);
      });
72 73 74 75

      this.objPS.obtenerRegistrosRelacionadosProyecto(this.idRecuperado).subscribe(data =>{
        this.progObj = data;
      });
76 77 78 79
    }

    obtenerHijos(id: number) {
      this.objS.obtenerHijos(id).subscribe(data => {
80
        this.politicas = data.filter(item => item.uzytavobjetivo_b_vivirid_padre && !this.politicaYaAgregada(item.uzytavobjetivo_b_vivir_id));
81 82 83
      });
    }

84 85 86 87 88
    politicaYaAgregada(politicaId: number): boolean {
      return this.progObj.some(item => item.uzytavobjetivo_b_vivir_id === politicaId);
    }

    openModal(mensaje: string) {
89
      const dialogRef = this.dialog.open(EnvioFormularioComponent, {
90 91
        disableClose: true,
        data: {mensaje: mensaje}
92 93 94 95 96 97 98 99
      });

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