private function syncEvent(Event $event) {
$sgHandle = substr($event->external_schedule, 3);
$from = now()->sub(1, 'day');
- $to = now()->add(6, 'day');
+ $to = now()->add(14, 'day');
$sgSchedule = HTTP::get('https://speedgaming.org/api/schedule/', [
'event' => $sgHandle,
'from' => $from->toIso8601String(),
->where('start', '<=', $to)
->whereNotIn('ext_id', $ext_ids);
foreach ($to_purge->get() as $episode) {
+ $episode->channels()->detach();
+ $episode->crew()->delete();
$episode->players()->delete();
}
$to_purge->delete();
$episode->event()->associate($event);
$episode->title = $sgEntry['match1']['title'];
$start = Carbon::createFromFormat('Y-m-d\TH:i:sP', $sgEntry['when']);
- if ($start->ne($episode->start)) {
+ if (!$episode->start || $start->ne($episode->start)) {
$episode->start = $start;
}
$episode->estimate = $sgEntry['length'] * 60;
foreach ($sgEntry['channels'] as $sgChannel) {
$ext_ids[] = 'sg:'.$sgChannel['id'];
}
- $episode->channels()
- ->where('ext_id', 'LIKE', 'sg:%')
- ->whereNotIn('ext_id', $ext_ids)
- ->detach();
+ $channels = $episode->channels()
+ ->where('ext_id', 'LIKE', 'sg:%')
+ ->whereNotIn('ext_id', $ext_ids)
+ ->get();
+ if (!$channels->isEmpty()) {
+ $episode->channels()->detach($channels->pluck('id'));
+ }
}
private function syncChannel(Episode $episode, $sgChannel) {
if ($channel) {
return $channel;
}
+ return $episode->channels()
+ ->where('ext_id', 'LIKE', 'sg:%')
+ ->first();
}
private function getUserBySGPlayer($player) {