finale 2.0.0
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
||||
use App\Models\Evento;
|
||||
use App\Models\Gruppo;
|
||||
use App\Models\Individuo;
|
||||
use App\Models\Tag;
|
||||
use App\Models\TipologiaEvento;
|
||||
use App\Services\IcsExportService;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -16,7 +17,12 @@ class EventoController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->authorizeRead('eventi');
|
||||
$query = Evento::with(['gruppi', 'responsabili']);
|
||||
$query = Evento::with(['gruppi', 'responsabili', 'tags']);
|
||||
|
||||
if ($request->filled('tag')) {
|
||||
$tagSlugs = (array) $request->input('tag');
|
||||
$query->withAnyTags($tagSlugs);
|
||||
}
|
||||
|
||||
if ($request->filled('search')) {
|
||||
$query->where('nome_evento', 'like', '%' . $request->search . '%');
|
||||
@@ -47,8 +53,9 @@ class EventoController extends Controller
|
||||
$perPage = in_array((int) $request->perPage, [10, 20, 25, 50, 100]) ? (int) $request->perPage : 20;
|
||||
$eventi = $query->paginate($perPage);
|
||||
$gruppi = Gruppo::orderBy('nome')->get();
|
||||
$allTags = Tag::orderBy('name')->get();
|
||||
|
||||
return view('eventi.index', compact('eventi', 'gruppi'));
|
||||
return view('eventi.index', compact('eventi', 'gruppi', 'allTags'));
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
@@ -58,8 +65,9 @@ class EventoController extends Controller
|
||||
$individui = Individuo::orderBy('cognome')->orderBy('nome')->get();
|
||||
$selectedGruppo = $request->query('gruppo_id') ? Gruppo::find($request->query('gruppo_id')) : null;
|
||||
$tipologieEventi = TipologiaEvento::attive();
|
||||
$tags = Tag::orderBy('name')->get();
|
||||
|
||||
return view('eventi.create', compact('gruppi', 'individui', 'selectedGruppo', 'tipologieEventi'));
|
||||
return view('eventi.create', compact('gruppi', 'individui', 'selectedGruppo', 'tipologieEventi', 'tags'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
@@ -88,6 +96,8 @@ class EventoController extends Controller
|
||||
'responsabili.*' => 'exists:individui,id',
|
||||
'luogo_indirizzo' => 'nullable|string|max:500',
|
||||
'luogo_url_maps' => 'nullable|string',
|
||||
'tags' => 'nullable|array',
|
||||
'tags.*' => 'exists:tags,id',
|
||||
]);
|
||||
|
||||
$evento = Evento::create([
|
||||
@@ -110,6 +120,10 @@ class EventoController extends Controller
|
||||
'luogo_url_maps' => $data['luogo_url_maps'] ?? null,
|
||||
]);
|
||||
|
||||
if (!empty($data['tags'])) {
|
||||
$evento->tags()->attach($data['tags']);
|
||||
}
|
||||
|
||||
if (!empty($data['gruppi'])) {
|
||||
$evento->gruppi()->attach($data['gruppi']);
|
||||
}
|
||||
@@ -124,19 +138,21 @@ class EventoController extends Controller
|
||||
public function show($evento)
|
||||
{
|
||||
$this->authorizeRead('eventi');
|
||||
$evento = Evento::with(['gruppi', 'responsabili.contatti', 'documenti'])->findOrFail($evento);
|
||||
$evento = Evento::with(['gruppi', 'responsabili.contatti', 'documenti', 'tags'])->findOrFail($evento);
|
||||
return view('eventi.show', compact('evento'));
|
||||
}
|
||||
|
||||
public function edit($evento)
|
||||
{
|
||||
$this->authorizeWrite('eventi');
|
||||
$evento = Evento::with(['gruppi', 'responsabili', 'documenti'])->findOrFail($evento);
|
||||
$evento = Evento::with(['gruppi', 'responsabili', 'documenti', 'tags'])->findOrFail($evento);
|
||||
$gruppi = Gruppo::orderBy('nome')->get();
|
||||
$individui = Individuo::orderBy('cognome')->orderBy('nome')->get();
|
||||
$tipologieEventi = TipologiaEvento::attive();
|
||||
$tags = Tag::orderBy('name')->get();
|
||||
$selectedTags = $evento->tags->pluck('id')->toArray();
|
||||
|
||||
return view('eventi.edit', compact('evento', 'gruppi', 'individui', 'tipologieEventi'));
|
||||
return view('eventi.edit', compact('evento', 'gruppi', 'individui', 'tipologieEventi', 'tags', 'selectedTags'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $evento)
|
||||
@@ -167,6 +183,8 @@ class EventoController extends Controller
|
||||
'responsabili.*' => 'exists:individui,id',
|
||||
'luogo_indirizzo' => 'nullable|string|max:500',
|
||||
'luogo_url_maps' => 'nullable|string',
|
||||
'tags' => 'nullable|array',
|
||||
'tags.*' => 'exists:tags,id',
|
||||
]);
|
||||
|
||||
$evento->update([
|
||||
@@ -189,6 +207,7 @@ class EventoController extends Controller
|
||||
'luogo_url_maps' => $data['luogo_url_maps'] ?? null,
|
||||
]);
|
||||
|
||||
$evento->tags()->sync($data['tags'] ?? []);
|
||||
$evento->gruppi()->sync($data['gruppi'] ?? []);
|
||||
$evento->responsabili()->sync($data['responsabili'] ?? []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user