mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-11-03 18:58:24 +00:00 
			
		
		
		
	Compare commits
	
		
			20 Commits
		
	
	
		
			2.10.1
			...
			183-fix-ty
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						6280453523
	
				 | 
					
					
						|||
| 
						
						
							
						
						68f56671a4
	
				 | 
					
					
						|||
| 
						
						
							
						
						dc860d0c46
	
				 | 
					
					
						|||
| 
						
						
							
						
						6fd80f9f2e
	
				 | 
					
					
						|||
| b2aa465b03 | |||
| 0fa8944c29 | |||
| 7494dbfc7c | |||
| 642958bde2 | |||
| 57bd6d1be4 | |||
| bbcbbf078f | |||
| ba778b1cf8 | |||
| 728fd642fa | |||
| 4150eb56b4 | |||
| 2927561c02 | |||
| 5188891108 | |||
| c6deb21606 | |||
| cdfb084fe4 | |||
| 5ce21aadce | |||
| b9000a38d3 | |||
| 89a185a34f | 
							
								
								
									
										5
									
								
								.changes/unreleased/Fixed-20231105-230426.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.changes/unreleased/Fixed-20231105-230426.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
kind: Fixed
 | 
			
		||||
body: Fix "problem during download" on some filters, which used a wrong data type
 | 
			
		||||
time: 2023-11-05T23:04:26.346839079+01:00
 | 
			
		||||
custom:
 | 
			
		||||
  Issue: "183"
 | 
			
		||||
							
								
								
									
										5
									
								
								.changes/unreleased/Fixed-20231105-232608.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.changes/unreleased/Fixed-20231105-232608.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
kind: Fixed
 | 
			
		||||
body: Fix filter "activity by date"
 | 
			
		||||
time: 2023-11-05T23:26:08.685518729+01:00
 | 
			
		||||
custom:
 | 
			
		||||
  Issue: "184"
 | 
			
		||||
							
								
								
									
										3
									
								
								.changes/v2.10.2.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.changes/v2.10.2.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
## v2.10.2 - 2023-10-26
 | 
			
		||||
### Fixed
 | 
			
		||||
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Use injection of translator instead of ->get(). 
 | 
			
		||||
							
								
								
									
										3
									
								
								.changes/v2.10.3.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.changes/v2.10.3.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
## v2.10.3 - 2023-10-26
 | 
			
		||||
### Fixed
 | 
			
		||||
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Replace old method of getting translator with injection of translatorInterface 
 | 
			
		||||
							
								
								
									
										3
									
								
								.changes/v2.10.4.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.changes/v2.10.4.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
## v2.10.4 - 2023-10-26
 | 
			
		||||
### Fixed
 | 
			
		||||
* Fix null value constraint errors when merging relationships in doubles 
 | 
			
		||||
							
								
								
									
										12
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -6,6 +6,18 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
 | 
			
		||||
and is generated by [Changie](https://github.com/miniscruff/changie).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## v2.10.4 - 2023-10-26
 | 
			
		||||
### Fixed
 | 
			
		||||
* Fix null value constraint errors when merging relationships in doubles 
 | 
			
		||||
 | 
			
		||||
## v2.10.3 - 2023-10-26
 | 
			
		||||
### Fixed
 | 
			
		||||
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Replace old method of getting translator with injection of translatorInterface 
 | 
			
		||||
 | 
			
		||||
## v2.10.2 - 2023-10-26
 | 
			
		||||
### Fixed
 | 
			
		||||
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Use injection of translator instead of ->get(). 
 | 
			
		||||
 | 
			
		||||
## v2.10.1 - 2023-10-24
 | 
			
		||||
### Fixed
 | 
			
		||||
* Fix export controller when generating an export without any data in session 
 | 
			
		||||
 
 | 
			
		||||
@@ -673,8 +673,8 @@ final class ActivityController extends AbstractController
 | 
			
		||||
                throw $this->createNotFoundException('Accompanying Period not found');
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // TODO Add permission
 | 
			
		||||
            // $this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
 | 
			
		||||
        // TODO Add permission
 | 
			
		||||
        // $this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
 | 
			
		||||
        } else {
 | 
			
		||||
            throw $this->createNotFoundException('Person or Accompanying Period not found');
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -13,16 +13,12 @@ namespace Chill\ActivityBundle\Export\Filter;
 | 
			
		||||
 | 
			
		||||
use Chill\ActivityBundle\Export\Declarations;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Form\Type\Export\FilterType;
 | 
			
		||||
use Chill\MainBundle\Form\Type\PickRollingDateType;
 | 
			
		||||
use Chill\MainBundle\Service\RollingDate\RollingDate;
 | 
			
		||||
use Chill\MainBundle\Service\RollingDate\RollingDateConverterInterface;
 | 
			
		||||
use Doctrine\ORM\Query\Expr;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
use Symfony\Component\Form\FormError;
 | 
			
		||||
use Symfony\Component\Form\FormEvent;
 | 
			
		||||
use Symfony\Component\Form\FormEvents;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class ActivityDateFilter implements FilterInterface
 | 
			
		||||
@@ -74,46 +70,6 @@ class ActivityDateFilter implements FilterInterface
 | 
			
		||||
            ->add('date_to', PickRollingDateType::class, [
 | 
			
		||||
                'label' => 'Activities before this date',
 | 
			
		||||
            ]);
 | 
			
		||||
 | 
			
		||||
        $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
 | 
			
		||||
            /** @var \Symfony\Component\Form\FormInterface $filterForm */
 | 
			
		||||
            $filterForm = $event->getForm()->getParent();
 | 
			
		||||
            $enabled = $filterForm->get(FilterType::ENABLED_FIELD)->getData();
 | 
			
		||||
 | 
			
		||||
            if (true === $enabled) {
 | 
			
		||||
                // if the filter is enabled, add some validation
 | 
			
		||||
                $form = $event->getForm();
 | 
			
		||||
                $date_from = $form->get('date_from')->getData();
 | 
			
		||||
                $date_to = $form->get('date_to')->getData();
 | 
			
		||||
 | 
			
		||||
                // check that fields are not empty
 | 
			
		||||
                if (null === $date_from) {
 | 
			
		||||
                    $form->get('date_from')->addError(new FormError(
 | 
			
		||||
                        $this->translator->trans('This field '
 | 
			
		||||
                        .'should not be empty')
 | 
			
		||||
                    ));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (null === $date_to) {
 | 
			
		||||
                    $form->get('date_to')->addError(new FormError(
 | 
			
		||||
                        $this->translator->trans('This field '
 | 
			
		||||
                        .'should not be empty')
 | 
			
		||||
                    ));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // check that date_from is before date_to
 | 
			
		||||
                if (
 | 
			
		||||
                    (null !== $date_from && null !== $date_to)
 | 
			
		||||
                    && $date_from >= $date_to
 | 
			
		||||
                ) {
 | 
			
		||||
                    $form->get('date_to')->addError(new FormError(
 | 
			
		||||
                        $this->translator->trans('This date should be after '
 | 
			
		||||
                            .'the date given in "Implied in an activity after '
 | 
			
		||||
                            .'this date" field')
 | 
			
		||||
                    ));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getFormDefaultData(): array
 | 
			
		||||
 
 | 
			
		||||
@@ -80,7 +80,7 @@ class ActivityTypeFilter implements ExportElementValidatedInterface, FilterInter
 | 
			
		||||
        // collect all the reasons'name used in this filter in one array
 | 
			
		||||
        $reasonsNames = array_map(
 | 
			
		||||
            fn (ActivityType $t): string => $this->translatableStringHelper->localize($t->getName()),
 | 
			
		||||
            $this->activityTypeRepository->findBy(['id' => $data['types']->toArray()])
 | 
			
		||||
            $this->activityTypeRepository->findBy(['id' => $data['types'] instanceof \Doctrine\Common\Collections\Collection ? $data['types']->toArray() : $data['types']])
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return ['Filtered by activity type: only %list%', [
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ use Chill\ActivityBundle\Repository\ActivityReasonRepository;
 | 
			
		||||
use Chill\MainBundle\Export\ExportElementValidatedInterface;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\Query\Expr;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
@@ -79,7 +80,7 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
 | 
			
		||||
        // collect all the reasons'name used in this filter in one array
 | 
			
		||||
        $reasonsNames = array_map(
 | 
			
		||||
            fn (ActivityReason $r): string => '"'.$this->translatableStringHelper->localize($r->getName()).'"',
 | 
			
		||||
            $this->activityReasonRepository->findBy(['id' => $data['reasons']->toArray()])
 | 
			
		||||
            $this->activityReasonRepository->findBy(['id' => $data['reasons'] instanceof Collection ? $data['reasons']->toArray() : $data['reasons']])
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return [
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ use Chill\MainBundle\Entity\User\UserJobHistory;
 | 
			
		||||
use Chill\MainBundle\Entity\UserJob;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
@@ -80,7 +81,7 @@ class UsersJobFilter implements FilterInterface
 | 
			
		||||
                ', ',
 | 
			
		||||
                array_map(
 | 
			
		||||
                    fn (UserJob $job) => $this->translatableStringHelper->localize($job->getLabel()),
 | 
			
		||||
                    $data['jobs']->toArray()
 | 
			
		||||
                    $data['jobs'] instanceof Collection ? $data['jobs']->toArray() : $data['jobs']
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ]];
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ use Chill\MainBundle\Entity\User\UserScopeHistory;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Repository\ScopeRepositoryInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
@@ -83,7 +84,7 @@ class UsersScopeFilter implements FilterInterface
 | 
			
		||||
                ', ',
 | 
			
		||||
                array_map(
 | 
			
		||||
                    fn (Scope $s) => $this->translatableStringHelper->localize($s->getName()),
 | 
			
		||||
                    $data['scopes']->toArray()
 | 
			
		||||
                    $data['scopes'] instanceof Collection ? $data['scopes']->toArray() : $data['scopes']
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ]];
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,7 @@ final class ActivityReasonFilterTest extends AbstractFilterTest
 | 
			
		||||
    public function getFormData()
 | 
			
		||||
    {
 | 
			
		||||
        self::bootKernel();
 | 
			
		||||
        $data = [];
 | 
			
		||||
 | 
			
		||||
        $em = self::$container
 | 
			
		||||
            ->get(EntityManagerInterface::class);
 | 
			
		||||
@@ -62,10 +63,13 @@ final class ActivityReasonFilterTest extends AbstractFilterTest
 | 
			
		||||
 | 
			
		||||
        // generate an array of 5 different combination of results
 | 
			
		||||
        for ($i = 0; 5 > $i; ++$i) {
 | 
			
		||||
            yield ['reasons' => new ArrayCollection(array_splice($reasons, ($i + 1) * -1))];
 | 
			
		||||
            $data[] = ['reasons' => new ArrayCollection(array_splice($reasons, ($i + 1) * -1))];
 | 
			
		||||
            $data[] = ['reasons' => array_splice($reasons, ($i + 1) * -1)];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self::ensureKernelShutdown();
 | 
			
		||||
 | 
			
		||||
        return $data;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getQueryBuilders(): iterable
 | 
			
		||||
 
 | 
			
		||||
@@ -57,6 +57,9 @@ final class ActivityTypeFilterTest extends AbstractFilterTest
 | 
			
		||||
            $data[] = [
 | 
			
		||||
                'types' => new ArrayCollection([$a]),
 | 
			
		||||
            ];
 | 
			
		||||
            /*$data[] = [
 | 
			
		||||
                'types' => [$a],
 | 
			
		||||
            ];*/
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $data;
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ use Chill\AsideActivityBundle\Repository\AsideActivityCategoryRepository;
 | 
			
		||||
use Chill\AsideActivityBundle\Templating\Entity\CategoryRender;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
@@ -76,7 +77,7 @@ class ByActivityTypeFilter implements FilterInterface
 | 
			
		||||
    {
 | 
			
		||||
        $types = array_map(
 | 
			
		||||
            fn (AsideActivityCategory $t): string => $this->translatableStringHelper->localize($t->getTitle()),
 | 
			
		||||
            $data['types']->toArray()
 | 
			
		||||
            $data['types'] instanceof Collection ? $data['types']->toArray() : $data['types']
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return ['export.filter.Filtered by aside activity type: only %type%', [
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ use Chill\MainBundle\Entity\Location;
 | 
			
		||||
use Chill\MainBundle\Entity\User;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Form\Type\PickUserLocationType;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
@@ -54,7 +55,12 @@ final readonly class ByLocationFilter implements FilterInterface
 | 
			
		||||
 | 
			
		||||
    public function describeAction($data, $format = 'string'): array
 | 
			
		||||
    {
 | 
			
		||||
        $locations = $data['locations']->map(fn (Location $l): string => $l->getName());
 | 
			
		||||
        $extractFunction = fn (Location $l): string => $l->getName();
 | 
			
		||||
        if ($data['locations'] instanceof Collection) {
 | 
			
		||||
            $locations = $data['locations']->map($extractFunction);
 | 
			
		||||
        } else {
 | 
			
		||||
            $locations = array_map($extractFunction, $data['locations']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return ['export.filter.Filtered by aside activity location: only %location%', [
 | 
			
		||||
            '%location%' => implode(', ', $locations),
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ use Chill\MainBundle\Entity\User\UserJobHistory;
 | 
			
		||||
use Chill\MainBundle\Entity\UserJob;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
@@ -80,7 +81,7 @@ class ByUserJobFilter implements FilterInterface
 | 
			
		||||
                ', ',
 | 
			
		||||
                array_map(
 | 
			
		||||
                    fn (UserJob $job) => $this->translatableStringHelper->localize($job->getLabel()),
 | 
			
		||||
                    $data['jobs']->toArray()
 | 
			
		||||
                    $data['jobs'] instanceof Collection ? $data['jobs']->toArray() : $data['jobs']
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ]];
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ use Chill\MainBundle\Entity\User\UserScopeHistory;
 | 
			
		||||
use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Repository\ScopeRepositoryInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
@@ -83,7 +84,7 @@ class ByUserScopeFilter implements FilterInterface
 | 
			
		||||
                ', ',
 | 
			
		||||
                array_map(
 | 
			
		||||
                    fn (Scope $s) => $this->translatableStringHelper->localize($s->getName()),
 | 
			
		||||
                    $data['scopes']->toArray()
 | 
			
		||||
                    $data['scopes'] instanceof Collection ? $data['scopes']->toArray() : $data['scopes']
 | 
			
		||||
                )
 | 
			
		||||
            ),
 | 
			
		||||
        ]];
 | 
			
		||||
 
 | 
			
		||||
@@ -18,12 +18,15 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\Routing\Annotation\Route;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class CustomFieldController.
 | 
			
		||||
 */
 | 
			
		||||
class CustomFieldController extends AbstractController
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a new CustomField entity.
 | 
			
		||||
     *
 | 
			
		||||
@@ -40,13 +43,13 @@ class CustomFieldController extends AbstractController
 | 
			
		||||
            $em->persist($entity);
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')
 | 
			
		||||
            $this->addFlash('success', $this->translator
 | 
			
		||||
                ->trans('The custom field has been created'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirectToRoute('customfieldsgroup_show', ['id' => $entity->getCustomFieldsGroup()->getId()]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->addFlash('error', $this->get('translator')
 | 
			
		||||
        $this->addFlash('error', $this->translator
 | 
			
		||||
            ->trans('The custom field form contains errors'));
 | 
			
		||||
 | 
			
		||||
        return $this->render('@ChillCustomFields/CustomField/new.html.twig', [
 | 
			
		||||
@@ -130,13 +133,13 @@ class CustomFieldController extends AbstractController
 | 
			
		||||
        if ($editForm->isSubmitted() && $editForm->isValid()) {
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')
 | 
			
		||||
            $this->addFlash('success', $this->translator
 | 
			
		||||
                ->trans('The custom field has been updated'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirectToRoute('customfield_edit', ['id' => $id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->addFlash('error', $this->get('translator')
 | 
			
		||||
        $this->addFlash('error', $this->translator
 | 
			
		||||
            ->trans('The custom field form contains errors'));
 | 
			
		||||
 | 
			
		||||
        return $this->render('@ChillCustomFields/CustomField/edit.html.twig', [
 | 
			
		||||
 
 | 
			
		||||
@@ -118,7 +118,7 @@ class EventController extends AbstractController
 | 
			
		||||
 | 
			
		||||
                $this->addFlash(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')
 | 
			
		||||
                    $this->translator
 | 
			
		||||
                        ->trans('The event has been sucessfully removed')
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
@@ -249,7 +249,7 @@ class EventController extends AbstractController
 | 
			
		||||
            $em->persist($entity);
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')
 | 
			
		||||
            $this->addFlash('success', $this->translator
 | 
			
		||||
                ->trans('The event was created'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirectToRoute('chill_event__event_show', ['event_id' => $entity->getId()]);
 | 
			
		||||
@@ -364,7 +364,7 @@ class EventController extends AbstractController
 | 
			
		||||
        if ($editForm->isValid()) {
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')
 | 
			
		||||
            $this->addFlash('success', $this->translator
 | 
			
		||||
                ->trans('The event was updated'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirectToRoute('chill_event__event_edit', ['event_id' => $event_id]);
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 | 
			
		||||
use Symfony\Component\Form\FormInterface;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class ParticipationController.
 | 
			
		||||
@@ -32,7 +33,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
    /**
 | 
			
		||||
     * ParticipationController constructor.
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(private readonly LoggerInterface $logger) {}
 | 
			
		||||
    public function __construct(private readonly LoggerInterface $logger, private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @\Symfony\Component\Routing\Annotation\Route(path="/{_locale}/event/participation/create", name="chill_event_participation_create")
 | 
			
		||||
@@ -177,7 +178,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans(
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans(
 | 
			
		||||
                'The participations were created'
 | 
			
		||||
            ));
 | 
			
		||||
 | 
			
		||||
@@ -211,7 +212,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
            $em->persist($participation);
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans(
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans(
 | 
			
		||||
                'The participation was created'
 | 
			
		||||
            ));
 | 
			
		||||
 | 
			
		||||
@@ -260,7 +261,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
 | 
			
		||||
                $this->addFlash(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')
 | 
			
		||||
                    $this->translator
 | 
			
		||||
                        ->trans('The participation has been sucessfully removed')
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
@@ -340,7 +341,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
        switch ($event->getParticipations()->count()) {
 | 
			
		||||
            case 0:
 | 
			
		||||
                // if there aren't any participation, redirect to the 'show' view with an add flash
 | 
			
		||||
                $this->addFlash('warning', $this->get('translator')
 | 
			
		||||
                $this->addFlash('warning', $this->translator
 | 
			
		||||
                    ->trans('There are no participation to edit for this event'));
 | 
			
		||||
 | 
			
		||||
                return $this->redirectToRoute(
 | 
			
		||||
@@ -434,7 +435,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
 | 
			
		||||
            $em->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans(
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans(
 | 
			
		||||
                'The participation was updated'
 | 
			
		||||
            ));
 | 
			
		||||
 | 
			
		||||
@@ -480,7 +481,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
        if ($form->isSubmitted() && $form->isValid()) {
 | 
			
		||||
            $this->getDoctrine()->getManager()->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans('The participations '
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans('The participations '
 | 
			
		||||
                    .'have been successfully updated.'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirectToRoute(
 | 
			
		||||
@@ -652,7 +653,7 @@ class ParticipationController extends AbstractController
 | 
			
		||||
 | 
			
		||||
        if ([] === $newParticipations) {
 | 
			
		||||
            // if we do not have nay participants, redirect to event view
 | 
			
		||||
            $this->addFlash('error', $this->get('translator')->trans(
 | 
			
		||||
            $this->addFlash('error', $this->translator->trans(
 | 
			
		||||
                'None of the requested people may participate '
 | 
			
		||||
                    .'the event: they are maybe already participating.'
 | 
			
		||||
            ));
 | 
			
		||||
 
 | 
			
		||||
@@ -32,12 +32,13 @@ use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Component\Routing\Annotation\Route;
 | 
			
		||||
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
 | 
			
		||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class UserController extends CRUDController
 | 
			
		||||
{
 | 
			
		||||
    final public const FORM_GROUP_CENTER_COMPOSED = 'composed_groupcenter';
 | 
			
		||||
 | 
			
		||||
    public function __construct(private readonly LoggerInterface $logger, private readonly ValidatorInterface $validator, private readonly UserPasswordEncoderInterface $passwordEncoder, private readonly UserRepository $userRepository, protected ParameterBagInterface $parameterBag) {}
 | 
			
		||||
    public function __construct(private readonly LoggerInterface $logger, private readonly ValidatorInterface $validator, private readonly UserPasswordEncoderInterface $passwordEncoder, private readonly UserRepository $userRepository, protected ParameterBagInterface $parameterBag, private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @Route("/{_locale}/admin/main/user/{uid}/add_link_groupcenter",
 | 
			
		||||
@@ -65,7 +66,7 @@ class UserController extends CRUDController
 | 
			
		||||
            if (0 === $this->validator->validate($user)->count()) {
 | 
			
		||||
                $em->flush();
 | 
			
		||||
 | 
			
		||||
                $this->addFlash('success', $this->get('translator')->trans('The '
 | 
			
		||||
                $this->addFlash('success', $this->translator->trans('The '
 | 
			
		||||
                    .'permissions have been successfully added to the user'));
 | 
			
		||||
 | 
			
		||||
                $returnPathParams = $request->query->has('returnPath') ?
 | 
			
		||||
@@ -115,14 +116,14 @@ class UserController extends CRUDController
 | 
			
		||||
        try {
 | 
			
		||||
            $user->removeGroupCenter($groupCenter);
 | 
			
		||||
        } catch (\RuntimeException $ex) {
 | 
			
		||||
            $this->addFlash('error', $this->get('translator')->trans($ex->getMessage()));
 | 
			
		||||
            $this->addFlash('error', $this->translator->trans($ex->getMessage()));
 | 
			
		||||
 | 
			
		||||
            return $this->redirectToRoute('chill_crud_admin_user_edit', ['id' => $uid]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $em->flush();
 | 
			
		||||
 | 
			
		||||
        $this->addFlash('success', $this->get('translator')
 | 
			
		||||
        $this->addFlash('success', $this->translator
 | 
			
		||||
            ->trans('The permissions where removed.'));
 | 
			
		||||
 | 
			
		||||
        return $this->redirectToRoute('chill_crud_admin_user_edit', ['id' => $uid]);
 | 
			
		||||
@@ -207,7 +208,7 @@ class UserController extends CRUDController
 | 
			
		||||
            $user->setCurrentLocation($currentLocation);
 | 
			
		||||
 | 
			
		||||
            $this->getDoctrine()->getManager()->flush();
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans('Current location successfully updated'));
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans('Current location successfully updated'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirect(
 | 
			
		||||
                $request->query->has('returnPath') ? $request->query->get('returnPath') :
 | 
			
		||||
@@ -243,7 +244,7 @@ class UserController extends CRUDController
 | 
			
		||||
            $user->setPassword($this->passwordEncoder->encodePassword($user, $password));
 | 
			
		||||
 | 
			
		||||
            $this->getDoctrine()->getManager()->flush();
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans('Password successfully updated!'));
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans('Password successfully updated!'));
 | 
			
		||||
 | 
			
		||||
            return $this->redirect(
 | 
			
		||||
                $request->query->has('returnPath') ? $request->query->get('returnPath') :
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,8 @@ class PersonMoveRelationHandler implements PersonMoveSqlHandlerInterface
 | 
			
		||||
    public function getSqls(string $className, string $field, Person $from, Person $to): array
 | 
			
		||||
    {
 | 
			
		||||
        $insertSql = sprintf(<<<'SQL'
 | 
			
		||||
            INSERT INTO chill_person_relationships (id, relation_id, reverse, fromperson_id, toperson_id)
 | 
			
		||||
                SELECT nextval('chill_person_relationships_id_seq'), relation_id, reverse, fromperson_id, toperson_id
 | 
			
		||||
            INSERT INTO chill_person_relationships (id, relation_id, reverse, createdat, createdby_id, fromperson_id, toperson_id)
 | 
			
		||||
                SELECT nextval('chill_person_relationships_id_seq'), relation_id, reverse, createdat, createdby_id, fromperson_id, toperson_id
 | 
			
		||||
                    FROM chill_person_relationships cpr
 | 
			
		||||
                    WHERE fromperson_id = %d OR toperson_id = %d
 | 
			
		||||
                        AND NOT EXISTS (
 | 
			
		||||
 
 | 
			
		||||
@@ -113,7 +113,7 @@ class AccompanyingCourseController extends \Symfony\Bundle\FrameworkBundle\Contr
 | 
			
		||||
                $em->remove($accompanyingCourse);
 | 
			
		||||
                $em->flush();
 | 
			
		||||
 | 
			
		||||
                $this->addFlash('success', $this->get('translator')
 | 
			
		||||
                $this->addFlash('success', $this->translator
 | 
			
		||||
                    ->trans('The accompanying course has been successfully removed.'));
 | 
			
		||||
 | 
			
		||||
                if (null !== $person_id) {
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,7 @@ use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Component\Validator\ConstraintViolationListInterface;
 | 
			
		||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
use function array_filter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -33,24 +34,12 @@ use function array_filter;
 | 
			
		||||
 */
 | 
			
		||||
class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var EventDispatcherInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $eventDispatcher;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var ValidatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $validator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        protected AccompanyingPeriodACLAwareRepositoryInterface $accompanyingPeriodACLAwareRepository,
 | 
			
		||||
        EventDispatcherInterface $eventDispatcher,
 | 
			
		||||
        ValidatorInterface $validator
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->eventDispatcher = $eventDispatcher;
 | 
			
		||||
        $this->validator = $validator;
 | 
			
		||||
    }
 | 
			
		||||
        private readonly EventDispatcherInterface $eventDispatcher,
 | 
			
		||||
        private readonly ValidatorInterface $validator,
 | 
			
		||||
        private readonly TranslatorInterface $translator
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws \Exception
 | 
			
		||||
@@ -65,7 +54,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
 | 
			
		||||
        if (false === $person->isOpen()) {
 | 
			
		||||
            $this->get('session')->getFlashBag()
 | 
			
		||||
                ->add('error', $this->get('translator')
 | 
			
		||||
                ->add('error', $this->translator
 | 
			
		||||
                    ->trans(
 | 
			
		||||
                        'Beware period is closed',
 | 
			
		||||
                        ['%name%' => $person->__toString()]
 | 
			
		||||
@@ -92,7 +81,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
 | 
			
		||||
                if (0 === \count($errors)) {
 | 
			
		||||
                    $this->get('session')->getFlashBag()
 | 
			
		||||
                        ->add('success', $this->get('translator')
 | 
			
		||||
                        ->add('success', $this->translator
 | 
			
		||||
                            ->trans('An accompanying period has been closed.', [
 | 
			
		||||
                                '%name%' => $person->__toString(),
 | 
			
		||||
                            ]));
 | 
			
		||||
@@ -104,7 +93,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                    ]);
 | 
			
		||||
                }
 | 
			
		||||
                $this->get('session')->getFlashBag()
 | 
			
		||||
                    ->add('error', $this->get('translator')
 | 
			
		||||
                    ->add('error', $this->translator
 | 
			
		||||
                        ->trans('Error! Period not closed!'));
 | 
			
		||||
 | 
			
		||||
                foreach ($errors as $error) {
 | 
			
		||||
@@ -115,7 +104,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                $this->get('session')->getFlashBag()
 | 
			
		||||
                    ->add(
 | 
			
		||||
                        'error',
 | 
			
		||||
                        $this->get('translator')
 | 
			
		||||
                        $this->translator
 | 
			
		||||
                            ->trans('Pediod closing form is not valid')
 | 
			
		||||
                    );
 | 
			
		||||
 | 
			
		||||
@@ -175,7 +164,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                $em->flush();
 | 
			
		||||
                $flashBag->add(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')->trans(
 | 
			
		||||
                    $this->translator->trans(
 | 
			
		||||
                        'A period has been created.'
 | 
			
		||||
                    )
 | 
			
		||||
                );
 | 
			
		||||
@@ -184,7 +173,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                    'person_id' => $person->getId(),
 | 
			
		||||
                ]);
 | 
			
		||||
            }
 | 
			
		||||
            $flashBag->add('error', $this->get('translator')
 | 
			
		||||
            $flashBag->add('error', $this->translator
 | 
			
		||||
                ->trans('Error! Period not created!'));
 | 
			
		||||
 | 
			
		||||
            foreach ($errors as $error) {
 | 
			
		||||
@@ -244,7 +233,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
        // in case the person is already open
 | 
			
		||||
        if ($person->isOpen()) {
 | 
			
		||||
            $this->get('session')->getFlashBag()
 | 
			
		||||
                ->add('error', $this->get('translator')
 | 
			
		||||
                ->add('error', $this->translator
 | 
			
		||||
                    ->trans(
 | 
			
		||||
                        'Error! Period %name% is not closed ; it can be open',
 | 
			
		||||
                        ['%name%' => $person->__toString()]
 | 
			
		||||
@@ -276,7 +265,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
 | 
			
		||||
                if (\count($errors) <= 0) {
 | 
			
		||||
                    $this->get('session')->getFlashBag()
 | 
			
		||||
                        ->add('success', $this->get('translator')
 | 
			
		||||
                        ->add('success', $this->translator
 | 
			
		||||
                            ->trans(
 | 
			
		||||
                                'An accompanying period has been opened.',
 | 
			
		||||
                                ['%name%' => $person->__toString()]
 | 
			
		||||
@@ -289,7 +278,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                    ]);
 | 
			
		||||
                }
 | 
			
		||||
                $this->get('session')->getFlashBag()
 | 
			
		||||
                    ->add('error', $this->get('translator')
 | 
			
		||||
                    ->add('error', $this->translator
 | 
			
		||||
                        ->trans('Period not opened'));
 | 
			
		||||
 | 
			
		||||
                foreach ($errors as $error) {
 | 
			
		||||
@@ -300,7 +289,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                $this->get('session')->getFlashBag()
 | 
			
		||||
                    ->add(
 | 
			
		||||
                        'error',
 | 
			
		||||
                        $this->get('translator')
 | 
			
		||||
                        $this->translator
 | 
			
		||||
                            ->trans('Period not opened : form is invalid')
 | 
			
		||||
                    );
 | 
			
		||||
            }
 | 
			
		||||
@@ -340,7 +329,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
 | 
			
		||||
            $this->getDoctrine()->getManager()->flush();
 | 
			
		||||
 | 
			
		||||
            $this->addFlash('success', $this->get('translator')->trans(
 | 
			
		||||
            $this->addFlash('success', $this->translator->trans(
 | 
			
		||||
                'The period has been re-opened'
 | 
			
		||||
            ));
 | 
			
		||||
 | 
			
		||||
@@ -413,7 +402,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
 | 
			
		||||
                $flashBag->add(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')->trans('An accompanying period has been updated.')
 | 
			
		||||
                    $this->translator->trans('An accompanying period has been updated.')
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                return $this->redirectToRoute('chill_person_accompanying_period_list', [
 | 
			
		||||
@@ -421,7 +410,7 @@ class AccompanyingPeriodController extends AbstractController
 | 
			
		||||
                ]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $flashBag->add('error', $this->get('translator')
 | 
			
		||||
            $flashBag->add('error', $this->translator
 | 
			
		||||
                ->trans('Error when updating the period'));
 | 
			
		||||
 | 
			
		||||
            foreach ($errors as $error) {
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class PersonAddressController
 | 
			
		||||
@@ -25,18 +26,10 @@ use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		||||
 */
 | 
			
		||||
class PersonAddressController extends AbstractController
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var ValidatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $validator;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * PersonAddressController constructor.
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(ValidatorInterface $validator)
 | 
			
		||||
    {
 | 
			
		||||
        $this->validator = $validator;
 | 
			
		||||
    }
 | 
			
		||||
    public function __construct(private readonly ValidatorInterface $validator, private readonly TranslatorInterface $translator) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @\Symfony\Component\Routing\Annotation\Route(path="/{_locale}/person/{person_id}/address/create", name="chill_person_address_create", methods={"POST"})
 | 
			
		||||
@@ -77,14 +70,14 @@ class PersonAddressController extends AbstractController
 | 
			
		||||
 | 
			
		||||
                $this->addFlash(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')->trans('The new address was created successfully')
 | 
			
		||||
                    $this->translator->trans('The new address was created successfully')
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                return $this->redirectToRoute('chill_person_address_list', [
 | 
			
		||||
                    'person_id' => $person->getId(),
 | 
			
		||||
                ]);
 | 
			
		||||
            } else {
 | 
			
		||||
                $this->addFlash('error', $this->get('translator')
 | 
			
		||||
                $this->addFlash('error', $this->translator
 | 
			
		||||
                    ->trans('Error! Address not created!'));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -213,7 +206,7 @@ class PersonAddressController extends AbstractController
 | 
			
		||||
                $this->getDoctrine()->getManager()
 | 
			
		||||
                    ->flush();
 | 
			
		||||
 | 
			
		||||
                $this->addFlash('success', $this->get('translator')->trans(
 | 
			
		||||
                $this->addFlash('success', $this->translator->trans(
 | 
			
		||||
                    'The address has been successfully updated'
 | 
			
		||||
                ));
 | 
			
		||||
 | 
			
		||||
@@ -221,7 +214,7 @@ class PersonAddressController extends AbstractController
 | 
			
		||||
                    'person_id' => $person->getId(),
 | 
			
		||||
                ]);
 | 
			
		||||
            } else {
 | 
			
		||||
                $this->addFlash('error', $this->get('translator')
 | 
			
		||||
                $this->addFlash('error', $this->translator
 | 
			
		||||
                    ->trans('Error when updating the period'));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,6 @@ class PersonDuplicateController extends \Symfony\Bundle\FrameworkBundle\Controll
 | 
			
		||||
            $connection->beginTransaction();
 | 
			
		||||
 | 
			
		||||
            foreach ($sqls as $sql) {
 | 
			
		||||
                dump($sql);
 | 
			
		||||
                $connection->executeQuery($sql);
 | 
			
		||||
            }
 | 
			
		||||
            $connection->commit();
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
 | 
			
		||||
use Chill\PersonBundle\Export\Declarations;
 | 
			
		||||
use Chill\PersonBundle\Form\Type\PickSocialIssueType;
 | 
			
		||||
use Chill\PersonBundle\Templating\Entity\SocialIssueRender;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Component\Form\FormBuilderInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
@@ -50,7 +51,9 @@ class SocialIssueFilter implements FilterInterface
 | 
			
		||||
        $qb->andWhere($clause)
 | 
			
		||||
            ->setParameter(
 | 
			
		||||
                'socialissues',
 | 
			
		||||
                SocialIssue::getDescendantsWithThisForIssues($data['accepted_socialissues']->toArray())
 | 
			
		||||
                SocialIssue::getDescendantsWithThisForIssues(
 | 
			
		||||
                    $data['accepted_socialissues'] instanceof Collection ? $data['accepted_socialissues']->toArray() : $data['accepted_socialissues']
 | 
			
		||||
                )
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Repository\UserJobRepositoryInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
 | 
			
		||||
use Chill\PersonBundle\Export\Declarations;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\Query\Expr\Join;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
@@ -105,7 +106,7 @@ class UserJobFilter implements FilterInterface
 | 
			
		||||
                    ', ',
 | 
			
		||||
                    array_map(
 | 
			
		||||
                        fn (UserJob $job) => $this->translatableStringHelper->localize($job->getLabel()),
 | 
			
		||||
                        $data['jobs']->toArray()
 | 
			
		||||
                        $data['jobs'] instanceof Collection ? $data['jobs']->toArray() : $data['jobs']
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            ],
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@ use Chill\MainBundle\Export\FilterInterface;
 | 
			
		||||
use Chill\MainBundle\Repository\ScopeRepositoryInterface;
 | 
			
		||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
 | 
			
		||||
use Chill\PersonBundle\Export\Declarations;
 | 
			
		||||
use Doctrine\Common\Collections\Collection;
 | 
			
		||||
use Doctrine\ORM\Query\Expr\Join;
 | 
			
		||||
use Doctrine\ORM\QueryBuilder;
 | 
			
		||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 | 
			
		||||
@@ -104,7 +105,7 @@ class UserScopeFilter implements FilterInterface
 | 
			
		||||
                    ', ',
 | 
			
		||||
                    array_map(
 | 
			
		||||
                        fn (Scope $s) => $this->translatableStringHelper->localize($s->getName()),
 | 
			
		||||
                        $data['scopes']->toArray()
 | 
			
		||||
                        $data['scopes'] instanceof Collection ? $data['scopes']->toArray() : $data['scopes']
 | 
			
		||||
                    )
 | 
			
		||||
                ),
 | 
			
		||||
            ],
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,7 @@ final class SocialIssueFilterTest extends AbstractFilterTest
 | 
			
		||||
            ->getResult();
 | 
			
		||||
 | 
			
		||||
        yield ['accepted_socialissues' => new ArrayCollection($array)];
 | 
			
		||||
        yield ['accepted_socialissues' => $array];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getQueryBuilders(): array
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,11 @@ final class UserJobFilterTest extends AbstractFilterTest
 | 
			
		||||
            'jobs' => new ArrayCollection($jobs),
 | 
			
		||||
            'date_calc' => new RollingDate(RollingDate::T_TODAY),
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        yield [
 | 
			
		||||
            'jobs' => $jobs,
 | 
			
		||||
            'date_calc' => new RollingDate(RollingDate::T_TODAY),
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getQueryBuilders(): array
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,10 @@ final class UserScopeFilterTest extends AbstractFilterTest
 | 
			
		||||
                'date_calc' => new RollingDate(RollingDate::T_TODAY),
 | 
			
		||||
                'scopes' => new ArrayCollection($scopes),
 | 
			
		||||
            ],
 | 
			
		||||
            [
 | 
			
		||||
                'date_calc' => new RollingDate(RollingDate::T_TODAY),
 | 
			
		||||
                'scopes' => $scopes,
 | 
			
		||||
            ],
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,39 +22,22 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
 | 
			
		||||
use Symfony\Component\Form\Extension\Core\Type\FormType;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class ReportController.
 | 
			
		||||
 */
 | 
			
		||||
class ReportController extends AbstractController
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationHelper
 | 
			
		||||
     */
 | 
			
		||||
    protected $authorizationHelper;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var EventDispatcherInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $eventDispatcher;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var PaginatorFactory
 | 
			
		||||
     */
 | 
			
		||||
    protected $paginator;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * ReportController constructor.
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        EventDispatcherInterface $eventDispatcher,
 | 
			
		||||
        AuthorizationHelper $authorizationHelper,
 | 
			
		||||
        PaginatorFactory $paginator
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->eventDispatcher = $eventDispatcher;
 | 
			
		||||
        $this->authorizationHelper = $authorizationHelper;
 | 
			
		||||
        $this->paginator = $paginator;
 | 
			
		||||
    }
 | 
			
		||||
        private readonly EventDispatcherInterface $eventDispatcher,
 | 
			
		||||
        private readonly AuthorizationHelper $authorizationHelper,
 | 
			
		||||
        private readonly PaginatorFactory $paginator,
 | 
			
		||||
        private readonly TranslatorInterface $translator
 | 
			
		||||
    ) {}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Create a new report for a given person and of a given type.
 | 
			
		||||
@@ -98,7 +81,7 @@ class ReportController extends AbstractController
 | 
			
		||||
                ->getFlashBag()
 | 
			
		||||
                ->add(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')
 | 
			
		||||
                    $this->translator
 | 
			
		||||
                        ->trans('Success : report created!')
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
@@ -108,7 +91,7 @@ class ReportController extends AbstractController
 | 
			
		||||
        $this->get('session')
 | 
			
		||||
            ->getFlashBag()->add(
 | 
			
		||||
                'error',
 | 
			
		||||
                $this->get('translator')
 | 
			
		||||
                $this->translator
 | 
			
		||||
                    ->trans('The form is not valid. The report has not been created !')
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
@@ -135,11 +118,11 @@ class ReportController extends AbstractController
 | 
			
		||||
        $report = $em->getRepository('ChillReportBundle:Report')->find($report_id);
 | 
			
		||||
 | 
			
		||||
        if (!$report) {
 | 
			
		||||
            throw $this->createNotFoundException($this->get('translator')->trans('Unable to find this report.'));
 | 
			
		||||
            throw $this->createNotFoundException($this->translator->trans('Unable to find this report.'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ((int) $person_id !== (int) $report->getPerson()->getId()) {
 | 
			
		||||
            throw new \RuntimeException($this->get('translator')->trans('This is not the report of the person.'), 1);
 | 
			
		||||
            throw new \RuntimeException($this->translator->trans('This is not the report of the person.'), 1);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->denyAccessUnlessGranted('CHILL_REPORT_UPDATE', $report);
 | 
			
		||||
@@ -418,7 +401,7 @@ class ReportController extends AbstractController
 | 
			
		||||
        $report = $em->getRepository('ChillReportBundle:Report')->find($report_id);
 | 
			
		||||
 | 
			
		||||
        if (!$report) {
 | 
			
		||||
            throw $this->createNotFoundException($this->get('translator')->trans('Unable to find this report.'));
 | 
			
		||||
            throw $this->createNotFoundException($this->translator->trans('Unable to find this report.'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->denyAccessUnlessGranted('CHILL_REPORT_UPDATE', $report);
 | 
			
		||||
@@ -433,7 +416,7 @@ class ReportController extends AbstractController
 | 
			
		||||
                ->getFlashBag()
 | 
			
		||||
                ->add(
 | 
			
		||||
                    'success',
 | 
			
		||||
                    $this->get('translator')
 | 
			
		||||
                    $this->translator
 | 
			
		||||
                        ->trans('Success : report updated!')
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
@@ -453,7 +436,7 @@ class ReportController extends AbstractController
 | 
			
		||||
            ->getFlashBag()
 | 
			
		||||
            ->add(
 | 
			
		||||
                'error',
 | 
			
		||||
                $this->get('translator')
 | 
			
		||||
                $this->translator
 | 
			
		||||
                    ->trans('The form is not valid. The report has not been updated !')
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
@@ -480,7 +463,7 @@ class ReportController extends AbstractController
 | 
			
		||||
        $entity = $em->getRepository('ChillReportBundle:Report')->find($report_id);
 | 
			
		||||
 | 
			
		||||
        if (!$entity || !$person) {
 | 
			
		||||
            throw $this->createNotFoundException($this->get('translator')->trans('Unable to find this report.'));
 | 
			
		||||
            throw $this->createNotFoundException($this->translator->trans('Unable to find this report.'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->denyAccessUnlessGranted('CHILL_REPORT_SEE', $entity);
 | 
			
		||||
 
 | 
			
		||||
@@ -100,7 +100,7 @@ class ThirdPartyType extends AbstractType
 | 
			
		||||
                    'label' => 'thirdparty.Contact data are confidential',
 | 
			
		||||
                ]);
 | 
			
		||||
 | 
			
		||||
            // Institutional ThirdParty (parent)
 | 
			
		||||
        // Institutional ThirdParty (parent)
 | 
			
		||||
        } else {
 | 
			
		||||
            $builder
 | 
			
		||||
                ->add('nameCompany', TextType::class, [
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,16 @@ class ChillDocumentLockManager implements DocumentLockManagerInterface
 | 
			
		||||
 | 
			
		||||
    public function hasLock(Document $document, RequestInterface $request): bool
 | 
			
		||||
    {
 | 
			
		||||
        return $this->redis->exists($this->getCacheId($document)) > 0;
 | 
			
		||||
        $r = $this->redis->exists($this->getCacheId($document));
 | 
			
		||||
 | 
			
		||||
        if (is_bool($r)) {
 | 
			
		||||
            return $r;
 | 
			
		||||
        }
 | 
			
		||||
        if (is_int($r)) {
 | 
			
		||||
            return $r > 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        throw new \RuntimeException('data type not supported');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setLock(Document $document, string $lockId, RequestInterface $request): bool
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user