|
|
@@ -6,13 +6,14 @@ namespace App\Service\ApiResourceBuilder\Freemium;
|
|
|
|
|
|
use App\ApiResources\Freemium\FreemiumEvent;
|
|
|
use App\Entity\Booking\Event;
|
|
|
+use App\Entity\Core\AddressPostal;
|
|
|
use App\Entity\Place\Place;
|
|
|
-use App\Repository\Place\PlaceRepository;
|
|
|
+use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
|
|
class FreemiumEventBuilder
|
|
|
{
|
|
|
public function __construct(
|
|
|
- private PlaceRepository $placeRepository
|
|
|
+ private EntityManagerInterface $em
|
|
|
)
|
|
|
{
|
|
|
}
|
|
|
@@ -24,19 +25,6 @@ class FreemiumEventBuilder
|
|
|
* @param FreemiumEvent $freemiumEvent : objet source
|
|
|
*/
|
|
|
public function mapInformations(Event $event, FreemiumEvent $freemiumEvent): void
|
|
|
- {
|
|
|
- // Mapping des infos principales
|
|
|
- $this->mapEventInformations($event, $freemiumEvent);
|
|
|
- // $this->mapPlaceInformations($this->getEventPlace($freemiumEvent), $freemiumEvent);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Mapping des informations de Event depuis FreemiumEvent.
|
|
|
- *
|
|
|
- * @param Event $event : objet target
|
|
|
- * @param FreemiumEvent $freemiumEvent : objet source
|
|
|
- */
|
|
|
- private function mapEventInformations(Event $event, FreemiumEvent $freemiumEvent): void
|
|
|
{
|
|
|
$event->setName($freemiumEvent->name);
|
|
|
$event->setOrganization($freemiumEvent->organization);
|
|
|
@@ -49,10 +37,13 @@ class FreemiumEventBuilder
|
|
|
$event->setPricing($freemiumEvent->pricing);
|
|
|
$event->setPriceMini($freemiumEvent->priceMini);
|
|
|
$event->setPriceMaxi($freemiumEvent->priceMaxi);
|
|
|
- //$event->addCategory($freemiumEvent->categories);
|
|
|
- }
|
|
|
|
|
|
- private function mapPlaceInformations(Place $place, FreemiumEvent $freemiumEvent){
|
|
|
+ $event->removeAllCategories();
|
|
|
+ foreach ($freemiumEvent->categories as $category){
|
|
|
+ $event->addCategory($category);
|
|
|
+ }
|
|
|
+
|
|
|
+ $event->setPlace($this->getEventPlace($freemiumEvent));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -60,11 +51,36 @@ class FreemiumEventBuilder
|
|
|
* @return Place|array|object[]
|
|
|
*/
|
|
|
private function getEventPlace(FreemiumEvent $freemiumEvent){
|
|
|
- //@todo: vérifier que l'on ne peux pas mettre n'importe quel ID de place => sécurité avec organisation_id
|
|
|
+
|
|
|
if($freemiumEvent->place){
|
|
|
- return $this->placeRepository->findBy(['id' => $freemiumEvent->place]);
|
|
|
- }else{
|
|
|
- return new Place();
|
|
|
+ return $freemiumEvent->place;
|
|
|
+ }else if(
|
|
|
+ $freemiumEvent->placeName ||
|
|
|
+ $freemiumEvent->streetAddress ||
|
|
|
+ $freemiumEvent->streetAddressSecond ||
|
|
|
+ $freemiumEvent->streetAddressThird ||
|
|
|
+ $freemiumEvent->postalCode ||
|
|
|
+ $freemiumEvent->addressCity
|
|
|
+ )
|
|
|
+ {
|
|
|
+ $place = new Place();
|
|
|
+ $addressPostal = new AddressPostal();
|
|
|
+ $addressPostal
|
|
|
+ ->setStreetAddress($freemiumEvent->streetAddress)
|
|
|
+ ->setStreetAddressSecond($freemiumEvent->streetAddressSecond)
|
|
|
+ ->setStreetAddressThird($freemiumEvent->streetAddressThird)
|
|
|
+ ->setPostalCode($freemiumEvent->postalCode)
|
|
|
+ ->setAddressCity($freemiumEvent->addressCity)
|
|
|
+ ->setAddressCountry($freemiumEvent->addressCountry)
|
|
|
+ ->setLatitude($freemiumEvent->latitude)
|
|
|
+ ->setLongitude($freemiumEvent->longitude)
|
|
|
+ ;
|
|
|
+ $place
|
|
|
+ ->setName($freemiumEvent->placeName)
|
|
|
+ ->setAddressPostal($addressPostal);
|
|
|
+
|
|
|
+ $this->em->persist($place);
|
|
|
+ return $place;
|
|
|
}
|
|
|
}
|
|
|
}
|