fix: correctly update staffing status

This commit is contained in:
Björn Fromme
2025-01-17 12:36:13 +01:00
parent 3c75a3e67c
commit 8db25cc44e
+7 -4
View File
@@ -138,6 +138,7 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa
public function updateStaffingStatus(): void public function updateStaffingStatus(): void
{ {
$confirmedDispositions = $this->getConfirmedDispositions(); $confirmedDispositions = $this->getConfirmedDispositions();
$validDispositions = $this->getValidDispositions();
$validApplications = $this->getValidApplications(); $validApplications = $this->getValidApplications();
// all available dispositions are taken by confirmed dispositions => staffed // all available dispositions are taken by confirmed dispositions => staffed
@@ -155,15 +156,18 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa
return; return;
} }
// all slots are open but there are valid applications => staffing // all slots are open but there are valid applications and/or pending dispositions => staffing
if (0 === $confirmedDispositions->count() && 0 < $validApplications->count()) { if (
0 === $confirmedDispositions->count()
&& (0 < $validApplications->count() || 0 < $validDispositions->count())
) {
$this->setStaffingStatus(Assignment::STATUS_STAFFING); $this->setStaffingStatus(Assignment::STATUS_STAFFING);
return; return;
} }
// all slots are open and there are no valid applications => un-staffed // all slots are open and there are no valid applications => un-staffed
if (0 === $this->getConfirmedDispositions()->count() && 0 === $this->getValidApplications()->count()) { if (0 === $confirmedDispositions->count() && 0 === $validApplications->count()) {
$this->setStaffingStatus(Assignment::STATUS_UNSTAFFED); $this->setStaffingStatus(Assignment::STATUS_UNSTAFFED);
} }
} }
@@ -466,7 +470,6 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa
return true === in_array($disposition->getStatus(), [ return true === in_array($disposition->getStatus(), [
Disposition::STATUS_NEW, Disposition::STATUS_NEW,
Disposition::STATUS_CHECKING_CONTRACT, Disposition::STATUS_CHECKING_CONTRACT,
Disposition::STATUS_CONFIRMED,
]); ]);
}); });
} }