mapEventInformations($event, $freemiumEvent); $this->mapEventPlaceInformations($event, $freemiumEvent); } /** * Mapping des informations générales. * * @param Event $event : objet target * @param FreemiumEvent $freemiumEvent : objet source */ protected function mapEventInformations(Event $event, FreemiumEvent $freemiumEvent): void { // General informations $event->setName($freemiumEvent->name); $event->setOrganization($freemiumEvent->organization); $event->setDatetimeStart($freemiumEvent->datetimeStart); $event->setDatetimeEnd($freemiumEvent->datetimeEnd); $event->setDescription($freemiumEvent->description); $event->setImage($freemiumEvent->image); $event->setUrl($freemiumEvent->url); $event->setUrlTicket($freemiumEvent->urlTicket); $event->setPricing($freemiumEvent->pricing); $event->setPriceMini($freemiumEvent->priceMini); $event->setPriceMaxi($freemiumEvent->priceMaxi); $event->setGender($freemiumEvent->gender); $event->setVisibility(VisibilityEnum::PUBLIC_VISIBILITY); $event->setUuid(Uuid::uuid4()->toString()); // Catégories $event->removeAllCategories(); foreach ($freemiumEvent->categories as $category) { $event->addCategory($category); } } /** * Recherche et mapping du lieu de lévénement. */ protected function mapEventPlaceInformations(Event $event, FreemiumEvent $freemiumEvent): void { $place = $this->getPlace($freemiumEvent); if ($place !== null) { $this->mapPlaceInformations($place, $freemiumEvent); $this->em->persist($place); } $event->setPlace($place); } /** * Mapping des informations du lieux et de son adresse postale. */ protected function mapPlaceInformations(Place $place, FreemiumEvent $freemiumEvent): void { $addressPostal = $this->getAddressPostal($place); // Mapping des informations de l'adresse $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); // Mapping des informations du lieu $place ->setOrganization($freemiumEvent->organization) ->setName($freemiumEvent->placeName) ->setAddressPostal($addressPostal); } /** * Récupération de la place si définie, sinon on en créer une si un minimum d'information est fournies. */ protected function getPlace(FreemiumEvent $freemiumEvent): ?Place { if ($freemiumEvent->place) { return $freemiumEvent->place; } elseif ( $freemiumEvent->placeName || $freemiumEvent->streetAddress || $freemiumEvent->streetAddressSecond || $freemiumEvent->streetAddressThird || $freemiumEvent->postalCode || $freemiumEvent->addressCity ) { return new Place(); } return null; } /** * Récupération de l'adresse postale si définie, sinon on en créer une nouvelle. */ protected function getAddressPostal(Place $place): AddressPostal { if ($place->getAddressPostal()) { return $place->getAddressPostal(); } return new AddressPostal(); } }