paginate(20); return view('admin.unita-immobiliari.index', compact('unita')); } /** * Show the form for creating a new resource. */ public function create() { $stabili = Stabile::all(); $palazzine = Palazzina::all(); return view('admin.unita-immobiliari.create', compact('stabili', 'palazzine')); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $validated = $request->validate([ 'stabile_id' => 'required|exists:stabili,id', 'palazzina_id' => 'nullable|exists:palazzine,id', 'codice_unita' => 'required|string|max:50', 'palazzina' => 'required|string|max:10', 'scala' => 'required|string|max:10', 'piano' => 'required|string|max:10', 'interno' => 'required|string|max:10', 'tipo_unita' => 'required|string', 'superficie_commerciale' => 'nullable|numeric|min:0', 'millesimi_proprieta' => 'nullable|numeric|min:0|max:1000', ]); UnitaImmobiliare::create($validated); return redirect()->route('admin.unita-immobiliari.index') ->with('success', 'Unità immobiliare creata con successo.'); } /** * Display the specified resource. */ public function show(string $id) { $unita = UnitaImmobiliare::with(['stabile', 'palazzinaObj'])->findOrFail($id); // Calcola statistiche per l'unità $statistiche = [ 'superficie_totale' => $unita->superficie_commerciale + ($unita->superficie_accessori ?? 0), 'rapporto_millesimi' => $unita->millesimi_proprieta ? round(($unita->millesimi_proprieta / 1000) * 100, 2) : 0, 'valore_stimato' => $unita->valore_commerciale_stimato ?? 0, ]; // Trova unità vicine $unita_vicine = [ 'sovrastante' => $unita->getUnitaSovrastante(), 'sottostante' => $unita->getUnitaSottostante(), 'laterali' => $unita->getUnitaLaterali(), ]; return view('admin.unita-immobiliari.show', compact('unita', 'statistiche', 'unita_vicine')); } /** * Show the form for editing the specified resource. */ public function edit(string $id) { $unita = UnitaImmobiliare::findOrFail($id); $stabili = Stabile::all(); $palazzine = Palazzina::all(); return view('admin.unita-immobiliari.edit', compact('unita', 'stabili', 'palazzine')); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { $unita = UnitaImmobiliare::findOrFail($id); $validated = $request->validate([ 'stabile_id' => 'required|exists:stabili,id', 'palazzina_id' => 'nullable|exists:palazzine,id', 'codice_unita' => 'required|string|max:50', 'palazzina' => 'required|string|max:10', 'scala' => 'required|string|max:10', 'piano' => 'required|string|max:10', 'interno' => 'required|string|max:10', 'tipo_unita' => 'required|string', 'superficie_commerciale' => 'nullable|numeric|min:0', 'millesimi_proprieta' => 'nullable|numeric|min:0|max:1000', ]); $unita->update($validated); return redirect()->route('admin.unita-immobiliari.show', $unita) ->with('success', 'Unità immobiliare aggiornata con successo.'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { $unita = UnitaImmobiliare::findOrFail($id); $unita->delete(); return redirect()->route('admin.unita-immobiliari.index') ->with('success', 'Unità immobiliare eliminata con successo.'); } }