Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Modello;
|
||||
use App\Models\Sistema;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class CatalogoController extends Controller
|
||||
{
|
||||
/**
|
||||
* GET /api/sistemi
|
||||
* Sistemi attivi con i rispettivi modelli attivi, nell'ordine del menu.
|
||||
*/
|
||||
public function sistemi(): JsonResponse
|
||||
{
|
||||
$sistemi = Sistema::attivi()
|
||||
->with(['modelli' => fn ($q) => $q->attivi()])
|
||||
->get();
|
||||
|
||||
return response()->json($sistemi->map(fn (Sistema $s) => $this->sistema($s))->values());
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /api/sistemi/{codice}
|
||||
*/
|
||||
public function sistemaPerCodice(string $codice): JsonResponse
|
||||
{
|
||||
$sistema = Sistema::attivi()
|
||||
->where('codice', $codice)
|
||||
->with(['modelli' => fn ($q) => $q->attivi()])
|
||||
->firstOrFail();
|
||||
|
||||
return response()->json($this->sistema($sistema));
|
||||
}
|
||||
|
||||
private function sistema(Sistema $sistema): array
|
||||
{
|
||||
return [
|
||||
'codice' => $sistema->codice,
|
||||
'nome' => $sistema->nome,
|
||||
'modelli' => $sistema->modelli->map(fn (Modello $m) => $this->modello($m))->values(),
|
||||
];
|
||||
}
|
||||
|
||||
// Stessa forma del vecchio modelli.json (id, nome, cartella, modello, ...) più descrizione e icona.
|
||||
private function modello(Modello $modello): array
|
||||
{
|
||||
return [
|
||||
'id' => $modello->codice,
|
||||
'nome' => $modello->nome,
|
||||
'descrizione' => $modello->descrizione,
|
||||
'icona' => $modello->icona_url,
|
||||
'cartella' => $modello->cartella,
|
||||
'modello' => $modello->file_modello,
|
||||
'categoria' => $modello->categoria,
|
||||
'cartella_texture' => $modello->cartella_texture,
|
||||
'moduli' => $modello->moduli ?? [],
|
||||
'enabled' => true,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user