From f03f4715cf179840042e7008c494ba5357895a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 15 Jul 2024 14:53:27 +0200 Subject: [PATCH] feat: respect disposition status for staffing status --- src/Entity/Assignment.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Entity/Assignment.php b/src/Entity/Assignment.php index b855432..a132f81 100644 --- a/src/Entity/Assignment.php +++ b/src/Entity/Assignment.php @@ -421,6 +421,13 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa return $this; } + public function getConfirmedDispositions(): Collection + { + return $this->dispositions->filter(function (Disposition $disposition) { + return Disposition::STATUS_CONFIRMED === $disposition->getStatus(); + }); + } + public function getContact(): ?User { return $this->contact; @@ -483,7 +490,9 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa public function isStaffed(): bool { - return $this->availableDispositions === $this->dispositions->count(); + $confirmedDispositions = $this->getConfirmedDispositions(); + + return $this->availableDispositions === $confirmedDispositions->count(); } public function isUnstaffed(): bool @@ -493,8 +502,10 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa public function isPartlyStaffed(): bool { - return $this->availableDispositions > $this->dispositions->count() - && 0 < $this->dispositions->count(); + $confirmedDispositions = $this->getConfirmedDispositions(); + + return $this->availableDispositions > $confirmedDispositions->count() + && 0 < $confirmedDispositions->count(); } public function isStaffing(): bool