<?php
// propuesta_pdf.php - Genera PDF exacto como Propuesta_Comercial_Chatbot_WhatsApp_TYKUN.docx
session_start();
require_once('fpdf186/fpdf.php');
include "core/autoload.php";
include "core/app/model/ProposalData.php";
include "core/app/model/PersonData.php";
include "core/app/model/ContactData.php";
include "core/app/model/UserData.php";
include "core/app/model/ProposalSectionData.php";

date_default_timezone_set("America/La_Paz");

// Auth
if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    exit('Sesion invalida - inicie sesion');
}

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id <= 0) {
    http_response_code(400);
    exit('Falta id');
}
$proposal = ProposalData::getById($id);
if (!$proposal || !$proposal->id) {
    http_response_code(404);
    exit('Propuesta no encontrada');
}

$client = $proposal->client_id ? PersonData::getById($proposal->client_id) : null;
$contact = $proposal->contact_id ? ContactData::getById($proposal->contact_id) : null;
$fecha = $proposal->fecha ? $proposal->fecha : date('Y-m-d');
$validez = $proposal->validez ? $proposal->validez : 30;
$place = $proposal->place ? $proposal->place : 'La Paz, Bolivia';
$clientName = $client ? trim($client->name . ' ' . $client->lastname) : 'Cliente no asignado';
$contactName = $contact ? trim($contact->name . ' ' . $contact->lastname) : '-';

// Logo
$LOGO = __DIR__ . '/assets/images/tykun_propuesta_logo.png';
if (!file_exists($LOGO)) $LOGO = __DIR__ . '/logo_total.jpg';

class PropuestaPDF extends FPDF {
    private $logoPath;
    function __construct($logo) {
        parent::__construct('P','mm','A4');
        $this->logoPath = $logo;
        $this->SetAutoPageBreak(true, 20);
    }
    function Header() {
        if (file_exists($this->logoPath)) {
            $this->Image($this->logoPath, 12, 8, 38);
        }
        // Brand top-right
        $this->SetFont('Arial','B',9);
        $this->SetTextColor(25,55,95);
        $this->SetXY(150, 10);
        $this->Cell(50, 5, 'TYKUN', 0, 1, 'R');
        $this->SetFont('Arial','',7);
        $this->SetTextColor(80,80,80);
        $this->SetX(120);
        $this->Cell(80, 4, mb_convert_encoding('Consultora de Automatizacion Empresarial', 'ISO-8859-1','UTF-8'), 0, 1, 'R');
        // line
        $this->SetDrawColor(25,55,95);
        $this->SetLineWidth(0.6);
        $this->Line(12, 22, 198, 22);
        $this->SetLineWidth(0.2);
        // Reservar espacio para que contenido de paginas 2,3 no solape header
        $this->SetY(28);
    }
    function Footer() {
        $this->SetY(-15);
        $this->SetFont('Arial','I',7);
        $this->SetTextColor(120,120,120);
        $this->Cell(0,10, mb_convert_encoding('Consultora TYKUN - Automatizacion y Optimizacion Empresarial | www.consultora-tykun.com', 'ISO-8859-1','UTF-8'),0,0,'C');
        $this->SetFont('Arial','',7);
        $this->SetXY(10,-15);
        $this->Cell(0,10, 'Pag. '.$this->PageNo().'/{nb}',0,0,'R');
    }
    // Helper: encode
    function txt($s){ return mb_convert_encoding($s,'ISO-8859-1','UTF-8'); }
    function heading1($title){
        $this->Ln(3);
        // check page break needed
        if($this->GetY() > 265){ $this->AddPage(); }
        $this->SetFont('Arial','B',10);
        $this->SetFillColor(25,55,95);
        $this->SetTextColor(255,255,255);
        $this->Cell(0,7, $this->txt('  '.strtoupper($title)),0,1,'L',true);
        $this->SetTextColor(30,30,30);
        $this->Ln(2);
    }
    function heading2($title){
        if($this->GetY() > 268){ $this->AddPage(); }
        $this->SetFont('Arial','B',9);
        $this->SetTextColor(25,55,95);
        $this->Cell(0,6, $this->txt($title),0,1,'L');
        $this->SetTextColor(30,30,30);
        $this->SetDrawColor(200,200,200);
        $this->Line($this->GetX(), $this->GetY(), 198, $this->GetY());
        $this->Ln(2);
    }
    function heading3($title){
        if($this->GetY() > 270){ $this->AddPage(); }
        $this->SetFont('Arial','B',8.5);
        $this->SetTextColor(40,40,40);
        $this->Cell(0,5, $this->txt($title),0,1,'L');
        $this->SetTextColor(30,30,30);
    }
    function paragraph($text){
        $this->SetFont('Arial','',8.5);
        $this->SetTextColor(35,35,35);
        $this->MultiCell(0,4.5, $this->txt($text),0,'J');
        $this->Ln(1);
    }
    function bullets($items){
        $this->SetFont('Arial','',8.5);
        $this->SetTextColor(35,35,35);
        foreach($items as $it){
            $x=$this->GetX();
            $this->Cell(6,4.5, $this->txt(chr(8226)),0,0,'R');
            // use MultiCell for wrapped
            $this->MultiCell(0,4.5, $this->txt($it),0,'L');
            $this->Ln(0.5);
        }
        $this->Ln(1);
    }
    function tableHeader($cols, $widths){
        $this->SetFont('Arial','B',7.5);
        $this->SetFillColor(25,55,95);
        $this->SetTextColor(255,255,255);
        $this->SetDrawColor(25,55,95);
        for($i=0;$i<count($cols);$i++){
            $this->Cell($widths[$i],7, $this->txt($cols[$i]),1,0,'C',true);
        }
        $this->Ln();
        $this->SetTextColor(30,30,30);
    }
    function tableRow($cells, $widths, $fill=false){
        $this->SetFont('Arial','',7.5);
        if($fill) $this->SetFillColor(235,240,248);
        else $this->SetFillColor(255,255,255);
        $this->SetDrawColor(200,200,200);
        $h=6;
        // check if next row would overflow
        if($this->GetY()+$h > 275){ $this->AddPage(); }
        for($i=0;$i<count($cells);$i++){
            $align = ($i==0) ? 'L' : 'C';
            $this->Cell($widths[$i],$h, $this->txt($cells[$i]),1,0,$align,$fill);
        }
        $this->Ln();
    }
}

$pdf = new PropuestaPDF($LOGO);
$pdf->AliasNbPages();
$pdf->AddPage();

// Title block
$pdf->SetY(34);
$pdf->SetFont('Arial','B',15);
$pdf->SetTextColor(25,55,95);
$pdf->Cell(0,8, $pdf->txt('PROPUESTA COMERCIAL'),0,1,'C');
$pdf->SetFont('Arial','',9);
$pdf->SetTextColor(80,80,80);
$pdf->Cell(0,5, $pdf->txt('Servicio de Suscripcion Mensual - Chatbot Inteligente de WhatsApp'),0,1,'C');
$pdf->Ln(4);
$pdf->SetDrawColor(25,55,95);
$pdf->SetLineWidth(0.4);
$pdf->Line(70, $pdf->GetY(), 140, $pdf->GetY());
$pdf->SetLineWidth(0.2);
$pdf->Ln(4);

// Client info box
$pdf->SetFillColor(240,244,250);
$pdf->SetDrawColor(200,210,230);
$pdf->SetFont('Arial','',8);
$pdf->SetTextColor(30,30,30);
$y = $pdf->GetY();
$pdf->Rect(12, $y, 186, 10, 'DF');
$pdf->SetXY(14, $y+3);
$pdf->SetFont('Arial','B',8);
$pdf->Cell(25,4, $pdf->txt('Cliente:'),0,0,'L');
$pdf->SetFont('Arial','',8);
$pdf->Cell(68,4, $pdf->txt($clientName),0,0,'L');
$pdf->SetFont('Arial','B',8);
$pdf->Cell(18,4, $pdf->txt('Fecha:'),0,0,'L');
$pdf->SetFont('Arial','',8);
$pdf->Cell(45,4, $pdf->txt(date('d/m/Y', strtotime($fecha))),0,1,'L');
$pdf->SetY($y+12);
$pdf->Ln(3);

// Presentacion
$pdf->heading1('Presentacion');
$pdf->paragraph('Consultora TYKUN presenta su servicio de automatizacion mediante Chatbot Inteligente para WhatsApp, disenado para optimizar la comunicacion, atencion y gestion operativa de consultorios, clinicas y centros de salud.');
$pdf->paragraph('Nuestra solucion permite automatizar procesos repetitivos, mejorar los tiempos de respuesta y brindar una experiencia mas eficiente y organizada para pacientes y personal administrativo.');

// Objetivo
$pdf->heading1('Objetivo del Servicio');
$pdf->paragraph('Implementar un sistema automatizado de atencion via WhatsApp que permita centralizar consultas frecuentes, optimizar la gestion de pacientes y mejorar la disponibilidad de atencion digital las 24 horas.');

// Funcionalidades
$pdf->heading1('Funcionalidades Incluidas');
$pdf->bullets([
    'Atencion automatizada a consultas frecuentes',
    'Informacion de horarios, ubicacion y servicios',
    'Registro inicial de datos de pacientes',
    'Confirmacion y cancelacion de reservas',
    'Gestion y monitoreo de conversaciones',
    'Recordatorios automaticos de citas',
    'Posibilidad de integracion con sistemas medicos y/o paginas web'
]);

// Beneficios
$pdf->heading1('Beneficios');
$pdf->bullets([
    'Reduccion de carga administrativa',
    'Atencion disponible 24/7',
    'Optimizacion de tiempos de respuesta',
    'Mejor organizacion de consultas',
    'Mayor seguimiento y comunicacion con pacientes',
    'Escalabilidad para crecimiento operativo'
]);

// Modalidad
$pdf->heading1('Modalidad del Servicio');
$pdf->paragraph('El servicio se ofrece bajo modalidad de suscripcion mensual e incluye hosting, mantenimiento tecnico, monitoreo basico, soporte remoto, actualizaciones funcionales y ajustes menores de configuracion.');

// Implementacion
$pdf->heading1('Implementacion Inicial');
$pdf->paragraph('La puesta en marcha incluye configuracion inicial, parametrizacion de respuestas, capacitacion basica de uso y pruebas operativas.');
$pdf->SetFont('Arial','B',9);
$pdf->SetTextColor(25,55,95);
$pdf->SetFillColor(235,240,248);
$pdf->Cell(0,7, $pdf->txt('  Costo de Implementacion: Bs. 350 (unico pago)'),0,1,'L',true);
$pdf->SetTextColor(30,30,30);
$pdf->Ln(2);

// Condiciones
$pdf->heading2('Condiciones');
$pdf->bullets([
    'Tiempo estimado de implementacion: 3 dias habiles',
    'La linea de WhatsApp debe pertenecer al cliente',
    'La suscripcion puede ampliarse con funcionalidades adicionales segun requerimiento'
]);

// Plan Mensual
$pdf->heading1('Plan Mensual');
$pdf->SetFont('Arial','I',8);
$pdf->SetTextColor(80,80,80);
$pdf->Cell(0,4, $pdf->txt('Planes de Suscripcion disponibles'),0,1,'C');
$pdf->Ln(1);

// Table Caracteristicas
$w = [86, 33, 33, 34];
$pdf->tableHeader(['Caracteristicas','Basico','Empresa','Profesional'], $w);
$rows = [
    ['Atencion automatizada a consultas frecuentes','V','V','V'],
    ['CRM Web con acceso seguro (https)','V','V','V'],
    ['Informacion de horarios, ubicacion y servicios','V','V','V'],
    ['Registro inicial de datos de pacientes','V','V','V'],
    ['Confirmacion y cancelacion de reservas','V','V','V'],
    ['Envio de archivos multimedia','V','V','V'],
    ['Agente IA personalizable','X','V','V'],
    ['Integracion con Google Calendar','X','V','V'],
    ['Gestion y monitoreo de conversaciones','X','V','V'],
    ['Recordatorios automaticos de citas','X','X','V'],
    ['Recepcion de archivos multimedia','X','X','V'],
    ['Atencion a mensajes de voz','X','X','V'],
    ['Soporte tecnico remoto','Basico','Prioritario','Prioritario'],
    ['Personalizacion de flujos','Limitada','Media','Avanzada'],
];
foreach($rows as $idx=>$r){
    $pdf->tableRow($r, $w, $idx%2==0);
}
$pdf->Ln(3);

// Inversion Mensual
$pdf->heading2('Inversion Mensual');
$pdf->SetFont('Arial','B',8.5);
$pdf->SetTextColor(25,55,95);
$pdf->Cell(0,5, $pdf->txt('Plan Basico: Bs. 100 / mes'),0,1,'L');
$pdf->Cell(0,5, $pdf->txt('Plan Empresa: Bs. 200 / mes'),0,1,'L');
$pdf->Cell(0,5, $pdf->txt('Plan Profesional: Bs. 300 / mes'),0,1,'L');
$pdf->SetTextColor(30,30,30);
$pdf->Ln(2);

// Paquetes
$pdf->heading1('Paquetes de Suscripcion y Beneficios');
$pdf->paragraph('Con el objetivo de brindar mayor flexibilidad y beneficios economicos a nuestros clientes, TYKUN Consultora ofrece modalidades de contratacion con descuentos preferenciales segun el periodo de suscripcion seleccionado.');

// Table Modalidad | Beneficio
$w2 = [55, 131];
$pdf->tableHeader(['Modalidad','Beneficio'], $w2);
$pdf->tableRow(['Mensual','Pago estandar'], $w2, false);
$pdf->tableRow(['Paquete Trimestral (3 meses)','Basico: Bs. 270 | Empresa: Bs. 540 | Profesional: Bs. 810'], $w2, true);
$pdf->tableRow(['Paquete Semestral (6 meses)','Basico: Bs. 480 | Empresa: Bs. 960 | Profesional: Bs. 1.500'], $w2, false);
$pdf->tableRow(['Paquete Anual (12 meses)','Basico: Bs. 840 | Empresa: Bs. 1.680 | Profesional: Bs. 2.900'], $w2, true);
$pdf->Ln(3);

// Beneficios Adicionales
$pdf->heading2('Beneficios Adicionales de Planes Extendidos');
$pdf->heading3('Paquete Trimestral');
$pdf->bullets(['Precio preferencial','Congelamiento de tarifa durante el periodo contratado']);
$pdf->heading3('Paquete Semestral');
$pdf->bullets(['Mayor ahorro acumulado','Prioridad en soporte tecnico y ajustes menores']);
$pdf->heading3('Paquete Anual');
$pdf->bullets(['Maximo ahorro economico','Prioridad alta de soporte','Ajustes y optimizaciones periodicas incluidos','Acceso preferencial a nuevas funcionalidades']);

// Condiciones Comerciales
$pdf->heading2('Condiciones Comerciales');
$pdf->bullets([
    'Los descuentos aplican unicamente sobre pagos anticipados.',
    'Los paquetes pueden renovarse manteniendo beneficios vigentes segun evaluacion comercial.',
    'Las funcionalidades incluidas dependeran del plan contratado (Basico, Empresa o Profesional).'
]);



// Vigencia
$pdf->heading1('Vigencia de la Propuesta');
$pdf->paragraph('La presente propuesta tiene una vigencia de 15 dias calendario a partir de su emision.');
$pdf->SetTextColor(30,30,30);
$pdf->Ln(2);

// Firma
$pdf->Ln(4);
$pdf->SetFont('Arial','',9);
$pdf->Cell(0,5, $pdf->txt('Atentamente,'),0,1,'L');
$pdf->Ln(2);
$pdf->SetFont('Arial','B',10);
$pdf->SetTextColor(25,55,95);
$pdf->Cell(0,6, $pdf->txt('Consultora TYKUN'),0,1,'L');
$pdf->SetFont('Arial','',8.5);
$pdf->SetTextColor(80,80,80);
$pdf->Cell(0,4, $pdf->txt('Automatizacion y Optimizacion Empresarial'),0,1,'L');
$pdf->Cell(0,4, $pdf->txt('Soluciones Tecnologicas para el Area de la Salud'),0,1,'L');
$pdf->Ln(4);
$pdf->SetDrawColor(25,55,95);
$pdf->Line(12, $pdf->GetY(), 70, $pdf->GetY());
$pdf->SetFont('Arial','',7);
$pdf->Cell(58,4, $pdf->txt('Firma y sello'),0,1,'C');

// Output
$filename = 'Propuesta_TYKUN_'.$id.'_'.date('Ymd').'.pdf';
$pdf->Output('I', $filename);
