import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { recibirRespuestas } from './../../services/recibirRespuestas.service';
import { FormService } from './../../../Administrador/services/FormService.service';
import { EnviarInfoService } from '../../../Administrador/services/enviar-info.service';

@Component({
  selector: 'app-lista-formularios',
  templateUrl: './lista-formularios.component.html',
  styleUrls: ['./lista-formularios.component.css']
})
export class ListaFormulariosComponent implements OnInit {
  mensajeExito: string = '';
  color: string = '';
  textColor: string = '';
  formTitle: string = '';
  isLoading = false;
  formularios: any[] = [];
  columnas: string[] = ['id', 'titulo', 'accion'];
  dataSource: any;
formId:any;
  // Obtener datos del usuario logueado
  Padre = (() => {
    const simulacion = localStorage.getItem('userDataS');
    const real = localStorage.getItem('userData');
    try {
      return simulacion ? JSON.parse(simulacion) : real ? JSON.parse(real) : null;
    } catch (e) {
      console.error('Error al parsear usuario del localStorage:', e);
      return null;
    }
  })();
  usuarioLogueadoId = this.Padre ? this.Padre[0] : null;

  constructor(
    private _recibirRespuestas: recibirRespuestas,
    private router: Router,
    private formService: FormService,
    private _enviarInfo: EnviarInfoService
  ) {}

  ngOnInit() {
    this.obtenerFormulariosPublicados();
    this._enviarInfo.currentTextColor.subscribe(color => this.textColor = color);
    this._enviarInfo.currentColor.subscribe(color => this.color = color);

  }

  obtenerFormulariosPublicados(): void {
    this.formService.getPublishedForm().subscribe({
      next: (response: any) => {
        if (response.success && response.form) {
          const form = {
            id: response.form.id,
              formId: response.form.id, // 👈 agrega esto

            title: response.form.title || 'Formulario publicado',
            respondido: false,
            usuarioId: this.usuarioLogueadoId
          };

          // Verificar si ya respondió
          this._recibirRespuestas.tieneRespuesta(form.id, this.usuarioLogueadoId).subscribe({
            next: (res: any) => {
              if (res.success && res.hasRespuesta) {
                form.respondido = true;
              }
              this.formularios = [form]; // actualizar una vez que sepamos si respondió
            },
            error: (err) => {
              console.error('Error verificando respuestas:', err);
              this.formularios = [form]; // aun si hay error, mostrar el formulario
            }
          });
        } else {
          console.log('No se encontró formulario publicado');
        }
      },
      error: (err) => {
        console.error('Error al obtener el formulario:', err);
      }
    });
  }

  contestarFormulario(formId: number) {
    this.router.navigate(['homePadres/formularios'], {
      queryParams: {
        formId: formId
      }
    });
  }

  editarFormulario(formId: number) {
    this.router.navigate(['homePadres/formularios'], {
      queryParams: {
        editar: true,
        formId: formId
      }
    });
  }

descargarPDF(usuarioId: string, formId: string) {
  this._recibirRespuestas.descargarPDF(usuarioId, formId).subscribe((res) => {
    const blob = new Blob([res], { type: 'application/pdf' });
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = `respuesta_${usuarioId}_form_${formId}.pdf`;
    a.click();
    window.URL.revokeObjectURL(url);
  });
}


  applyFilter(event: any): void {
    const filterValue = (event.target.value || '').trim().toLowerCase();
    this.dataSource.filter = filterValue;
  }
}
