feat: rework automatic job profile assignment

This commit is contained in:
Björn Fromme
2024-11-26 16:46:29 +01:00
parent d52cdfca85
commit 97d658e71a
11 changed files with 220 additions and 68 deletions
+33
View File
@@ -118,4 +118,37 @@ class JobProfile implements BlameableEntityInterface, TimestampableEntityInterfa
return $this;
}
public function isQualified(Teamer $teamer): bool
{
// Check licenses
$qualifiedByLicenses = true;
if (0 < $this->requiredTrainings->count()) {
$teamerLicenseTypes = $teamer->getLicenses()->map(function (License $license) {
return $license->getType();
})->toArray();
foreach ($this->requiredLicenses as $requiredLicense) {
if (false === in_array($requiredLicense, $teamerLicenseTypes)) {
$qualifiedByLicenses = false;
}
}
}
// Check trainings
$qualifiedByTrainings = true;
if (0 < $this->requiredTrainings->count()) {
$teamerTrainings = $teamer->getTrainingAttendances()->map(function (TrainingAttendance $trainingAttendance) {
return $trainingAttendance->getTraining();
});
foreach ($this->requiredTrainings as $requiredTraining) {
if (false === $teamerTrainings->contains($requiredTraining)) {
$qualifiedByTrainings = false;
}
}
}
return $qualifiedByLicenses && $qualifiedByTrainings;
}
}