import { Component, OnInit } from '@angular/core';
import { FormBuilder, Validators, FormGroup } from '@angular/forms';
import { AnexosImagenes } from 'src/app/modules/main/Models/anexos-imagenes';
import { AnexosImagenesService } from 'src/app/modules/main/services/anexos-imagenes/anexos-imagenes.service';
import { ConvocatoriaService } from 'src/app/modules/main/services/convocatoria/convocatoria.service';
import { MatDialog } from '@angular/material/dialog';
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 { format } from 'date-fns';
import { ActualizarAnexosService } from 'src/app/modules/main/services/actualizar_anexos/actualizar-anexos.service';
import { EnvioFormularioComponent } from '../../../programa/opciones/envio-formulario/envio-formulario.component';
import { ProyectosService } from 'src/app/modules/main/services/proyectos/proyectos.service';
import { ProyectoComponent } from '../../Proyectos/Proyecto/Proyecto.component';
import { Proyectos } from 'src/app/modules/main/Models/proyectos';
import { DatosEspeService } from 'src/app/modules/main/services/APIs Externas/Datos espe/datos-espe.service';

@Component({
  selector: 'app-acta-compromiso-carreras',
  templateUrl: './acta-compromiso-carreras.component.html',
  styleUrls: ['./acta-compromiso-carreras.component.css']
})
export class ActaCompromisoCarrerasComponent implements OnInit {

  myForm: FormGroup;
  selectedFile: File | null = null;
  file: File;
  anexosImagenes: AnexosImagenes = {};
  enviarSolicitud = false;
  formularioEnviado: boolean
  cambio: boolean;
  proyecto: Proyectos

  constructor(
    private formBuilder: FormBuilder,
    private proyectosService: ProyectosService,
    private dialog: MatDialog,
    private actualizarAnexosService: ActualizarAnexosService,
    private datosCompartidos: Actualiza_datosService,
    private idCompartido: Compartir_idService,
    private datosEspeService: DatosEspeService,

  ) {
    this.proyecto = new Proyectos();
  }

  ngOnInit(): void {
    this.cambio = false;
    this.myForm = this.formBuilder.group({
      archivo: [{ value: '', disabled: true }, Validators.required],
    });
  }


  onFileSelected(event: any) {
    this.selectedFile = event.target.files[0];
  }


  onFileChange(event: any) {
    // Obtener el archivo seleccionado
    const fileList: FileList = event.target.files;
    if (fileList.length > 0) {
      this.file = fileList[0];
    }
  }


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

    dialogRef.afterClosed().subscribe(result => {
      this.formularioEnviado = true;
    });
  }

  async onSubmit() {
    if (this.myForm.valid) {

      this.proyecto.uzytavproyec_id = this.idCompartido.getIdGuardado();
      const pdfData = await this.enviarPDF();
      this.proyecto.uzytavproyec_com_part2_url = pdfData.idPDF;
      this.proyecto.uzytavproyec_com_part2_nom = pdfData.filename;
      this.proyectosService.modificarParametros(this.proyecto.uzytavproyec_id, this.proyecto).subscribe(
        response => {
          this.openModal();
          console.log('Datos Actualizados', this.proyecto);
          this.myForm.disable();
          this.cambio = false;
        },
        error => {
          console.log(error)
        }
      );
    }
  }

  async enviarPDF() {
    const formData = new FormData();
    formData.append('files', this.file);
    formData.append('sistema', 'vinculacion');

    try {
      const response = await this.datosEspeService.saveDocument(formData);
      return {
        idPDF: response.uuid,
        filename: response.fileName
      };
    } catch (error) {
      console.error('Error al guardar el PDF en el servidor:', error);
      throw error;
    }
  }

  cambiar() {
    this.cambio = true;
    this.myForm.get('archivo').enable();
  }
  cancelado() {
    this.cambio = false;
    this.myForm.disable();
  }

}