response()->json([ 'frontend_cliente_url' => config('preventivi.frontend_cliente_url'), // Opzioni del contributo trasporto al checkout (importo per pezzo, null = da quantificare). 'trasporto' => collect(config('preventivi.trasporto.zone')) ->map(fn (array $zona, string $valore) => ['valore' => $valore] + $zona) ->values(), 'trasporto_nota' => config('preventivi.trasporto.nota_da_quantificare'), 'trasporto_max_pezzi' => config('preventivi.trasporto.max_pezzi'), 'trasporto_etichetta_oltre_max' => config('preventivi.trasporto.etichetta_oltre_max'), ])); // Catalogo prodotti (sistemi e modelli con icone) per il configuratore. Route::get('sistemi', [CatalogoController::class, 'sistemi']); Route::get('sistemi/{codice}', [CatalogoController::class, 'sistemaPerCodice']); Route::get('sistemi/{codice}/modelli/{modello}/listino', [CatalogoController::class, 'listino']); Route::get('sistemi/{codice}/modelli/{modello}/configurazione', [CatalogoController::class, 'configurazione']); Route::post('sistemi/{codice}/modelli/{modello}/prezzo', [CatalogoController::class, 'prezzo'])->middleware('throttle:240,1'); // Immagini del configuratore (finiture, vetri, icone) servite con gli header CORS. Route::get('media/{percorso}', MediaController::class)->where('percorso', '.*')->name('media'); Route::prefix('auth')->group(function () { Route::post('login', [AuthController::class, 'login']); Route::middleware('auth:sanctum')->get('me', [AuthController::class, 'me']); }); Route::prefix('carrello')->group(function () { Route::post('aggiungi', [CarrelloController::class, 'aggiungi']); Route::get('{token}', [CarrelloController::class, 'mostra']); Route::delete('{token}/item/{item}', [CarrelloController::class, 'rimuoviItem']); Route::post('{token}/conferma', [CarrelloController::class, 'conferma']); });