modifiche siderbar e correzioni

This commit is contained in:
2026-05-26 12:28:39 +02:00
parent f088dba4bf
commit 85dd9c2ee6
119 changed files with 14461 additions and 42 deletions
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\AppSetting;
use App\Models\Ruolo;
use App\Models\TipologiaDocumento;
use App\Models\TipologiaEvento;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
@@ -15,10 +16,11 @@ class ImpostazioniController extends Controller
$this->authorizeWrite('viste');
$tipologie = TipologiaDocumento::orderBy('ordine')->get();
$tipologieEventi = TipologiaEvento::orderBy('ordine')->get();
$ruoli = Ruolo::orderBy('ordine')->get();
$appSettings = AppSetting::first();
return view('impostazioni.index', compact('tipologie', 'ruoli', 'appSettings'));
return view('impostazioni.index', compact('tipologie', 'tipologieEventi', 'ruoli', 'appSettings'));
}
public function saveAppSettings(Request $request)
@@ -185,6 +187,72 @@ class ImpostazioniController extends Controller
return response()->json(['success' => true]);
}
public function tipologieEventiStore(Request $request)
{
$this->authorizeWrite('viste');
$validated = $request->validate([
'nome' => 'required|string|max:50|unique:tipologie_eventi,nome',
'descrizione' => 'nullable|string|max:255',
]);
$maxOrdine = TipologiaEvento::max('ordine') ?? 0;
TipologiaEvento::create([
'nome' => $validated['nome'],
'descrizione' => $validated['descrizione'] ?? null,
'ordine' => $maxOrdine + 1,
'attiva' => true,
]);
return redirect('/impostazioni#tipologie-eventi')->with('success', 'Tipologia evento aggiunta.');
}
public function tipologieEventiUpdate(Request $request, $id)
{
$this->authorizeWrite('viste');
$tipologia = TipologiaEvento::findOrFail($id);
$validated = $request->validate([
'nome' => 'required|string|max:50|unique:tipologie_eventi,nome,' . $id,
'descrizione' => 'nullable|string|max:255',
'attiva' => 'boolean',
]);
$tipologia->update($validated);
return redirect('/impostazioni#tipologie-eventi')->with('success', 'Tipologia evento aggiornata.');
}
public function tipologieEventiDestroy($id)
{
$this->authorizeDelete('viste');
$tipologia = TipologiaEvento::findOrFail($id);
$count = $tipologia->eventi()->count();
if ($count > 0) {
return redirect('/impostazioni#tipologie-eventi')->with('error', 'Impossibile eliminare: ' . $count . ' eventi associati.');
}
$tipologia->delete();
return redirect('/impostazioni#tipologie-eventi')->with('success', 'Tipologia evento eliminata.');
}
public function tipologieEventiReorder(Request $request)
{
$this->authorizeWrite('viste');
$order = $request->input('order', []);
foreach ($order as $index => $id) {
TipologiaEvento::where('id', $id)->update(['ordine' => $index]);
}
return response()->json(['success' => true]);
}
public function uploadLogo(Request $request)
{
$this->authorizeWrite('viste');