<?php

namespace App\Service\Pdf;

use Fpdf\Fpdf;
use Symfony\Component\HttpKernel\KernelInterface;

class CertificatOnlinePdfService extends Fpdf
{
    private string $logo;

    public function __construct(KernelInterface $kernel, $orientation = 'P', $unit = 'mm', $size = 'A4')
    {
        parent::__construct($orientation, $unit, $size);
        $this->logo = $kernel->getProjectDir()."/public/provider/images/favicon.png";
        $this->AliasNbPages();
        $this->SetAutoPageBreak(true, 35);
    }

    private function clean(?string $text): string
    {
        if (!$text) return '';
        $text = iconv('UTF-8', 'windows-1252//TRANSLIT//IGNORE', $text);
        return str_replace('€', chr(128), $text);
    }

    public function Header()
    {
        $this->SetY(10);
        if (file_exists($this->logo)) {
            $this->Image($this->logo, 10, 10, 12);
            $this->SetX(25);
        }

        $this->SetFont('Arial', 'B', 14);
        $this->SetTextColor(0, 0, 0);
        $this->Cell(0, 7, $this->clean('CERTIFICAT DE MISE EN LIGNE'), 0, 1, 'L');

        $this->SetDrawColor(37, 99, 235);
        $this->SetLineWidth(0.5);
        $this->Line(10, 25, 200, 25);
    }

    public function generate(): string
    {
        $this->AddPage();

        $this->SetY(40);

        // --- PRESTATAIRE ---
        $this->SetFont('Arial', 'B', 12);
        $this->SetTextColor(37, 99, 235);
        $this->Cell(0, 7, $this->clean('PRESTATAIRE'), 0, 1, 'L');
        $this->SetFont('Arial', '', 10);
        $this->SetTextColor(0, 0, 0);
        $this->MultiCell(0, 5, $this->clean("SARL SITECONSEIL
27 RUE LE Sérurier
02100 Saint-Quentin
s.com@siteconseil.fr
Siret : 41866405800025
Représenté par M. Legrand Philippe"), 0, 'L');

        $this->Ln(10);

        // --- CLIENT ---
        $this->SetFont('Arial', 'B', 12);
        $this->SetTextColor(37, 99, 235);
        $this->Cell(0, 7, $this->clean('CLIENT'), 0, 1, 'L');
        $this->SetFont('Arial', '', 10);
        $this->SetTextColor(0, 0, 0);
        $this->MultiCell(0, 5, $this->clean("SEGARD LILIAN - LUDIKEVENT
6, rue du Château
02800 DANIZY
06 14 17 24 47
lilian@ludikevent.fr
Représenté par SEGARD Lilian
Siret : 93048840800012"), 0, 'L');

        $this->Ln(15);

        // --- OBJET ---
        $this->SetFont('Arial', 'B', 12);
        $this->SetTextColor(37, 99, 235);
        $this->Cell(0, 7, $this->clean('OBJET DU CERTIFICAT'), 0, 1, 'L');
        $this->SetFont('Arial', '', 10);
        $this->SetTextColor(0, 0, 0);
        $this->MultiCell(0, 5, $this->clean("Le présent certificat atteste de la mise en ligne officielle du site intranet développé pour le Client.

En signant ce document, le Client reconnaît :
- Que le développement de l'intranet est terminé.
- Que le livrable est conforme au cahier des charges établi.
- Qu'à compter de cette signature, toute modification ou intervention supplémentaire sera soumise à facturation."), 0, 'L');

        $this->Ln(20);

        // --- SIGNATURES ---
        $ySign = $this->GetY();

        $this->SetXY(15, $ySign);
        $this->SetFont('Arial', 'B', 10);
        $this->Cell(85, 8, $this->clean("Le Prestataire (SARL SITECONSEIL)"), 0, 1, 'C');
        $this->SetX(15);
        $this->Cell(85, 45, "", 1, 0);

        $this->SetXY(110, $ySign);
        $this->SetFont('Arial', 'B', 10);
        $this->Cell(85, 8, $this->clean("Le Client (LUDIKEVENT)"), 0, 1, 'C');
        $this->SetX(110);
        $this->Cell(85, 45, "", 1, 0);
        
        $this->SetXY(110, $ySign + 8);
        $this->SetFont('Arial', 'I', 8);
        $this->Cell(85, 5, $this->clean("Date et Signature, précédées de la mention 'Lu et approuvé'"), 0, 1, 'C');

        return $this->Output('S');
    }

    public function Footer(): void
    {
        $this->SetY(-15);
        $this->SetFont('Arial', 'I', 8);
        $this->SetTextColor(128);
        $this->Cell(0, 10, 'Page ' . $this->PageNo() . '/{nb}', 0, 0, 'C');
    }
}
