glastree_on_gitea
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Gruppo;
|
||||
use App\Models\Individuo;
|
||||
use App\Models\Ruolo;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class GruppoMembroController extends Controller
|
||||
{
|
||||
public function store(Request $request, $gruppo)
|
||||
{
|
||||
$this->authorizeWrite('gruppi');
|
||||
$this->authorizeRead('individui');
|
||||
$gruppo = Gruppo::findOrFail($gruppo);
|
||||
|
||||
$data = $request->validate([
|
||||
'individuo_id' => 'required|exists:individui,id',
|
||||
'ruolo_ids' => 'nullable|array',
|
||||
'ruolo_ids.*' => 'exists:ruoli,id',
|
||||
'data_adesione' => 'nullable|date',
|
||||
]);
|
||||
|
||||
if ($gruppo->individui()->where('individuo_id', $data['individuo_id'])->exists()) {
|
||||
if ($request->ajax() || $request->expectsJson()) {
|
||||
return response()->json(['error' => 'Questo individuo è già membro di questo gruppo.'], 422);
|
||||
}
|
||||
return redirect()->back()->with('error', 'Questo individuo è già membro di questo gruppo.');
|
||||
}
|
||||
|
||||
$gruppo->individui()->attach($data['individuo_id'], [
|
||||
'ruolo_ids' => !empty($data['ruolo_ids']) ? json_encode(array_values($data['ruolo_ids'])) : null,
|
||||
'data_adesione' => $data['data_adesione'] ?? null,
|
||||
]);
|
||||
|
||||
if ($request->ajax() || $request->expectsJson()) {
|
||||
return response()->json(['success' => 'Membro aggiunto con successo.']);
|
||||
}
|
||||
return redirect()->back()->with('success', 'Membro aggiunto con successo.');
|
||||
}
|
||||
|
||||
public function update(Request $request, $gruppo, $individuo)
|
||||
{
|
||||
$this->authorizeWrite('gruppi');
|
||||
$gruppo = Gruppo::findOrFail($gruppo);
|
||||
|
||||
$data = $request->validate([
|
||||
'ruolo_ids' => 'nullable|array',
|
||||
'ruolo_ids.*' => 'exists:ruoli,id',
|
||||
'data_adesione' => 'nullable|date',
|
||||
]);
|
||||
|
||||
$gruppo->individui()->updateExistingPivot($individuo, [
|
||||
'ruolo_ids' => !empty($data['ruolo_ids']) ? json_encode(array_values($data['ruolo_ids'])) : null,
|
||||
'data_adesione' => $data['data_adesione'] ?? null,
|
||||
]);
|
||||
|
||||
return redirect()->back()->with('success', 'Membro aggiornato con successo.');
|
||||
}
|
||||
|
||||
public function destroy($gruppo, $individuo)
|
||||
{
|
||||
$this->authorizeDelete('gruppi');
|
||||
$gruppo = Gruppo::findOrFail($gruppo);
|
||||
$gruppo->individui()->detach($individuo);
|
||||
|
||||
if (request()->ajax() || request()->expectsJson()) {
|
||||
return response()->json(['success' => 'Membro rimosso dal gruppo.']);
|
||||
}
|
||||
return redirect()->back()->with('success', 'Membro rimosso dal gruppo.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user