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:
2026-10-20 18:40:59 +02:00
parent b6a32edfe6
commit 0dfda3a338
33 changed files with 339 additions and 366 deletions
@@ -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)),
]);
}
}
};
@@ -107,8 +107,6 @@ return [
'scorrevole_hst_2_ante' => ['ALZ2', ['finitura_esterna', 'apertura']],
'scorrevole_hst_4_ante' => ['ALZ4', ['finitura_esterna', 'apertura']],
// Non presenti nella specifica vetri: nessuna variazione di prezzo per il vetro.
'scorrevole_sf_1_anta' => [null, ['finitura_esterna', 'apertura']],
'scorrevole_parallelo_1_anta' => [null, ['finitura_esterna', 'apertura']],
'scorrevole_sf_2_ante' => ['SC2', ['finitura_esterna', 'apertura']],
'scorrevole_sf_3_ante' => ['SC3', ['finitura_esterna', 'apertura']],
'scorrevole_sf_4_ante' => ['SC4', ['finitura_esterna', 'apertura']],
@@ -636,9 +636,9 @@ return [
'portafinestra_3_ante' => 'PORTAFINESTRA 3 ANTE PVC - SALAMANDER BE 82',
'scorrevole_hst_1_anta' => 'SCORREVOLE 1 ANTA HTS PVC - SALAMANDER',
'scorrevole_hst_2_ante' => 'SCORREVOLE 2 ANTE HTS PVC - SALAMANDER',
'scorrevole_parallelo_1_anta' => 'SCORREVOLE PARALLELO 1 ANTA PVC - SALAMANDER',
'scorrevole_sf_1_anta' => 'SCORREVOLE 1 ANTA SF PVC - SALAMANDER',
'scorrevole_sf_2_ante' => 'SCORREVOLE 2 ANTE SF PVC - SALAMANDER',
'scorrevole_sf_3_ante' => 'SCORREVOLE 3 ANTE SF PVC - SALAMANDER',
'scorrevole_sf_4_ante' => 'SCORREVOLE 4 ANTE SF PVC - SALAMANDER',
'scuretto_base' => 'SCURETTO BASE PVC - SALAMANDER',
'scuretto_pannello_alessandrite' => 'SCURETTO ALESSANDRITE PVC - SALAMANDER',
'scuretto_pannello_malachite' => 'SCURETTO MALACHITE PVC - SALAMANDER',
@@ -171,17 +171,6 @@ return [
'cartella_texture' => null,
'moduli' => null,
],
[
'codice' => 'scorrevole_sf_1_anta',
'nome' => 'Scorrevole SF 1 Anta',
'descrizione' => null,
'attivo' => true,
'cartella' => 'scorrevole_sf_1_anta',
'file_modello' => 'scorrevole_sf_1_anta.glb',
'categoria' => 'scorrevoli',
'cartella_texture' => 'finestra_2_ante',
'moduli' => ['cerniere', 'listino', 'maniglia', 'modello', 'vetro'],
],
[
'codice' => 'scorrevole_sf_2_ante',
'nome' => 'Scorrevole SF 2 Ante',
@@ -197,23 +186,23 @@ return [
'codice' => 'scorrevole_sf_3_ante',
'nome' => 'Scorrevole SF 3 Ante',
'descrizione' => 'SCORREVOLE IN LINEA A 3 ANTE',
'attivo' => false,
'cartella' => null,
'file_modello' => null,
'attivo' => true,
'cartella' => 'scorrevole_sf_3_ante',
'file_modello' => 'scorrevole_sf_3_ante.glb',
'categoria' => 'scorrevoli',
'cartella_texture' => null,
'moduli' => null,
'cartella_texture' => 'finestra_2_ante',
'moduli' => ['cerniere', 'listino', 'maniglia', 'modello', 'vetro'],
],
[
'codice' => 'scorrevole_sf_4_ante',
'nome' => 'Scorrevole SF 4 Ante',
'descrizione' => 'SCORREVOLE IN LINEA A 4 ANTE',
'attivo' => false,
'cartella' => null,
'file_modello' => null,
'attivo' => true,
'cartella' => 'scorrevole_sf_4_ante',
'file_modello' => 'scorrevole_sf_4_ante.glb',
'categoria' => 'scorrevoli',
'cartella_texture' => null,
'moduli' => null,
'cartella_texture' => 'finestra_2_ante',
'moduli' => ['cerniere', 'listino', 'maniglia', 'modello', 'vetro'],
],
[
'codice' => 'traslante_scorrevole_1_anta',
@@ -237,17 +226,6 @@ return [
'cartella_texture' => null,
'moduli' => null,
],
[
'codice' => 'scorrevole_parallelo_1_anta',
'nome' => 'Scorrevole Parallelo 1 Anta',
'descrizione' => null,
'attivo' => true,
'cartella' => 'scorrevole_parallelo_1_anta',
'file_modello' => 'scorrevole_parallelo_1_anta.glb',
'categoria' => 'scorrevoli',
'cartella_texture' => 'finestra_2_ante',
'moduli' => ['cerniere', 'listino', 'maniglia', 'modello', 'vetro'],
],
[
'codice' => 'bilico',
'nome' => 'Bilico Orizzontale',