*/ use HasFactory; public const UPDATED_AT = null; protected $fillable = [ 'legal_request_id', 'press_release_id', 'encrypted_before', 'purge_after', ]; protected function casts(): array { return [ 'encrypted_before' => 'encrypted:array', 'purge_after' => 'date', ]; } /** * Snapshot mit Löschfrist ab heute (config legal.snapshot_retention_days). * * @param array $before */ public static function capture(PressRelease $pressRelease, array $before, ?LegalRequest $legalRequest = null): self { return self::query()->create([ 'legal_request_id' => $legalRequest?->getKey(), 'press_release_id' => $pressRelease->getKey(), 'encrypted_before' => $before, 'purge_after' => now()->addDays((int) config('legal.snapshot_retention_days'))->toDateString(), ]); } /** * @return BelongsTo */ public function legalRequest(): BelongsTo { return $this->belongsTo(LegalRequest::class); } /** * @return BelongsTo */ public function pressRelease(): BelongsTo { return $this->belongsTo(PressRelease::class); } /** * @param Builder $query * @return Builder */ public function scopeDueForPurge(Builder $query): Builder { return $query->whereDate('purge_after', '<', now()->toDateString()); } }