/**
  * Update Event with venue data and create/update Venue.
  *
  * @param   EventModel  $event
  * @param   GraphPage   $placeObject
  * @param   bool        $save
  * @return  string      Error message, if any
  */
 protected function updateVenue(EventModel $event, GraphPage $placeObject = null, $save = false)
 {
     static $venues = [];
     if ($placeObject) {
         $event->venue_name = $placeObject->getName();
         $locationObject = $placeObject->getLocation();
         if ($locationObject) {
             $event->city_name = $locationObject->getCity();
         }
         // Update Venue only if not already updated
         $placeId = $placeObject->getId();
         if ($placeId && !isset($venues[$placeId])) {
             /** @var  QueryBuilder  $query */
             $query = VenueModel::facebook([$placeId]);
             if ($locationObject) {
                 $query->orWhere(function ($query) use($placeObject, $locationObject) {
                     $query->where(DB::raw('lower(name)'), '=', strtolower($placeObject->getName()))->where(DB::raw('lower(city_name)'), '=', strtolower($locationObject->getCity()));
                 });
             }
             $venue = $query->first();
             if (!$venue) {
                 $newItem = true;
                 $venue = VenueModel::make(['author_id' => $this->importUserId, 'name' => $placeObject->getName()]);
             } else {
                 $newItem = false;
             }
             $venues[$placeId] = $venue;
             if ($locationObject) {
                 $venue->fill(['address' => $locationObject->getStreet(), 'zip' => $locationObject->getZip(), 'city_name' => $locationObject->getCity(), 'country' => $locationObject->getCountry(), 'latitude' => $locationObject->getLatitude(), 'longitude' => $locationObject->getLongitude(), 'facebook_id' => $placeId]);
             }
             if ($save) {
                 try {
                     if ($venue->isDirty()) {
                         $venue->save();
                         // @TODO: Move to newsfeed plugin
                         $this->createVenueNewsfeedItem($venue->id, $newItem);
                     }
                 } catch (ModelException $e) {
                     return $e->getMessage();
                 }
             }
         } elseif (isset($venues[$placeId])) {
             $venue = $venues[$placeId];
         }
         if (isset($venue)) {
             $event->venue()->associate($venue);
         }
     }
     return null;
 }