++ Primo Caricamento

This commit is contained in:
2026-03-30 19:15:13 +02:00
commit 663a68d59b
47 changed files with 3561 additions and 0 deletions

90
config/settings.php Normal file
View File

@@ -0,0 +1,90 @@
<?php
// ─────────────────────────────────────────────────────────────────────────────
// config/settings.php — Impostazioni dinamiche dell'applicazione
//
// DIFFERENZA FONDAMENTALE rispetto al .env:
//
// .env / config/*.php → configurazione STATICA (infrastruttura, connessioni)
// Cambia raramente. Richiede restart del container.
//
// settings (questo file + tabella DB)
// → configurazione DINAMICA (business logic)
// Modificabile dall'admin via pannello web,
// senza restart. Cambia nel tempo.
//
// COME FUNZIONA:
// 1. I valori di default sono qui (fallback se la tabella DB è vuota)
// 2. Al primo avvio, il SettingSeeder popola la tabella `settings`
// 3. SettingService::get('chiave') legge dalla tabella (con cache Redis)
// 4. Il pannello Impostazioni permette di modificarli via web
//
// ESEMPIO D'USO in un Controller o View:
// $perPage = app(SettingService::class)->get('items_per_page');
// // oppure tramite helper globale (se definito):
// $valuta = setting('currency_symbol');
// ─────────────────────────────────────────────────────────────────────────────
return [
// ─── Valori di default ─────────────────────────────────────────────────
// Usati come fallback se la chiave non esiste nella tabella DB.
// Modificare questi valori richiede un deploy; per cambiamenti frequenti
// usa direttamente il pannello impostazioni.
'defaults' => [
'company_name' => 'La Mia Azienda',
'currency' => 'EUR',
'currency_symbol' => '€',
'date_format' => 'd/m/Y',
'items_per_page' => 15,
'welcome_message' => 'Benvenuto nel Portale Clienti!',
'allow_notes' => true,
'theme_color' => '#0d6efd',
'support_email' => 'supporto@example.com',
'max_file_size_mb' => 10,
],
// ─── Descrizioni leggibili ─────────────────────────────────────────────
// Visualizzate nel pannello impostazioni come label/tooltip.
'descriptions' => [
'company_name' => 'Nome della tua azienda (mostrato in header e report)',
'currency' => 'Codice valuta ISO 4217 (es. EUR, USD, GBP)',
'currency_symbol' => 'Simbolo valuta visualizzato nei prezzi (es. €, $)',
'date_format' => 'Formato date (sintassi PHP: d/m/Y, Y-m-d, ecc.)',
'items_per_page' => 'Numero di righe nelle tabelle paginate',
'welcome_message' => 'Messaggio mostrato nella dashboard',
'allow_notes' => 'Abilita il campo note nelle schede cliente',
'theme_color' => 'Colore principale dell\'interfaccia (hex, es. #0d6efd)',
'support_email' => 'Email mostrata ai clienti per richieste di supporto',
'max_file_size_mb' => 'Dimensione massima upload allegati (in MB)',
],
// ─── Tipi di dato ──────────────────────────────────────────────────────
// Usati da SettingService per convertire i valori al tipo corretto.
// La tabella DB salva tutto come stringa; il tipo definisce il cast.
'types' => [
'company_name' => 'string',
'currency' => 'string',
'currency_symbol' => 'string',
'date_format' => 'string',
'items_per_page' => 'integer',
'welcome_message' => 'text',
'allow_notes' => 'boolean',
'theme_color' => 'string',
'support_email' => 'string',
'max_file_size_mb' => 'integer',
],
// ─── Gruppi (per organizzare il pannello impostazioni) ─────────────────
'groups' => [
'Azienda' => ['company_name', 'support_email'],
'Visualizzazione' => ['currency', 'currency_symbol', 'date_format',
'items_per_page', 'theme_color', 'welcome_message'],
'Funzionalità' => ['allow_notes', 'max_file_size_mb'],
],
// ─── Cache ─────────────────────────────────────────────────────────────
// Durata cache (minuti). Le impostazioni vengono lette dal DB una volta
// e poi servite dalla cache per evitare query ad ogni richiesta.
'cache_ttl_minutes' => 60,
];