- 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.
53 lines
1.5 KiB
PHP
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;
|
|
}
|
|
}
|