mapEventInformations( $event, $freemiumEvent); $this->mapEventPlaceInformations( $event, $freemiumEvent); } /** * Mapping des informations générales. * * @param Event $event : objet target * @param FreemiumEvent $freemiumEvent : objet source */ private function mapEventInformations(Event $event, FreemiumEvent $freemiumEvent) { //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); //Catégories $event->removeAllCategories(); foreach ($freemiumEvent->categories as $category) { $event->addCategory($category); } } /** * Recherche et mapping du lieu de lévénement * @param Event $event * @param FreemiumEvent $freemiumEvent * @return void */ private function mapEventPlaceInformations(Event $event, FreemiumEvent $freemiumEvent){ $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 * @param FreemiumEvent $freemiumEvent * @return Place|array|object[] */ private 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 ->setName($freemiumEvent->placeName) ->setOrganization($freemiumEvent->organization) ->setAddressPostal($addressPostal); } /** * Récupération de la place si définie, sinon on en créer une si un minimum d'information est fournies * @param FreemiumEvent $freemiumEvent * @return Place|null */ private function getPlace(FreemiumEvent $freemiumEvent): ?Place { if ($freemiumEvent->place) { return $freemiumEvent->place; } else if ( $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. * @param Place $place * @return AddressPostal */ private function getAddressPostal(Place $place): AddressPostal { if ($place->getAddressPostal()) { return $place->getAddressPostal(); } return new AddressPostal(); } }