91 lines
4.9 KiB
PHP
91 lines
4.9 KiB
PHP
<?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,
|
|
|
|
];
|