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(); } }