Files
glastree/app/Http/Controllers/VistaReportController.php
T

143 lines
4.5 KiB
PHP
Raw Normal View History

2026-05-26 08:14:29 +02:00
<?php
namespace App\Http\Controllers;
use App\Models\VistaReport;
use Illuminate\Http\Request;
class VistaReportController extends Controller
{
public function index()
{
$this->authorizeRead('viste');
$viste = VistaReport::where('user_id', auth()->id())
->orderBy('tipo')
->orderBy('nome')
->get();
return view('viste.index', compact('viste'));
}
public function showJson(VistaReport $vistaReport)
{
$this->authorizeRead('viste');
if ($vistaReport->user_id !== auth()->id()) {
abort(403);
}
return response()->json($vistaReport);
}
public function store(Request $request)
{
$this->authorizeWrite('viste');
$data = $request->validate([
'nome' => 'required|string|max:255',
2026-06-10 14:03:43 +02:00
'tipo' => 'required|in:individui,gruppi,documenti,eventi,mailing-liste',
2026-05-26 08:14:29 +02:00
'colonne_visibili' => 'nullable|array',
'colonne_ordinamento' => 'nullable|array',
2026-06-10 14:03:43 +02:00
'colonne_larghezze' => 'nullable|array',
'colonne_ordine' => 'nullable|array',
2026-05-26 08:14:29 +02:00
'filtri' => 'nullable|array',
'ricerca' => 'nullable|string',
'is_default' => 'nullable|boolean',
]);
$isDefault = filter_var($data['is_default'] ?? false, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ?? false;
if ($isDefault) {
VistaReport::where('user_id', auth()->id())
->where('tipo', $data['tipo'])
->update(['is_default' => false]);
}
$vista = VistaReport::create([
'user_id' => auth()->id(),
'nome' => $data['nome'],
'tipo' => $data['tipo'],
'colonne_visibili' => $data['colonne_visibili'] ?? null,
'colonne_ordinamento' => $data['colonne_ordinamento'] ?? null,
2026-06-10 14:03:43 +02:00
'colonne_larghezze' => $data['colonne_larghezze'] ?? null,
'colonne_ordine' => $data['colonne_ordine'] ?? null,
2026-05-26 08:14:29 +02:00
'filtri' => $data['filtri'] ?? null,
'ricerca' => $data['ricerca'] ?? null,
'is_default' => $isDefault,
]);
if ($request->expectsJson()) {
return response()->json(['success' => true, 'message' => 'Vista salvata.']);
}
return back()->with('success', 'Vista salvata.');
}
public function update(Request $request, VistaReport $vistaReport)
{
$this->authorizeWrite('viste');
if ($vistaReport->user_id !== auth()->id()) {
abort(403);
}
$data = $request->validate([
'nome' => 'required|string|max:255',
'colonne_visibili' => 'nullable|array',
'colonne_ordinamento' => 'nullable|array',
2026-06-10 14:03:43 +02:00
'colonne_larghezze' => 'nullable|array',
'colonne_ordine' => 'nullable|array',
2026-05-26 08:14:29 +02:00
'filtri' => 'nullable|array',
'ricerca' => 'nullable|string',
'is_default' => 'nullable|boolean',
]);
if (!empty($data['is_default'])) {
VistaReport::where('user_id', auth()->id())
->where('tipo', $vistaReport->tipo)
->where('id', '!=', $vistaReport->id)
->update(['is_default' => false]);
}
$vistaReport->update($data);
2026-06-10 14:03:43 +02:00
if ($request->expectsJson()) {
return response()->json(['success' => true, 'message' => 'Vista aggiornata.']);
}
2026-05-26 08:14:29 +02:00
return back()->with('success', 'Vista aggiornata.');
}
public function setDefault(Request $request, VistaReport $vistaReport)
{
$this->authorizeWrite('viste');
if ($vistaReport->user_id !== auth()->id()) {
abort(403);
}
VistaReport::where('user_id', auth()->id())
->where('tipo', $vistaReport->tipo)
->update(['is_default' => false]);
$vistaReport->update(['is_default' => true]);
return back()->with('success', 'Vista predefinita impostata.');
}
public static function getDefaultForUser($tipo)
{
return VistaReport::where('user_id', auth()->id())
->where('tipo', $tipo)
->where('is_default', true)
->first();
}
public function destroy(VistaReport $vistaReport)
{
$this->authorizeDelete('viste');
if ($vistaReport->user_id !== auth()->id()) {
abort(403);
}
$vistaReport->delete();
return back()->with('success', 'Vista eliminata.');
}
}