private function createSpecialEvents() { //NSBreakfast May $nsBreakfastMay = Carbon::create(2016, 5, 6, 8, 0, 0, new \DateTimeZone('Australia/Melbourne')); $nsBreakfastMay->setTimezone(new \DateTimeZone('UTC')); // using slug as a unique string identifier $slug = Str::slug(Event::SPECIAL . " {$nsBreakfastMay}"); $this->info("Special Event (NSBreakfast) {$nsBreakfastMay} UTC"); $event = Event::firstOrNew(['slug' => $slug]); $event->type = Event::SPECIAL; $event->slug = $slug; $event->title = 'NSBreakfast'; $event->subtitle = 'Informal and unstructured; Hang out, drink coffee, eat breakfast and chat iOS / OSX'; $event->starts_at = $nsBreakfastMay; $event->ends_at = $nsBreakfastMay->copy()->addHours(2); $event->contact = 'https://twitter.com/nsbreakfast'; $event->contact_name = 'Matt Delves'; $event->location = '1000 £ Bend'; $event->location_link = 'http://thousandpoundbend.com.au'; $event->address_display = '361 Little Lonsdale St, Melbourne'; $event->address = '361 Little Lonsdale St, Melbourne, VIC 3000'; $event->lat = -37.811672; $event->lng = 144.959092; $event->save(); //NSBreakfast June $nsBreakfastJune = Carbon::create(2016, 6, 3, 7, 30, 0, new \DateTimeZone('Australia/Melbourne')); $nsBreakfastJune->setTimezone(new \DateTimeZone('UTC')); $slug = Str::slug(Event::SPECIAL . " {$nsBreakfastJune}"); $this->info("Special Event (NSBreakfast) {$nsBreakfastJune} UTC"); $event = Event::firstOrNew(['slug' => $slug]); $event->type = Event::SPECIAL; $event->slug = $slug; $event->title = 'NSBreakfast'; $event->subtitle = 'Informal and unstructured; Hang out, drink coffee, eat breakfast and chat iOS / OSX'; $event->starts_at = $nsBreakfastJune; $event->ends_at = $nsBreakfastJune->copy()->addHours(2); $event->contact = 'https://twitter.com/nsbreakfast'; $event->contact_name = 'Matt Delves'; $event->location = 'Hash Specialty Coffee'; $event->location_link = 'http://facebook.com/hashcoffeeroasters'; $event->address_display = '113 Hardware St, Melbourne'; $event->address = '113 Hardware St, Melbourne, VIC 3000'; $event->lat = -37.8123025; $event->lng = 144.9605897; $event->save(); //WWDC Event June 2016 $wwdcEventJune2016 = Carbon::create(2016, 6, 16, 18, 30, 0, new \DateTimeZone('Australia/Melbourne')); $wwdcEventJune2016->setTimezone(new \DateTimeZone('UTC')); $slug = Str::slug(Event::SPECIAL . " {$wwdcEventJune2016}"); $this->info("Special Event (WWDC) {$wwdcEventJune2016} UTC"); $event = Event::firstOrNew(['slug' => $slug]); $event->type = Event::SPECIAL; $event->slug = $slug; $event->title = 'Cocoaheads WWDC Special Event'; $event->subtitle = <<<'EOT' We're going to start off with a special intro I'm calling 'The Keynote That Was' (TKTW) and we will then watch two to three WWDC sessions. Depending on what's available at the time, we might have a few options but the best ones will be the State of the Union sessions that are usually presented on the Tuesday morning in San Francisco. EOT; $event->starts_at = $wwdcEventJune2016; $event->ends_at = $wwdcEventJune2016->copy()->addHours(3); $event->location = 'Teamsquare'; $event->location_link = 'https://teamsquare.co/contact'; $event->address_display = 'Level 1, 520 Bourke Street, Melbourne'; $event->address = 'Level 1, 520 Bourke Street, Melbourne VIC 3000'; $event->lat = -37.8153744; $event->lng = 144.958427; $event->tickets = 'http://melbournecocoaheads-wwdc-2016.eventbrite.com.au'; $event->contact = 'https://twitter.com/melbournecocoa'; $event->contact_name = 'Jesse Collis'; $event->save(); $event->sponsors()->detach(); $event->sponsors()->attach(Sponsor::where('name', '=', 'Teamsquare')->first()); $event->sponsors()->attach(Sponsor::where('name', 'Odecee')->first()); }
/** * Execute the job. * * @return void */ public function handle() { if ($this->isSeeding) { $toTake = 200; // 200 societies $delay = 0; // Immediately } else { $toTake = 20; // 20 societies $delay = 600; // 10 Minutes } FacebookSession::setDefaultApplication(getenv('FB_ID'), getenv('FB_SECRET')); $session = FacebookSession::newAppSession(); try { $session->validate(); } catch (FacebookRequestException $ex) { // Session not valid, Graph API returned an exception with the reason. dd($ex); } catch (\Exception $ex) { // Graph API returned info, but it may mismatch the current app or have expired. dd($ex); } $store = \App\Setting::where('name', 'next_society')->first(); $lastUpdated = $store->setting; // Get last society ID updated; $societies = \App\Society::where('id', '>', $lastUpdated)->take($toTake)->orderBy('id')->get(); // Get Societies to query foreach ($societies as $society) { $request = new FacebookRequest($session, 'GET', '/' . $society->facebook_ref . '/events' . '?since=' . time() . '&fields=name,start_time,location,description,cover'); try { $response = $request->execute(); } catch (\Exception $ex) { continue; // TODO: Report errors back to us :) } $graphObject = $response->getGraphObject(); $events = $graphObject->asArray(); if (array_key_exists('data', $events)) { $events = $events['data']; foreach ($events as $fbEvent) { $storedEvent = \App\Event::firstOrNew(['facebook_id' => $fbEvent->id]); $storedEvent->society_id = $society->id; $storedEvent->title = $fbEvent->name; $storedEvent->time = $fbEvent->start_time; if (array_key_exists("description", $fbEvent)) { $storedEvent->description = $fbEvent->description; } if (array_key_exists("location", $fbEvent)) { $storedEvent->location = $fbEvent->location; } if (array_key_exists("cover", $fbEvent)) { $storedEvent->image = $fbEvent->cover->source; } $storedEvent->save(); } } } if (count($societies) < $toTake) { $store->setting = 0; } else { $store->setting += $toTake; } $store->save(); $job = (new \App\Jobs\UpdateEvents())->delay($delay); if (!$this->isSeeding) { $this->dispatch($job); } }