++ fix grafici, aggiunta statistiche su area assegnatario, sezione profilo

This commit is contained in:
Francesco Picone
2026-07-25 23:28:41 +02:00
parent 177523994d
commit 95c9180f52
7 changed files with 151 additions and 8 deletions

View File

@@ -103,6 +103,40 @@ class Assegnazione extends Model
return is_null($this->returned_at);
}
/**
* Scadenza dell'assegnazione: data entro cui il territorio andrebbe
* riconsegnato, cioè assigned_at + la soglia "giorni_per_smarrito" (la
* stessa oltre cui Territorio::stato diventa "da_rientrare"). Null per le
* assegnazioni già rientrate.
*/
public function getDataConsegnaPresuntaAttribute(): ?Carbon
{
if ($this->returned_at !== null) {
return null;
}
$soglia = (int) Setting::getValue('giorni_per_smarrito', 120);
return Carbon::parse($this->assigned_at)->addDays($soglia);
}
/**
* Giorni che mancano alla scadenza: positivo se ancora entro i termini,
* negativo (giorni di ritardo) se già scaduta. Null se rientrata.
*/
public function getGiorniAllaScadenzaAttribute(): ?int
{
$scadenza = $this->data_consegna_presunta?->copy()->startOfDay();
if (! $scadenza) {
return null;
}
$oggi = Carbon::today();
$giorni = (int) $oggi->diffInDays($scadenza);
return $oggi->lessThanOrEqualTo($scadenza) ? $giorni : -$giorni;
}
public function ensurePdfAccessCode(): string
{
if ($this->pdf_access_code) {