Refactor PVC models and update tests
- Updated the PVC models in the database and adjusted the tests accordingly to reflect the new model counts and codes. - Removed deprecated models from the JSON data for PVC systems. - Added new GLB models for "scorrevole_sf_3_ante" and "scorrevole_sf_4_ante". - Enhanced the development scripts to streamline the build process for both frontends. - Updated documentation to reflect changes in the development environment and deployment process. - Improved the styling of texture radio options for better visibility. - Fixed URL handling in the configurator to ensure proper routing and API calls.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Modello;
|
||||
use App\Models\Sistema;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
/**
|
||||
* Scorrevoli SF PVC: i modelli 3 e 4 ante hanno ora il file 3D e vanno nel
|
||||
* configuratore (listino, regole vetro e opzioni ci sono già); 1 anta SF e parallelo
|
||||
* 1 anta escono dalla gamma (non hanno listino né opzioni proprie).
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
private const NUOVI = [
|
||||
'scorrevole_sf_3_ante' => 'SCORREVOLE 3 ANTE SF PVC - SALAMANDER',
|
||||
'scorrevole_sf_4_ante' => 'SCORREVOLE 4 ANTE SF PVC - SALAMANDER',
|
||||
];
|
||||
|
||||
private const ELIMINATI = ['scorrevole_sf_1_anta', 'scorrevole_parallelo_1_anta'];
|
||||
|
||||
/** Moduli che il 2 ante ha in più rispetto ai modelli senza configurazione 3D. */
|
||||
private const MODULI_3D = ['listino', 'maniglia', 'modello', 'vetro'];
|
||||
|
||||
public function up(): void
|
||||
{
|
||||
$pvc = Sistema::where('codice', 'pvc')->first();
|
||||
if (! $pvc) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (self::NUOVI as $codice => $titolo) {
|
||||
$modello = $pvc->modelli()->where('codice', $codice)->first();
|
||||
$modello?->update([
|
||||
'attivo' => true,
|
||||
'cartella' => $codice,
|
||||
'file_modello' => "{$codice}.glb",
|
||||
'cartella_texture' => 'finestra_2_ante',
|
||||
'titolo' => $modello->titolo ?: $titolo,
|
||||
'moduli' => array_values(array_unique([...self::MODULI_3D, ...($modello->moduli ?? [])])),
|
||||
]);
|
||||
}
|
||||
|
||||
// Una alla volta: l'evento deleted rimuove anche l'icona dal disco.
|
||||
$pvc->modelli()->whereIn('codice', self::ELIMINATI)->get()->each->delete();
|
||||
|
||||
$this->dopoIl2Ante($pvc);
|
||||
}
|
||||
|
||||
/** Attivandosi finirebbero in fondo agli attivi: li mette subito dopo lo scorrevole SF 2 ante. */
|
||||
private function dopoIl2Ante(Sistema $pvc): void
|
||||
{
|
||||
$codici = $pvc->modelli()->orderBy('ordine')->orderBy('id')->pluck('codice')
|
||||
->diff(array_keys(self::NUOVI))->values()->all();
|
||||
$posizione = array_search('scorrevole_sf_2_ante', $codici, true);
|
||||
if ($posizione !== false) {
|
||||
array_splice($codici, $posizione + 1, 0, array_keys(self::NUOVI));
|
||||
}
|
||||
|
||||
foreach ($codici as $i => $codice) {
|
||||
$pvc->modelli()->where('codice', $codice)->update(['ordine' => $i + 1]);
|
||||
}
|
||||
|
||||
Modello::normalizzaOrdine($pvc->id);
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
// I modelli eliminati non vengono ricreati: si recuperano con il CatalogoSeeder
|
||||
// da una versione precedente di database/seeders/data/modelli_pvc.php.
|
||||
$pvc = Sistema::where('codice', 'pvc')->first();
|
||||
if (! $pvc) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (array_keys(self::NUOVI) as $codice) {
|
||||
$modello = $pvc->modelli()->where('codice', $codice)->first();
|
||||
$modello?->update([
|
||||
'attivo' => false,
|
||||
'cartella' => null,
|
||||
'file_modello' => null,
|
||||
'cartella_texture' => null,
|
||||
'moduli' => array_values(array_diff($modello->moduli ?? [], self::MODULI_3D)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user