'datetime' ]; /** * Relazione con persona */ public function persona(): BelongsTo { return $this->belongsTo(Persona::class); } /** * SCOPE: Modifiche recenti */ public function scopeRecenti($query, $giorni = 30) { return $query->where('data_modifica', '>=', now()->subDays($giorni)); } /** * SCOPE: Per utente */ public function scopeUtente($query, $utente) { return $query->where('utente_modifica', $utente); } /** * Crea record audit per modifica */ public static function registraModifica($personaId, $campo, $valorePrecedente, $valoreNuovo, $utente = null, $ip = null) { return static::create([ 'persona_id' => $personaId, 'campo_modificato' => $campo, 'valore_precedente' => $valorePrecedente, 'valore_nuovo' => $valoreNuovo, 'utente_modifica' => $utente ?: (auth()->user()->name ?? 'Sistema'), 'ip_modifica' => $ip ?: request()->ip(), 'data_modifica' => now() ]); } }