++ audit log: evento "campagna_percorso" per la scelta sul conteggio in campagna

Registrato al rientro quando viene proposta una campagna (Sì/No) e nel
Registro quando l'amministratore imposta o modifica il conteggio.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-19 10:37:37 +02:00
parent 097aa4ff30
commit 1708890d48
4 changed files with 50 additions and 3 deletions

View File

@@ -154,7 +154,10 @@ class Registro extends Component
'note' => $this->form_note ?: null,
];
$conflitto = DB::transaction(function () use ($data, $uscita, $rientro) {
$assegnazione = null;
$prima = [false, null];
$conflitto = DB::transaction(function () use ($data, $uscita, $rientro, &$assegnazione, &$prima) {
Territorio::whereKey($data['territorio_id'])->lockForUpdate()->first();
$conflitto = Assegnazione::sovrappostaA((int) $data['territorio_id'], $uscita, $rientro, $this->editingId);
@@ -163,9 +166,11 @@ class Registro extends Component
}
if ($this->editingId) {
Assegnazione::findOrFail($this->editingId)->update($data);
$assegnazione = Assegnazione::findOrFail($this->editingId);
$prima = [(bool) $assegnazione->counted_in_campaign, $assegnazione->campaign_id ? (int) $assegnazione->campaign_id : null];
$assegnazione->update($data);
} else {
Assegnazione::create($data + ['created_by' => auth()->id()]);
$assegnazione = Assegnazione::create($data + ['created_by' => auth()->id()]);
}
return null;
@@ -177,6 +182,16 @@ class Registro extends Component
return;
}
// Log the campaign choice when the admin sets or changes it here.
$dopo = [(bool) $assegnazione->counted_in_campaign, $assegnazione->campaign_id ? (int) $assegnazione->campaign_id : null];
if ($dopo !== $prima && ($dopo[0] || $prima[0])) {
$assegnazione->logCampagnaPercorso(
$assegnazione->campagna ?? ($prima[1] ? Campagna::find($prima[1]) : null),
$dopo[0],
'Registro'
);
}
$this->showModal = false;
}