- Proclamatore::booted: reso non attivo, spostato nel cestino o anonimizzato, il sorvegliante scioglie il gruppo (territori non dati in reparto, membri liberi, utenza disattivata); il motivo va nel registro. L'elenco chiede conferma, la modifica avvisa sotto "Attivo". Un membro nel cestino esce dal gruppo. - Scheda del proclamatore: gruppo guidato con membri, pacchetto, da dare, assegnazioni dal gruppo, utenza e ultimo accesso; oppure gruppo di cui e' membro; gruppi sciolti guidati in passato. - Profilo del sorvegliante: il suo gruppo con gli stessi numeri. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
64 lines
1.8 KiB
PHP
64 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Proclamatori;
|
|
|
|
use App\Livewire\Concerns\RicordaRitorno;
|
|
use Livewire\Component;
|
|
use App\Models\Proclamatore;
|
|
|
|
class ProclamatoreEdit extends Component
|
|
{
|
|
use RicordaRitorno;
|
|
|
|
public Proclamatore $proclamatore;
|
|
public string $nome = '';
|
|
public string $cognome = '';
|
|
public bool $attivo = true;
|
|
|
|
public function mount(Proclamatore $proclamatore)
|
|
{
|
|
$this->proclamatore = $proclamatore;
|
|
$this->nome = $proclamatore->nome;
|
|
$this->cognome = $proclamatore->cognome;
|
|
$this->attivo = $proclamatore->attivo;
|
|
}
|
|
|
|
protected function rules(): array
|
|
{
|
|
return [
|
|
'nome' => 'required|string|max:100',
|
|
'cognome' => 'required|string|max:100',
|
|
'attivo' => 'boolean',
|
|
];
|
|
}
|
|
|
|
public function save()
|
|
{
|
|
$this->authorize('settings.manage');
|
|
|
|
$this->validate();
|
|
|
|
// Un sorvegliante reso non attivo scioglie il gruppo (Proclamatore::booted).
|
|
$gruppo = ! $this->attivo ? $this->proclamatore->gruppoSorvegliato() : null;
|
|
|
|
$this->proclamatore->update([
|
|
'nome' => $this->nome,
|
|
'cognome' => $this->cognome,
|
|
'attivo' => $this->attivo,
|
|
]);
|
|
|
|
$avviso = "Proclamatore {$this->proclamatore->nome_completo} aggiornato." . ($gruppo ? ' ' . ProclamatoreIndex::gruppoSciolto($gruppo) : '');
|
|
session()->flash('success', $avviso);
|
|
return $this->redirect($this->destinazione(route('proclamatori.index')), navigate: true);
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.proclamatori.proclamatore-form', [
|
|
'titolo' => "Modifica {$this->proclamatore->nome_completo}",
|
|
'btnLabel' => 'Salva Modifiche',
|
|
'gruppoSorvegliato' => $this->proclamatore->gruppoSorvegliato(),
|
|
]);
|
|
}
|
|
}
|