<?php

namespace App\Controllers\Pdf;

use App\Controllers\BaseController;


class PrintPresupuestos extends BaseController
{

    public function index($id_presupuesto)
    {

        $presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel');
        $lineasPresupuestoModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
        $direccionesEnvioModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
        $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');

        $data['presupuesto'] = $presupuestoModel->getResourceForPdf($id_presupuesto)->get()->getRow();
        $data['lp_ByN'] = $lineasPresupuestoModel->getResourceByNForPdf($id_presupuesto)->get()->getRow();
        $data['lp_Color'] = $lineasPresupuestoModel->getResourceColorForPdf($id_presupuesto)->get()->getRow();
        $data['lp_Cubierta'] = $lineasPresupuestoModel->getResourceCubiertaForPdf($id_presupuesto)->get()->getRow();
        $data['lp_Sobrecubierta'] = $lineasPresupuestoModel->getResourceSobrecubiertaForPdf($id_presupuesto)->get()->getRow();
        $data['lp_Guardas'] = $lineasPresupuestoModel->getResourceGuardasForPdf($id_presupuesto)->get()->getRow();
        $data['lp_Faja'] = $lineasPresupuestoModel->getResourceFajaForPdf($id_presupuesto)->get()->getRow();
        $data['acabado_cubierta'] = $presupuestoAcabadosModel->getAcabadoCubiertaForPdf($id_presupuesto)->get()->getRow();
        $data['acabado_sobrecubierta'] = $presupuestoAcabadosModel->getAcabadoSobrecubiertaForPdf($id_presupuesto)->get()->getRow();
        $data['acabado_reserva_uvi'] = $presupuestoAcabadosModel->getAcabadoReservaUviForPdf($id_presupuesto)->get()->getRow();
        $data['direccionesEnvio'] = $direccionesEnvioModel->getResourceForPdf($id_presupuesto)->get()->getResultObject();

        return view(getenv('theme.path') . 'pdfs/presupuesto', $data);
    }

    public function generar($presupuesto_id)
    {

        // Cargar modelos
        $presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel');
        $lineasPresupuestoModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
        $direccionesEnvioModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
        $presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');

        // Informacion del presupuesto
        $data['presupuesto'] = $presupuestoModel->getResourceForPdf($presupuesto_id)->get()->getRow();
        $data['lp_ByN'] = $lineasPresupuestoModel->getResourceByNForPdf($presupuesto_id)->get()->getRow();
        $data['lp_Color'] = $lineasPresupuestoModel->getResourceColorForPdf($presupuesto_id)->get()->getRow();
        $data['lp_Cubierta'] = $lineasPresupuestoModel->getResourceCubiertaForPdf($presupuesto_id)->get()->getRow();
        $data['lp_Sobrecubierta'] = $lineasPresupuestoModel->getResourceSobrecubiertaForPdf($presupuesto_id)->get()->getRow();
        $data['lp_Guardas'] = $lineasPresupuestoModel->getResourceGuardasForPdf($presupuesto_id)->get()->getRow();
        $data['lp_Faja'] = $lineasPresupuestoModel->getResourceFajaForPdf($presupuesto_id)->get()->getRow();
        $data['acabado_cubierta'] = $presupuestoAcabadosModel->getAcabadoCubiertaForPdf($presupuesto_id)->get()->getRow();
        $data['acabado_sobrecubierta'] = $presupuestoAcabadosModel->getAcabadoSobrecubiertaForPdf($presupuesto_id)->get()->getRow();
        $data['acabado_reserva_uvi'] = $presupuestoAcabadosModel->getAcabadoReservaUviForPdf($presupuesto_id)->get()->getRow();
        $data['direccionesEnvio'] = $direccionesEnvioModel->getResourceForPdf($presupuesto_id)->get()->getResultObject();

        // Crear una instancia de Dompdf
        $options = new \Dompdf\Options();
        $options->set('isHtml5ParserEnabled', true);
        $options->set('isPhpEnabled', true);
        $options->set('isRemoteEnabled', true);
        $dompdf = new \Dompdf\Dompdf($options);

        // Metodo que funciona en el docker
        $css = file_get_contents(getenv('theme.path'). 'css/pdf.presupuesto.css');
        $html = view(getenv('theme.path') . 'pdfs/presupuesto', $data);
        $html = "<style>$css</style>" . $html;
        $dompdf->loadHtml($html);

        //$dompdf->loadHtml(view(getenv('theme.path') . 'pdfs/presupuesto', $data));

        // Establecer el tamaño del papel
        $dompdf->setPaper('A4', 'portrait');

        // Renderizar el PDF
        $dompdf->render();

        // Obtener el contenido generado
        $output = $dompdf->output();

        // Establecer las cabeceras para visualizar en lugar de descargar
        $file_name = "presupuesto-$presupuesto_id.pdf";
        return $this->response
            ->setStatusCode(200)
            ->setHeader('Content-Type', 'application/pdf')
            ->setHeader('Content-Disposition', 'inline; filename="' . $file_name . '"')
            ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate')
            ->setHeader('Pragma', 'public')
            ->setHeader('Content-Length', strlen($output))
            ->setBody($output);
    }
}