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', 'tipo' => 'required|in:individui,gruppi,documenti,eventi', 'colonne_visibili' => 'nullable|array', 'colonne_ordinamento' => 'nullable|array', '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, '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', '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); 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.'); } }