mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-11-04 03:08:25 +00:00 
			
		
		
		
	new user is assigned, but crash on flush()
This commit is contained in:
		@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -70,8 +70,8 @@
 | 
			
		||||
            {{ form_start(assignForm) }}
 | 
			
		||||
                <div class="row filter-box">
 | 
			
		||||
                    <div class="col-md-6">
 | 
			
		||||
                        {{ form_label(assignForm.assignUser ) }}
 | 
			
		||||
                        {{ form_widget(assignForm.assignUser, {'attr': {'class': 'select2'}}) }}
 | 
			
		||||
                        {{ form_label(assignForm.userTo ) }}
 | 
			
		||||
                        {{ form_widget(assignForm.userTo, {'attr': {'class': 'select2'}}) }}
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <ul class="record_actions">
 | 
			
		||||
@@ -90,7 +90,9 @@
 | 
			
		||||
            </div>
 | 
			
		||||
        {% endif %}
 | 
			
		||||
 | 
			
		||||
    {% if paginator is defined %}
 | 
			
		||||
        {{ chill_pagination(paginator) }}
 | 
			
		||||
    {% endif %}
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user