Ver código fonte

fix add categories

Vincent 4 meses atrás
pai
commit
7b5b89d1a7

+ 12 - 6
config/packages/liip_imagine.yaml

@@ -37,22 +37,28 @@ liip_imagine:
                     widen: 800
         crop_sm:
             filters:
+                auto_rotate: ~
                 crop:
                     size: ~
                     start: ~
-                relative_resize:
-                    widen: 100
+                thumbnail:
+                    size: [ 100, 100 ]
+                    mode: inset
         crop_md:
             filters:
+                auto_rotate: ~
                 crop:
                     size: ~
                     start: ~
-                relative_resize:
-                    widen: 300
+                thumbnail:
+                    size: [ 300, 200 ]
+                    mode: inset
         crop_lg:
             filters:
+                auto_rotate: ~
                 crop:
                     size: ~
                     start: ~
-                relative_resize:
-                    widen: 800
+                thumbnail:
+                    size: [ 800, 600 ]
+                    mode: inset

+ 4 - 4
src/ApiResources/Freemium/FreemiumEvent.php

@@ -26,7 +26,6 @@ use App\Enum\Booking\PricingEventEnum;
 use App\State\Processor\Freemium\FreemiumEventProcessor;
 use App\State\Provider\Freemium\FreemiumEventProvider;
 use Doctrine\Common\Collections\ArrayCollection;
-use Doctrine\Common\Collections\Collection;
 use JetBrains\PhpStorm\Pure;
 use Symfony\Component\ObjectMapper\Attribute\Map;
 use App\Validator\Constraints as OpentalentAssert;
@@ -116,7 +115,7 @@ class FreemiumEvent implements ApiResourcesInterface
     public ?float $longitude = null;
 
     #[Map(if: false)]
-    public Collection $categories;
+    public ArrayCollection $categories;
 
     public ?PricingEventEnum $pricing = null;
 
@@ -130,9 +129,10 @@ class FreemiumEvent implements ApiResourcesInterface
         $this->categories = new ArrayCollection();
     }
 
-    public function getCategories(): Collection
+    public function getCategories(): array
     {
-        return $this->categories;
+        // retourne un tableau proprement indexé
+        return array_values($this->categories->toArray());
     }
 
     public function addCategory(Categories $categories): self

+ 3 - 2
src/Service/ApiResourceBuilder/Freemium/FreemiumEventBuilder.php

@@ -23,10 +23,11 @@ class FreemiumEventBuilder
      * @param Event $event : objet target
      * @param FreemiumEvent $freemiumEvent : objet source
      */
-    public function mapInformations(Event $event, FreemiumEvent $freemiumEvent): void
+    public function mapInformations(Event $event, FreemiumEvent $freemiumEvent): FreemiumEvent
     {
         $this->mapEventInformations( $event, $freemiumEvent);
         $this->mapEventPlaceInformations( $event, $freemiumEvent);
+        return $freemiumEvent;
     }
 
     /**
@@ -35,7 +36,7 @@ class FreemiumEventBuilder
      * @param Event $event : objet target
      * @param FreemiumEvent $freemiumEvent : objet source
      */
-    private function mapEventInformations(Event $event, FreemiumEvent $freemiumEvent): void
+    private function mapEventInformations(Event $event, FreemiumEvent $freemiumEvent)
     {
         //General informations
         $event->setName($freemiumEvent->name);

+ 5 - 3
src/State/Processor/Freemium/FreemiumEventProcessor.php

@@ -12,6 +12,7 @@ use App\Entity\Booking\Event;
 use App\Repository\Booking\EventRepository;
 use App\Service\ApiResourceBuilder\Freemium\FreemiumEventBuilder;
 use App\State\Processor\EntityProcessor;
+use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\ORM\EntityManagerInterface;
 
 /**
@@ -43,17 +44,18 @@ class FreemiumEventProcessor extends EntityProcessor
 
         if ($operation instanceof Delete) {
             $this->entityManager->remove($event);
+            $freemiumEvent = new FreemiumEvent();
         }else{
-            $this->freemiumEventBuilder->mapInformations($event, $data);
+            $freemiumEvent = $this->freemiumEventBuilder->mapInformations($event, $data);
             $this->entityManager->persist($event);
         }
 
         $this->entityManager->flush();
 
         if ($operation instanceof Post) {
-            $data->id = $event->getId();
+            $freemiumEvent->id = $event->getId();
         }
 
-        return $data;
+        return $freemiumEvent;
     }
 }

+ 8 - 5
src/State/Provider/Freemium/FreemiumEventProvider.php

@@ -6,17 +6,14 @@ namespace App\State\Provider\Freemium;
 
 use ApiPlatform\Metadata\GetCollection;
 use ApiPlatform\Metadata\Operation;
-use ApiPlatform\State\Pagination\PaginatorInterface;
 use ApiPlatform\State\Pagination\TraversablePaginator;
 use ApiPlatform\State\ProviderInterface;
-use ApiPlatform\Metadata\IriConverterInterface;
 use App\ApiResources\Freemium\FreemiumEvent;
-use App\ApiResources\Freemium\FreemiumPlace;
 use App\Entity\Booking\Event;
-use App\Entity\Core\Categories;
 use App\Repository\Booking\EventRepository;
 use App\Service\Doctrine\FiltersConfigurationService;
 use App\State\Provider\ProviderUtils;
+use Doctrine\Common\Collections\ArrayCollection;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\ObjectMapper\ObjectMapperInterface;
 
@@ -84,7 +81,13 @@ final class FreemiumEventProvider implements ProviderInterface
         $this->filtersConfigurationService->restoreTimeConstraintFilters();
 
         $freemiumEvent = $this->objectMapper->map($event, FreemiumEvent::class);
-        $freemiumEvent->categories = $event->getCategories();
+
+        //Afin de s'assurer que les catégories ne sont plus directement liées à l'Event source.
+        $categories = new ArrayCollection();;
+        foreach ($event->getCategories() as $cat){
+            $categories->add($cat);
+        }
+        $freemiumEvent->categories = $categories;
 
         return $freemiumEvent;
     }