fino a eventi e report prima del tipo di eventi
This commit is contained in:
@@ -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.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user