<?php

namespace App\Controllers;

use CodeIgniter\Exceptions\PageNotFoundException;
use App\Models\CertificadoModel;
use App\Models\TipoCertificadoModel;

class Certificados extends BaseController
{
    protected $certificadoModel;
    protected $tipoCertificadoModel;
    public function __construct()
    {
        $this->certificadoModel = new CertificadoModel();
        $this->tipoCertificadoModel = new TipoCertificadoModel();
    }

    public function index(): string
    {
        permiso('Certificados', 'Mis certificados', true);
        $data['tipos_certificado'] = $this->tipoCertificadoModel->getActivos();
        $data['crear_permiso'] = permiso('Certificados', 'Mis certificados', false);
        $data['editar_permiso'] = permiso('Certificados', 'Mis certificados', false);
        $data['eliminar_permiso'] = permiso('Certificados', 'Mis certificados', false);
        return view('certificados/index', $data);
    } 

    public function mis_certificados(): string
    {
        permiso('Certificados', 'Mis certificados', true);
        $usuarioId = session()->get('usuario')['id'];
        $data['certificados'] = $this->certificadoModel->getCertificadosPorUsuario($usuarioId);
        return view('certificados/mis_certificados', $data);
    }

    public function create()
    {
        permiso('Certificados', 'Mis certificados', true);
        $data['tipos_certificado'] = $this->tipoCertificadoModel->getActivos();
        return view('certificados/create', $data);
    }
    
    public function generar_certificado(){
                $pdf = new \App\Libraries\PdfGenerator();
                $organizacion = array(
                    'nombre' => 'Junta de Vecino N-33 Villa el Salto', // string
                    'numero' => 'N-33', // string
                    'direccion' => 'Antofagasta', // string
                    'personalidad_juridica' => 'Personalidad Jurídica N 73/90, R.U.T 72.033.400', // string
                    'sede_social' => 'Sicilia N° 1516', // string
                    'presidente_nombre' => 'FELIZA GODOY GUERRERO', // string
                    'presidente_cargo' => 'PRESIDENTA', // string
                );
                $certificado = array(
                    'tipo' => 'CERTIFICADO DE VIGENCIA', // string (ej: CERTIFICADO DE RESIDENCIA, CERTIFICADO DE BUEN VECINO, etc)
                    'nombre_participante' => 'Juan Pérez García', // string - Nombre completo del solicitante
                    'rut' => '12.345.678-9', // string - RUT del solicitante
                    'calle' => 'Calle Las Flores', // string
                    'numero' => '234', // string
                    'telefono' => '+56912345678', // string
                    'sector' => 'Sector jurisdiccional de la junta de vecinos N 33 Villa el Salto', // string
                    'domicilio_identificado' => 'Domicilio identificado', // string
                    'fecha_emision' => '09 de febrero de 2026', // string en formato legible
                    'numero_certificado' => 'CERT-000001', // string
                );
                $data = [
                    'organizacion' => $organizacion,
                    'certificado' => $certificado,
                    'firma' => [
                        'ruta_firma' => '/uploads/firmas/firma_presidente.png', // string - ruta relativa a la firma (opcional)
                        'incluir_firma_digital' => true, // boolean
                    ]
                ];

                log_message('info', '[generar_certificado] Generando HTML para PDF...');
                $html = view('certificados/plantillas/certificado', $data);
                log_message('info', '[generar_certificado] HTML generado: ' . (strlen($html) > 0 ? 'OK, length: '.strlen($html) : 'VACIO'));

                log_message('info', '[generar_certificado] Generando PDF...');
                $output = $pdf->generate($html);
                log_message('info', '[generar_certificado] PDF generado. Output length: ' . (is_string($output) ? strlen($output) : 'NO STRING'));

                if (empty($output)) {
                    log_message('error', '[generar_certificado] El PDF generado está vacío.');
                }

                return $this->response
                    ->setHeader('Content-Type', 'application/pdf')
                    ->setHeader('Content-Disposition', 'attachment; filename="'.$certificado['tipo'].' '.$certificado['numero_certificado'].'.pdf"')
                    ->setBody($output);
            }
}
