From: Daniel Karbach Date: Sat, 27 Sep 2025 11:18:37 +0000 (+0200) Subject: beer league sync X-Git-Url: https://git.localhorst.tv/?a=commitdiff_plain;h=b252d9824b08ea251aa79d31392d697b76f80474;p=alttp.git beer league sync --- diff --git a/app/Console/Commands/SyncBeerLeague.php b/app/Console/Commands/SyncBeerLeague.php new file mode 100644 index 0000000..f031ac2 --- /dev/null +++ b/app/Console/Commands/SyncBeerLeague.php @@ -0,0 +1,89 @@ +where('external_schedule', '=', 'beer') + ->where(function (Builder $query) { + $query->whereNull('end'); + $query->orWhere('end', '>', now()); + }) + ->get(); + + if (empty($events)) { + return Command::SUCCESS; + } + + $schedule = Http::get('https://sheets.googleapis.com/v4/spreadsheets/1LMW5cq35rlPTXIfKQ7bkpMm0vTwG2sj7SqEKrzMy-cw/values/MATCH%20SUBMISSION', [ + 'alt' => 'json', + 'key' => config('google.api_key'), + ])->json(); + + foreach ($events as $event) { + try { + $this->line('syncing '.$event->name); + $this->syncEvent($event, $schedule['values']); + } catch (\Exception $e) { + $this->error('error syncing event '.$event->name.': '.$e->getMessage()); + } + } + + return Command::SUCCESS; + } + + private function syncEvent(Event $event, $schedule): void { + for ($i = 5; $i < count($schedule); ++$i) { + $this->syncSchedule($event, $schedule[$i]); + } + } + + private function syncSchedule(Event $event, $row): void { + $ext_id = 'beer:'.$event->id.':'.$row[0]; + $episode = Episode::query()->firstWhere('ext_id', '=', $ext_id); + if (!$episode) { + $episode = new Episode(); + $episode->ext_id = $ext_id; + $episode->confirmed = true; + } + $episode->event()->associate($event); + $episode->title = $row[2].' vs '.$row[3]; + $episode->comment = $row[1]; + $start = Carbon::createFromFormat('m/d/Y h:i:s A', $row[4].' '.$row[5], 'America/Detroit')->setTimezone('UTC'); + if (!$episode->start || $start->ne($episode->start)) { + $episode->start = $start; + } + $episode->estimate = 90 * 60; + $episode->save(); + } + +} diff --git a/routes/console.php b/routes/console.php index 214eae2..d2ce7c0 100644 --- a/routes/console.php +++ b/routes/console.php @@ -21,6 +21,7 @@ Schedule::everyFiveMinutes() ->runInBackground() ->group(function () { Schedule::command('sync:speedgaming'); + Schedule::command('sync:beer'); Schedule::command('sync:cabookey'); Schedule::command('sync:coop-zossy'); Schedule::command('sync:enemizer');