FAMILY $this->Name $this->OT"; } public function archiveHistory() { return $this->morphMany(ArchiveHistory::class, 'historyable'); } public function archiveInfo() { return $this->morphOne(ArchiveInfo::class, 'historyable'); } /** * Проверяет, можно ли выдать эту карту */ public function canBeIssued(): bool { // Проверяем, есть ли открытые выдачи $hasOpenIssue = $this->archiveHistory() ->whereNotNull('issue_at') ->whereNull('return_at') ->where('has_lost', false) ->exists(); return !$hasOpenIssue; } /** * Получает текущую открытую выдачу (если есть) */ public function getCurrentIssue(): ?ArchiveHistory { return $this->archiveHistory() ->whereNotNull('issue_at') ->whereNull('return_at') ->where('has_lost', false) ->latest('issue_at') ->first(); } }