mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 09:18:24 +00:00 
			
		
		
		
	Merge branch 'repository-for-regroupment' into 'master'
Repository for regroupment See merge request Chill-Projet/chill-bundles!559
This commit is contained in:
		
							
								
								
									
										6
									
								
								.changes/unreleased/DX-20230607-130344.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.changes/unreleased/DX-20230607-130344.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| kind: DX | ||||
| body: Add methods to RegroupmentRepository and fullfill Center / Regroupment Doctrine | ||||
|   mapping | ||||
| time: 2023-06-07T13:03:44.177864269+02:00 | ||||
| custom: | ||||
|   Issue: "" | ||||
| @@ -48,12 +48,19 @@ class Center implements HasCenterInterface | ||||
|      */ | ||||
|     private string $name = ''; | ||||
|  | ||||
|     /** | ||||
|      * @var Collection<Regroupment> | ||||
|      * @ORM\ManyToMany(targetEntity=Regroupment::class, mappedBy="centers") | ||||
|      */ | ||||
|     private Collection $regroupments; | ||||
|  | ||||
|     /** | ||||
|      * Center constructor. | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->groupCenters = new \Doctrine\Common\Collections\ArrayCollection(); | ||||
|         $this->groupCenters = new ArrayCollection(); | ||||
|         $this->regroupments = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -106,6 +113,14 @@ class Center implements HasCenterInterface | ||||
|         return $this->name; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return Collection<Regroupment> | ||||
|      */ | ||||
|     public function getRegroupments(): Collection | ||||
|     { | ||||
|         return $this->regroupments; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param $name | ||||
|      * | ||||
|   | ||||
| @@ -22,11 +22,12 @@ use Doctrine\ORM\Mapping as ORM; | ||||
| class Regroupment | ||||
| { | ||||
|     /** | ||||
|      * @var Center | ||||
|      * @ORM\ManyToMany( | ||||
|      *     targetEntity=Center::class | ||||
|      *     targetEntity=Center::class, | ||||
|      *     inversedBy="regroupments" | ||||
|      * ) | ||||
|      * @ORM\Id | ||||
|      * @var Collection<Center> | ||||
|      */ | ||||
|     private Collection $centers; | ||||
|  | ||||
| @@ -52,6 +53,26 @@ class Regroupment | ||||
|         $this->centers = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function addCenter(Center $center): self | ||||
|     { | ||||
|         if (!$this->centers->contains($center)) { | ||||
|             $this->centers->add($center); | ||||
|             $center->getRegroupments()->add($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function removeCenter(Center $center): self | ||||
|     { | ||||
|         if ($this->centers->contains($center)) { | ||||
|             $this->centers->removeElement($center); | ||||
|             $center->getRegroupments()->removeElement($this); | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     public function getCenters(): Collection | ||||
|     { | ||||
|         return $this->centers; | ||||
|   | ||||
| @@ -31,7 +31,7 @@ class RegroupmentType extends AbstractType | ||||
|             ->add('centers', EntityType::class, [ | ||||
|                 'class' => Center::class, | ||||
|                 'multiple' => true, | ||||
|                 'attr' => ['class' => 'select2'], | ||||
|                 'expanded' => true, | ||||
|             ]) | ||||
|             ->add('isActive', CheckboxType::class, [ | ||||
|                 'label' => 'Actif ?', | ||||
|   | ||||
| @@ -14,6 +14,8 @@ namespace Chill\MainBundle\Repository; | ||||
| use Chill\MainBundle\Entity\Regroupment; | ||||
| use Doctrine\ORM\EntityManagerInterface; | ||||
| use Doctrine\ORM\EntityRepository; | ||||
| use Doctrine\ORM\NonUniqueResultException; | ||||
| use Doctrine\ORM\NoResultException; | ||||
| use Doctrine\Persistence\ObjectRepository; | ||||
|  | ||||
| final class RegroupmentRepository implements ObjectRepository | ||||
| @@ -59,6 +61,30 @@ final class RegroupmentRepository implements ObjectRepository | ||||
|         return $this->repository->findOneBy($criteria, $orderBy); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @throws NonUniqueResultException | ||||
|      * @throws NoResultException | ||||
|      */ | ||||
|     public function findOneByName(string $name): ?Regroupment | ||||
|     { | ||||
|         return $this->repository->createQueryBuilder('r') | ||||
|             ->where('LOWER(r.name) = LOWER(:searched)') | ||||
|             ->setParameter('searched', $name) | ||||
|             ->getQuery() | ||||
|             ->getSingleResult(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return array<Regroupment> | ||||
|      */ | ||||
|     public function findRegroupmentAssociatedToNoCenter(): array | ||||
|     { | ||||
|         return $this->repository->createQueryBuilder('r') | ||||
|             ->where('SIZE(r.centers) = 0') | ||||
|             ->getQuery() | ||||
|             ->getResult(); | ||||
|     } | ||||
|  | ||||
|     public function getClassName() | ||||
|     { | ||||
|         return Regroupment::class; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user