netgescon-master/app/Http/Controllers/CondominioController.php

103 lines
3.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Condominio;
use App\Models\Amministratore;
use Illuminate\Http\Request;
class CondominioController extends Controller
{
public function __construct()
{
// Proteggi le rotte con i permessi di Spatie
$this->middleware('permission:view-condomini', ['only' => ['index', 'show']]);
$this->middleware('permission:create-condomini', ['only' => ['create', 'store']]);
$this->middleware('permission:edit-condomini', ['only' => ['edit', 'update']]);
$this->middleware('permission:delete-condomini', ['only' => ['destroy']]);
}
/**
* Display a listing of the resource.
*/
public function index()
{
$condomini = Condominio::with('amministratore.user')->paginate(10);
return view('condomini.index', compact('condomini'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$amministratori = Amministratore::all(); // Per la dropdown
return view('condomini.create', compact('amministratori'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request) // Qui useremo un FormRequest in futuro
{
$request->validate([
'denominazione' => 'required|string|max:255',
'id_amministratore' => 'required|exists:amministratori,id_amministratore',
'indirizzo' => 'required|string|max:255',
'cap' => 'required|string|max:5',
'citta' => 'required|string|max:255',
'provincia' => 'required|string|max:2',
'codice_fiscale' => 'nullable|string|max:16|unique:condomini,codice_fiscale',
]);
Condominio::create($request->all());
return redirect()->route('condomini.index')->with('success', 'Condominio creato con successo.');
}
/**
* Display the specified resource.
*/
public function show(Condominio $condominio)
{
return view('condomini.show', compact('condominio'));
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Condominio $condominio)
{
$amministratori = Amministratore::all();
return view('condomini.edit', compact('condominio', 'amministratori'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Condominio $condominio) // Qui useremo un FormRequest in futuro
{
$request->validate([
'denominazione' => 'required|string|max:255',
'id_amministratore' => 'required|exists:amministratori,id_amministratore',
'indirizzo' => 'required|string|max:255',
'cap' => 'required|string|max:5',
'citta' => 'required|string|max:255',
'provincia' => 'required|string|max:2',
'codice_fiscale' => 'nullable|string|max:16|unique:condomini,codice_fiscale,' . $condominio->id_condominio . ',id_condominio',
]);
$condominio->update($request->all());
return redirect()->route('condomini.index')->with('success', 'Condominio aggiornato con successo.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Condominio $condominio)
{
$condominio->delete();
return redirect()->route('condomini.index')->with('success', 'Condominio eliminato con successo.');
}
}