Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?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');
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user