feat: Aggiungi funzionalità di eliminazione per clienti e preventivi con gestione delle dipendenze

This commit is contained in:
2026-10-19 15:48:15 +02:00
parent d6a9978167
commit 31d5152d8c
20 changed files with 673 additions and 17 deletions
+19
View File
@@ -5,6 +5,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\Storage;
class Preventivo extends Model
{
@@ -26,6 +27,24 @@ class Preventivo extends Model
'chiuso' => 'Chiuso',
];
protected static function booted(): void
{
static::deleting(function (Preventivo $preventivo): void {
// Elimina immagini degli item (disk 'public') e PDF (disk 'local') prima della cancellazione.
foreach ($preventivo->items()->get() as $item) {
if ($item->immagine_path && Storage::disk('public')->exists($item->immagine_path)) {
Storage::disk('public')->delete($item->immagine_path);
}
$item->delete();
}
if ($preventivo->pdf_path && Storage::disk('local')->exists($preventivo->pdf_path)) {
Storage::disk('local')->delete($preventivo->pdf_path);
}
});
}
public function cliente(): BelongsTo
{
return $this->belongsTo(Cliente::class);