feat: auto assign matching job profiles when adding trainings

This commit is contained in:
Björn Fromme
2024-09-13 16:52:40 +02:00
parent 070abbdc4d
commit 7d816d36ec
@@ -2,6 +2,7 @@
namespace App\Controller\Admin\Teamer\TrainingAttendance;
use App\Entity\JobProfile;
use App\Entity\Teamer;
use App\Entity\Training;
use App\Entity\TrainingAttendance;
@@ -54,6 +55,7 @@ class CreateController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) {
$this->entityManager->persist($attendance);
$this->assignJobProfiles($teamer, $attendance);
$this->entityManager->flush();
$this->addFlash('success', 'Die Teilnahme wurde hinzugefügt');
@@ -74,4 +76,25 @@ class CreateController extends AbstractController
'form' => $form->createView(),
]);
}
private function assignJobProfiles(Teamer $teamer, TrainingAttendance $attendance): void
{
$qb = $this
->entityManager
->getRepository(JobProfile::class)
->createQueryBuilder('job_profile')
;
$jobProfiles = $qb
->leftJoin('job_profile.requiredTrainings', 'required_trainings')
->where($qb->expr()->in('required_trainings', ':training'))
->setParameter('training', $attendance->getTraining())
->getQuery()
->getResult()
;
foreach ($jobProfiles as $jobProfile) {
$teamer->addJobProfile($jobProfile);
}
}
}