<?php
session_start();
if (!isset($_SESSION["user_id"])) { die('Acceso denegado'); }

require_once 'core/autoload.php';
require_once 'core/app/model/ContractData.php';

$c = ContractData::getById($_GET['id']);
if (!$c) { 
    echo "Contrato no encontrado";
    exit;
}

$config = ContractConfigData::get();
if (!$config) { 
    $config = new stdClass();
    $config->org_name = 'Consultora Tykun';
    $config->org_address = '';
    $config->org_phone = '';
    $config->org_email = '';
}

$typeLabels = array(
    'servicio' => 'PRESTACIÓN DE SERVICIOS',
    'consultoria' => 'CONSULTORÍA EXTERNA',
    'alquiler' => 'ALQUILER DE ESPACIO'
);
$docLabel = $typeLabels[$c->contract_type] ?? strtoupper($c->contract_type);

require_once 'fpdf186/fpdf.php';

date_default_timezone_set('America/La_Paz');

class ContratoPDF extends FPDF
{
    function Header()
    {
        $this->SetFont('Arial', 'B', 13);
        $this->SetTextColor(30, 30, 30);
        $this->SetXY(14, 10);
        $this->Cell(0, 7, iconv('UTF-8', 'windows-1252', 'CONTRATO DE PRESTACIÓN DE SERVICIOS'), 0, 1, 'C');
        $this->SetFont('Arial', 'B', 12);
        $this->SetXY(14, 18);
        $this->Cell(0, 7, iconv('UTF-8', 'windows-1252', 'CONSULTORA TYKUN'), 0, 1, 'C');
        $this->SetDrawColor(0, 102, 204);
        $this->SetLineWidth(0.8);
        $this->Line(14, 28, 196, 28);
        $this->Ln(6);
    }

    function Footer()
    {
        $this->SetY(-15);
        $this->SetFont('Arial', 'I', 8);
        $this->SetTextColor(150, 150, 150);
        $this->Cell(0, 10, iconv('UTF-8', 'windows-1252', 'Página ') . $this->PageNo() . '/{nb}', 0, 0, 'C');
    }

    function clausulaTitulo($texto)
    {
        $this->SetFont('Arial', 'B', 10);
        $this->SetTextColor(0, 51, 153);
        $this->SetFillColor(240, 245, 255);
        $this->Cell(0, 7, iconv('UTF-8', 'windows-1252', $texto), 0, 1, 'L', true);
        $this->SetTextColor(30, 30, 30);
        $this->Ln(1);
    }

    function parrafo($texto, $sangria = false)
    {
        $this->SetFont('Arial', '', 9.5);
        $this->SetTextColor(30, 30, 30);
        if ($sangria) $this->SetX(18);
        $this->MultiCell(0, 5.5, iconv('UTF-8', 'windows-1252', $texto), 0, 'J');
        $this->Ln(2);
    }

    function itemLista($texto)
    {
        $this->SetFont('Arial', '', 9.5);
        $this->SetX(18);
        $this->Cell(4, 5.5, chr(150), 0, 0, 'L');
        $this->MultiCell(0, 5.5, iconv('UTF-8', 'windows-1252', $texto), 0, 'L');
    }
}

$pdf = new ContratoPDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetMargins(14, 32, 14);
$pdf->SetAutoPageBreak(true, 20);

$fechaContrato = date('d \d\e F \d\e Y');
$meses = ['January'=>'enero','February'=>'febrero','March'=>'marzo','April'=>'abril','May'=>'mayo','June'=>'junio',
    'July'=>'julio','August'=>'agosto','September'=>'septiembre','October'=>'octubre','November'=>'noviembre','December'=>'diciembre'];
foreach ($meses as $en => $es) {
    $fechaContrato = str_replace($en, $es, $fechaContrato);
}

$pdf->parrafo(
    'Conste por el presente Contrato de ' . $docLabel . ', que celebran por una parte ' . 
    $c->part_a_name . ', en adelante EL PROVEEDOR, y por otra parte ' . $c->part_b_name . 
    ', en adelante EL CLIENTE, bajo las siguientes cláusulas:'
);

$pdf->Ln(2);

$pdf->clausulaTitulo('PRIMERA. PARTES DEL CONTRATO');
$pdf->parrafo('PRIMERA PARTE (PROVEEDOR):');
$pdf->itemLista('Nombre/Razón Social: ' . $c->part_a_name);
$pdf->itemLista('Cargo/Representación: ' . $c->part_a_cargo);
if (!empty($c->part_a_address)) {
    $pdf->itemLista('Dirección: ' . $c->part_a_address);
}
$pdf->Ln(2);
$pdf->parrafo('SEGUNDA PARTE (CLIENTE):');
$pdf->itemLista('Nombre/Razón Social: ' . $c->part_b_name);
$pdf->itemLista('Cargo/Representación: ' . $c->part_b_cargo);
if (!empty($c->part_b_address)) {
    $pdf->itemLista('Dirección: ' . $c->part_b_address);
}

$pdf->Ln(2);
$pdf->clausulaTitulo('SEGUNDA. VIGENCIA');
$vigencia = date('d/m/Y', strtotime($c->start_date)) . ' al ' . date('d/m/Y', strtotime($c->end_date));
$pdf->parrafo('El presente contrato tiene vigencia desde el ' . $vigencia . '.');

// Mostrar monto solo si amount_visible = 1
// Ajustar numeración de cláusulas según corresponda
$showMonto = isset($c->amount_visible) && $c->amount_visible == 1;
$clausulaNum = $showMonto ? 'CUARTA' : 'TERCERA';

if ($showMonto) {
    $pdf->Ln(2);
    $pdf->clausulaTitulo('TERCERA. MONTO Y FORMA DE PAGO');
    $pdf->parrafo('Monto total: Bs. ' . number_format($c->amount, 2, ',', '.'));
    $pdf->parrafo('Forma de pago: ' . ($c->payment_terms ?: '50% ANTICIPO 50% CONTRAENTREGA'));
}

if (!empty($c->clauses)) {
    $pdf->Ln(2);
    $pdf->clausulaTitulo($clausulaNum . '. CLÁUSULAS');
    $pdf->SetFont('Arial', '', 9.5);
    $pdf->SetTextColor(30, 30, 30);
    $pdf->MultiCell(0, 5.5, iconv('UTF-8', 'windows-1252', $c->clauses), 0, 'J');
    $pdf->Ln(2);
}

$pdf->Ln(10);
$pdf->SetFont('Arial', 'B', 10);
$pdf->SetTextColor(0, 51, 153);
$pdf->Cell(0, 7, 'FIRMAS', 0, 1, 'C');
$pdf->SetDrawColor(0, 102, 204);
$pdf->SetLineWidth(0.4);
$pdf->Line(14, $pdf->GetY(), 196, $pdf->GetY());
$pdf->Ln(15);

$pdf->SetFont('Arial', '', 11);
$pdf->SetTextColor(30, 30, 30);

$xLeft = 30;
$xRight = 110;

$pdf->Cell(80, 5, iconv('UTF-8', 'windows-1252', $c->signature_a_name), 0, 0, 'L');
$pdf->Cell(80, 5, iconv('UTF-8', 'windows-1252', $c->signature_b_name ?: $c->part_b_name), 0, 1, 'L');

$pdf->Ln(15);
$pdf->SetFont('Arial', '', 9.5);
$pdf->SetTextColor(30, 30, 30);
$pdf->Cell(0, 6, iconv('UTF-8', 'windows-1252', 'Lugar y fecha: La Paz, ' . $fechaContrato), 0, 1, 'C');

$filename = 'Contrato_' . str_replace('/', '_', $c->cite) . '.pdf';
$pdf->Output('I', $filename);
exit;