Files
carmine.savino 06617a985a feat: add previous configuration handling for user selections in quotes
- Implemented session storage management for the last configuration choices made by the user.
- Added functionality to prompt users when changing models to retain their previous selections.
- Introduced methods to apply previous choices to the newly loaded model, including finishes, handles, glass types, and options.
- Enhanced user experience by ensuring selections are automatically applied where applicable.
2026-10-19 19:49:44 +02:00

53 lines
1.5 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Modello;
use App\Models\Sistema;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Storage;
/**
* Anagrafica iniziale di sistemi e modelli. Idempotente: crea solo i record
* mancanti, senza sovrascrivere le modifiche fatte dal pannello admin.
*/
class CatalogoSeeder extends Seeder
{
public function run(): void
{
$pvc = Sistema::firstOrCreate(['codice' => 'pvc'], ['nome' => 'PVC', 'ordine' => 1]);
$this->seedModelli($pvc, require __DIR__.'/data/modelli_pvc.php');
Modello::normalizzaOrdine($pvc->id);
}
private function seedModelli(Sistema $sistema, array $modelli): void
{
foreach ($modelli as $ordine => $dati) {
$modello = Modello::firstOrCreate(
['sistema_id' => $sistema->id, 'codice' => $dati['codice']],
$dati + ['ordine' => $ordine + 1]
);
if (! $modello->icona) {
$modello->icona = $this->copiaIcona($sistema->codice, $modello->codice);
$modello->save();
}
}
}
private function copiaIcona(string $sistema, string $codice): ?string
{
$sorgente = __DIR__."/data/icone/{$sistema}/{$codice}.jpg";
if (! is_file($sorgente)) {
return null;
}
$destinazione = "modelli/icone/{$sistema}/{$codice}.jpg";
Storage::disk('public')->put($destinazione, file_get_contents($sorgente));
return $destinazione;
}
}