39 lines
1.0 KiB
PHP
39 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
use App\Models\Preventivo;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class PreventivoPdf
|
|
{
|
|
/**
|
|
* Genera (o rigenera) il PDF del preventivo, lo salva sul disk 'local' e ritorna il path relativo.
|
|
*/
|
|
public static function genera(Preventivo $preventivo): string
|
|
{
|
|
$preventivo->loadMissing('cliente', 'items');
|
|
|
|
$pdf = Pdf::loadView('pdf.preventivo', [
|
|
'preventivo' => $preventivo,
|
|
'formatter' => ConfigurazioneFormatter::class,
|
|
])->setPaper('a4');
|
|
|
|
$path = 'preventivi/preventivo-'.$preventivo->id.'.pdf';
|
|
Storage::disk('local')->put($path, $pdf->output());
|
|
|
|
return $path;
|
|
}
|
|
|
|
/** Path assoluto del PDF sul filesystem (per allegati email). */
|
|
public static function pathAssoluto(Preventivo $preventivo): ?string
|
|
{
|
|
if (! $preventivo->pdf_path) {
|
|
return null;
|
|
}
|
|
|
|
return Storage::disk('local')->path($preventivo->pdf_path);
|
|
}
|
|
}
|