public function storeEvents($resource)
 {
     $events = $this->getPageEvents($resource->facebook);
     $venue = $resource;
     foreach ($events as $event) {
         $venueId = isset($event->place->id) ? $event->place->id : null;
         if (!$venueId || $venueId != $resource->facebook) {
             $venue = Venue::where('name', 'like', $event->place->name)->first();
             if (!$venue) {
                 echo 'No venue found in our database...';
                 if (isset($event->place->location)) {
                     echo "getting location info from Facebook\n";
                     $venueData = ['name' => $event->place->name, 'street' => $event->place->location->street, 'city' => $event->place->location->city, 'state' => $event->place->location->state, 'zip' => $event->place->location->zip, 'longitude' => $event->place->location->longitude, 'latitude' => $event->place->location->latitude, 'facebook' => $event->place->id, 'visible' => true];
                 } else {
                     echo "getting location info from Google Maps\n";
                     $geocoder = new GoogleGeocoder($event->place->name);
                     $components = $geocoder->getComponents();
                     $venueData = ['name' => $event->place->name, 'street' => $components['street_number'] . ' ' . $components['route'], 'city' => $components['locality'], 'state' => $components['administrative_area_level_1'], 'zip' => $components['postal_code'], 'longitude' => $components['longitude'], 'latitude' => $components['latitude'], 'visible' => true];
                 }
                 $venue = Venue::firstOrCreate($venueData);
                 echo "Venue created: {$venue->name} ({$venue->id})\n";
             }
         }
         $eventData = ['name' => $event->name, 'description' => isset($event->description) ? $event->description : null, 'start_time' => $this->castToDateTime($event->start_time), 'end_time' => isset($event->end_time) ? $this->castToDateTime($event->end_time) : null, 'facebook' => $event->id, 'venue_id' => $venue->id, 'updated_at' => $this->castToDateTime($event->updated_time), 'tags' => $venue->tags->lists('id')->toArray()];
         $this->updateOrCreate($eventData);
     }
 }
 /**
  * Store a newly created resource in storage for approval.
  *
  * @return Response
  */
 public function collect(CollectRequest $request)
 {
     $data = $request->all();
     if ($request->user() && $request->user()->hasPermission('events.admin')) {
         $data['visible'] = true;
     }
     if (!$request->has('venue_id')) {
         $data['venue']['visible'] = true;
         $venue = Venue::firstOrCreate($data['venue']);
         $data['venue_id'] = $venue->id;
     }
     $event = Event::create($data);
     $event->tags()->attach($request->tags);
     if ($event) {
         $data = ['id' => $event->id, 'name' => $event->name, 'time' => $event->start_time->format('g:ia, m/d/Y') . (isset($event->end_time) ? ' - ' . $event->end_time->format('g:ia, m/d/Y') : ''), 'location' => isset($venue) ? $venue->name : Venue::find($event->venue_id)->name, 'facebook' => $event->facebook, 'description' => $event->description];
         Mail::send('emails.events.collect', $data, function ($message) {
             $message->from('*****@*****.**', 'Wichitasome!');
             $message->to('*****@*****.**')->subject('New Event!');
         });
     }
     return redirect('events/submit')->with('message', '<strong>Woo! A new event!</strong> Thanks, we\'ll look it over at get it listed ASAP.');
 }