fino a eventi e report prima del tipo di eventi

This commit is contained in:
2026-05-26 11:47:36 +02:00
parent 0bed099d05
commit f088dba4bf
47 changed files with 1733 additions and 6899 deletions
+15 -117
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Models\Gruppo;
@@ -30,111 +32,7 @@ class GruppoController extends Controller
$visibleColumns = $defaultVisible;
}
$allGruppi = Gruppo::with(['diocesi', 'parent', 'children', 'individui'])
->orderBy('nome')
->get()
->map(function ($gruppo) {
$depth = 0;
$parent = $gruppo->parent;
while ($parent) {
$depth++;
$parent = $parent->parent;
}
$gruppo->depth = $depth;
return $gruppo;
});
if ($viewMode === 'table') {
$gruppi = $this->sortGruppiHierarchically($allGruppi);
} else {
$gruppi = $allGruppi;
}
return view('gruppi.index', compact(
'gruppi',
'allColumns',
'visibleColumns',
'viewMode',
'vista'
));
}
protected function sortGruppiHierarchically($gruppi)
{
$rootGroups = $gruppi->filter(fn($g) => $g->parent_id === null)->sortBy('nome');
$sorted = collect();
foreach ($rootGroups as $root) {
$sorted->push($root);
$this->addChildrenRecursive($root, $gruppi, $sorted);
}
return $sorted;
}
protected function addChildrenRecursive($parent, $allGruppi, &$sorted)
{
$children = $allGruppi->filter(fn($g) => $g->parent_id === $parent->id)->sortBy('nome');
foreach ($children as $child) {
$sorted->push($child);
$this->addChildrenRecursive($child, $allGruppi, $sorted);
}
}
$allGruppi = Gruppo::with(['diocesi', 'parent', 'children', 'individui'])
->orderBy('nome')
->get()
->map(function ($gruppo) {
$depth = 0;
$parent = $gruppo->parent;
while ($parent) {
$depth++;
$parent = $parent->parent;
}
$gruppo->depth = $depth;
return $gruppo;
});
if ($viewMode === 'table') {
$gruppi = $this->sortGruppiHierarchically($allGruppi);
} else {
$gruppi = $allGruppi;
}
return view('gruppi.index', compact(
'gruppi',
'allColumns',
'visibleColumns',
'viewMode',
'vista'
));
}
protected function sortGruppiHierarchically($gruppi)
{
$rootGroups = $gruppi->filter(fn($g) => $g->parent_id === null)->sortBy('nome');
$sorted = collect();
foreach ($rootGroups as $root) {
$sorted->push($root);
$this->addChildrenRecursive($root, $gruppi, $sorted);
}
return $sorted;
}
protected function addChildrenRecursive($parent, $allGruppi, &$sorted)
{
$children = $allGruppi->filter(fn($g) => $g->parent_id === $parent->id)->sortBy('nome');
foreach ($children as $child) {
$sorted->push($child);
$this->addChildrenRecursive($child, $allGruppi, $sorted);
}
}
$allGruppi = Gruppo::with(['diocesi', 'parent', 'children', 'individui'])
$allGruppi = Gruppo::with(['diocesi', 'parent', 'children', 'individui', 'avatar'])
->orderBy('nome')
->get()
->map(function ($gruppo) {
@@ -233,31 +131,31 @@ class GruppoController extends Controller
return redirect('/gruppi/' . $gruppo->id)->with('success', 'Gruppo creato con successo.');
}
public function show($gruppo)
public function show($id)
{
$this->authorizeRead('gruppi');
$gruppo = Gruppo::with(['parent', 'children', 'diocesi', 'individui.contatti', 'individui.documenti', 'individui' => function ($q) {
$q->withPivot('ruolo_ids', 'ruolo_nel_gruppo', 'data_adesione');
}, 'eventi' => function ($q) {
}, 'avatar', 'eventi' => function ($q) {
$q->where('is_incontro_gruppo', true);
}, 'eventi.responsabili.contatti'])->findOrFail($gruppo);
}, 'eventi.responsabili.contatti'])->findOrFail($id);
return view('gruppi.show', compact('gruppo'));
}
public function edit($gruppo)
public function edit($id)
{
$this->authorizeWrite('gruppi');
$gruppo = Gruppo::with(['individui.contatti', 'individui.documenti'])->findOrFail($gruppo);
$gruppo = Gruppo::with(['individui.contatti', 'individui.documenti', 'avatar'])->findOrFail($id);
$diocesi = Diocesi::orderBy('nome')->get();
$gruppi = Gruppo::where('id', '!=', $gruppo->id)->orderBy('nome')->get();
$membri = $gruppo->individui()->withPivot('ruolo_ids', 'ruolo_nel_gruppo', 'data_adesione')->orderBy('cognome')->orderBy('nome')->get();
return view('gruppi.edit', compact('gruppo', 'diocesi', 'gruppi', 'membri'));
}
public function update(Request $request, $gruppo)
public function update(Request $request, $id)
{
$this->authorizeWrite('gruppi');
$gruppo = Gruppo::findOrFail($gruppo);
$gruppo = Gruppo::findOrFail($id);
$data = $request->validate([
'nome' => 'required|string|max:255',
'descrizione' => 'nullable|string',
@@ -295,10 +193,10 @@ class GruppoController extends Controller
return redirect('/gruppi/' . $gruppo->id)->with('success', 'Gruppo aggiornato.');
}
public function destroy($gruppo)
public function destroy($id)
{
$this->authorizeDelete('gruppi');
$gruppo = Gruppo::with('children', 'individui')->findOrFail($gruppo);
$gruppo = Gruppo::with('children', 'individui')->findOrFail($id);
$hasChildren = $gruppo->children()->count() > 0;
$isSuperAdmin = auth()->user()->isSuperAdmin();
@@ -393,13 +291,13 @@ class GruppoController extends Controller
return response()->json(['success' => true, 'vista_id' => $vista->id]);
}
public function deleteVista($vista)
public function deleteVista($id)
{
$vista = \App\Models\VistaReport::where('user_id', auth()->id())
->where('id', $vista)
->where('id', $id)
->firstOrFail();
$vista->delete();
return redirect()->route('gruppi.index')->with('success', 'Vista eliminata.');
}
}
}