diff --git a/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php b/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php index 99279ae84..e760bd77a 100644 --- a/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php +++ b/src/Bundle/ChillPersonBundle/Controller/ReassignAccompanyingPeriodController.php @@ -87,53 +87,62 @@ class ReassignAccompanyingPeriodController extends AbstractController $form->handleRequest($request); - $total = $this->accompanyingPeriodACLAwareRepository->countByUserOpenedAccompanyingPeriod( - $form['user']->getData() - ); + $userFrom = $form['user']->getData(); + + $total = $this->accompanyingPeriodACLAwareRepository->countByUserOpenedAccompanyingPeriod($userFrom); $paginator = $this->paginatorFactory->create($total); $periods = $this->accompanyingPeriodACLAwareRepository ->findByUserOpenedAccompanyingPeriod( - $form['user']->getData(), + $userFrom, ['openingDate' => 'ASC'], $paginator->getItemsPerPage(), $paginator->getCurrentPageFirstItemNumber() ); + // Create an array of period id's to pass into assignForm hiddenfield $periodIds = []; foreach ($periods as $period) { - $periodIds[] = $period->getId(); + $periodIds[] = $period->getId(); } - $assignForm = $this->buildReassignForm($periodIds); + $userFromId = null !== $userFrom ? $userFrom->getId() : null; + + $assignForm = $this->buildReassignForm($periodIds, $userFromId); $assignForm->handleRequest($request); if ($assignForm->isSubmitted()) { + $userFromId = (int) $assignForm->get('userFrom')->getData(); $assignPeriodIds = json_decode($assignForm->get('periods')->getData(), true); - $userAssign = $assignForm->get('assignUser')->getData(); + $userTo = $assignForm->get('userTo')->getData(); - foreach($assignPeriodIds as $assignPeriodId) { - $assignPeriod = $this->courseRepository->find($assignPeriodId); - $assignPeriod->setUser($userAssign); - $this->em->persist($assignPeriod); - } - - $this->em->flush(); + $userFrom = $this->userRepository->find($userFromId); $remainingPeriods = $this->accompanyingPeriodACLAwareRepository ->findByUserOpenedAccompanyingPeriod( - $form['user']->getData(), + $userFrom, ['openingDate' => 'ASC'], $paginator->getItemsPerPage(), $paginator->getCurrentPageFirstItemNumber() ); + + foreach($remainingPeriods as $period) { + $id = $period->getId(); + + if (in_array($id, $assignPeriodIds)) { + $period->setUser($userTo); + $this->em->persist($period); + } + } + + $this->em->flush(); + return new Response( $this->engine->render('@ChillPerson/AccompanyingPeriod/reassign_list.html.twig', [ 'paginator' => $paginator, - 'periods' => $remainingPeriods, 'form' => $form->createView(), 'assignForm' => $assignForm->createView() ]) @@ -174,11 +183,12 @@ class ReassignAccompanyingPeriodController extends AbstractController return $builder->getForm(); } - private function buildReassignForm(array $periodIds): FormInterface + private function buildReassignForm(array $periodIds, ?int $userFromId): FormInterface { $defaultData = [ - 'user' => null, - 'periods' => [] + 'userFrom' => $userFromId, + 'periods' => [], + 'assignTo' => null ]; $periodsJson = json_encode($periodIds); @@ -189,7 +199,10 @@ class ReassignAccompanyingPeriodController extends AbstractController ->add('periods', HiddenType::class, [ 'data' => $periodsJson, ]) - ->add('assignUser', EntityType::class, [ + ->add('userFrom', HiddenType::class, [ + 'data' => $userFromId + ]) + ->add('userTo', EntityType::class, [ 'class' => User::class, 'choices' => $this->userRepository->findByActive(['username' => 'ASC']), 'choice_label' => function (User $u) { diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/reassign_list.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/reassign_list.html.twig index 9f77faeef..a77693775 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/reassign_list.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingPeriod/reassign_list.html.twig @@ -70,8 +70,8 @@ {{ form_start(assignForm) }}
- {{ form_label(assignForm.assignUser ) }} - {{ form_widget(assignForm.assignUser, {'attr': {'class': 'select2'}}) }} + {{ form_label(assignForm.userTo ) }} + {{ form_widget(assignForm.userTo, {'attr': {'class': 'select2'}}) }}