*/ use HasFactory, OwnedByUser; /** * @return array */ protected function casts(): array { return [ 'issued_at' => 'date', 'expires_at' => 'date', ]; } /** * @return BelongsTo */ public function category(): BelongsTo { return $this->belongsTo(Category::class); } public function expiryStatus(int $monthsBefore = 1): ExpiryStatus { return match (true) { $this->expires_at->isPast() && ! $this->expires_at->isToday() => ExpiryStatus::Expired, $this->expires_at->lte(today()->addMonths($monthsBefore)) => ExpiryStatus::ExpiringSoon, default => ExpiryStatus::Valid, }; } }