fix: assign correct staffing status
This commit is contained in:
@@ -137,22 +137,33 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa
|
|||||||
|
|
||||||
public function updateStaffingStatus(): void
|
public function updateStaffingStatus(): void
|
||||||
{
|
{
|
||||||
$confirmedDispositions = $this->getValidDispositions();
|
$confirmedDispositions = $this->getConfirmedDispositions();
|
||||||
$validApplications = $this->getValidApplications();
|
$validApplications = $this->getValidApplications();
|
||||||
|
|
||||||
|
// all available dispositions are taken by confirmed dispositions => staffed
|
||||||
if ($this->availableDispositions === $confirmedDispositions->count()) {
|
if ($this->availableDispositions === $confirmedDispositions->count()) {
|
||||||
$this->setStaffingStatus(Assignment::STATUS_STAFFED);
|
$this->setStaffingStatus(Assignment::STATUS_STAFFED);
|
||||||
} elseif (
|
|
||||||
$this->availableDispositions > $confirmedDispositions->count()
|
return;
|
||||||
&& 0 < $confirmedDispositions->count()
|
}
|
||||||
|
|
||||||
|
// at least one available slot is taken by confirmed disposition => partly staffed
|
||||||
|
if (0 < $confirmedDispositions->count()
|
||||||
) {
|
) {
|
||||||
$this->setStaffingStatus(Assignment::STATUS_PARTLY_STAFFED);
|
$this->setStaffingStatus(Assignment::STATUS_PARTLY_STAFFED);
|
||||||
} elseif (
|
|
||||||
$this->availableDispositions > $confirmedDispositions->count()
|
return;
|
||||||
&& 0 < $validApplications->count()
|
}
|
||||||
) {
|
|
||||||
|
// all slots are open but there are valid applications => staffing
|
||||||
|
if (0 === $confirmedDispositions->count() && 0 < $validApplications->count()) {
|
||||||
$this->setStaffingStatus(Assignment::STATUS_STAFFING);
|
$this->setStaffingStatus(Assignment::STATUS_STAFFING);
|
||||||
} else {
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// all slots are open and there are no valid applications => un-staffed
|
||||||
|
if (0 === $this->getConfirmedDispositions()->count() && 0 === $this->getValidApplications()->count()) {
|
||||||
$this->setStaffingStatus(Assignment::STATUS_UNSTAFFED);
|
$this->setStaffingStatus(Assignment::STATUS_UNSTAFFED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -460,6 +471,13 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getConfirmedDispositions(): Collection
|
||||||
|
{
|
||||||
|
return $this->dispositions->filter(function (Disposition $disposition) {
|
||||||
|
return Disposition::STATUS_CONFIRMED === $disposition->getStatus();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public function getContact(): ?User
|
public function getContact(): ?User
|
||||||
{
|
{
|
||||||
return $this->contact;
|
return $this->contact;
|
||||||
|
|||||||
Reference in New Issue
Block a user