From: Daniel Karbach Date: Tue, 15 Jul 2025 18:19:14 +0000 (+0200) Subject: expand ladder zossy shorthands X-Git-Url: http://git.localhorst.tv/?a=commitdiff_plain;h=5352d61139bb052c766062e85b443ba4b44b394d;p=alttp.git expand ladder zossy shorthands --- diff --git a/app/Console/Commands/SyncStepLadder.php b/app/Console/Commands/SyncStepLadder.php index 07afe81..3deb063 100644 --- a/app/Console/Commands/SyncStepLadder.php +++ b/app/Console/Commands/SyncStepLadder.php @@ -51,7 +51,7 @@ class SyncStepLadder extends Command { } } - private function syncEvent(Event $event) { + protected function syncEvent(Event $event) { $ladderSchedule = Http::get('https://alttpr.racing/api/v1/upcoming')->json(); foreach ($ladderSchedule as $ladderEntry) { try { @@ -62,9 +62,9 @@ class SyncStepLadder extends Command { } } - private function syncSchedule(Event $event, $ladderEntry) { + protected function syncSchedule(Event $event, $ladderEntry) { $ext_id = 'stepladder:'.$ladderEntry['id']; - $episode = Episode::firstWhere('ext_id', '=', $ext_id); + $episode = Episode::query()->firstWhere('ext_id', '=', $ext_id); if (!$episode) { $episode = new Episode(); $episode->ext_id = $ext_id; @@ -73,12 +73,26 @@ class SyncStepLadder extends Command { $episode->event()->associate($event); $episode->stepLadderMode()->associate($mode); $episode->title = $mode->name; - $episode->start = Carbon::createFromTimestamp($ladderEntry['time']); + $episode->start = $this->getEntryTime($ladderEntry); $episode->estimate = 2 * 60 * 60; $episode->confirmed = true; + + $pattern = '/_(AD|Flute|Inv|KD|MS|PB|ZW)/'; + $modifiers = []; + if (preg_match_all($pattern, $episode->title, $matches)) { + foreach ($matches[1] as $modifier) { + $modifiers[] = $this->translateModifier($modifier); + } + $episode->comment = implode(', ', $modifiers); + } + $episode->save(); } + protected function getEntryTime($ladderEntry) { + return Carbon::createFromTimestamp($ladderEntry['time']); + } + private function getMode($ladderEntry) { $ext_id = 'stepladder:'.$ladderEntry['mode']; $mode = StepLadderMode::firstWhere('ext_id', '=', $ext_id); @@ -93,4 +107,23 @@ class SyncStepLadder extends Command { return $mode; } + private function translateModifier(string $mod): string { + switch ($mod) { + case 'AD': + return 'All Dungeons'; + case 'Inv': + return 'Inverted'; + case 'KD': + return 'Keydrop'; + case 'MS': + return 'Mirror Scroll'; + case 'PB': + return 'Pseudo Boots'; + case 'ZW': + return 'Zelga Woods'; + default: + return $mod; + } + } + } diff --git a/app/Console/Commands/SyncStepLadderFull.php b/app/Console/Commands/SyncStepLadderFull.php index 6cef974..7e2afd4 100644 --- a/app/Console/Commands/SyncStepLadderFull.php +++ b/app/Console/Commands/SyncStepLadderFull.php @@ -11,7 +11,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Http; -class SyncStepLadderFull extends Command { +class SyncStepLadderFull extends SyncStepLadder { /** * The name and signature of the console command. @@ -28,30 +28,7 @@ class SyncStepLadderFull extends Command { protected $description = 'Synchronize complete Step Ladder schedule'; - /** - * Execute the console command. - * - * @return int - */ - public function handle() { - $events = Event::where('external_schedule', 'LIKE', 'stepladder') - ->where(function (Builder $query) { - $query->whereNull('end'); - $query->orWhere('end', '>', now()); - }) - ->get(); - - foreach ($events as $event) { - try { - $this->line('syncing '.$event->name); - $this->syncEvent($event); - } catch (\Exception $e) { - $this->error('error syncing event '.$event->name.': '.$e->getMessage()); - } - } - } - - private function syncEvent(Event $event) { + protected function syncEvent(Event $event) { $ladderSchedule = Http::get('https://alttpr.racing/api/v1/schedule')->json(); foreach ($ladderSchedule as $ladderEntry) { try { @@ -62,35 +39,8 @@ class SyncStepLadderFull extends Command { } } - private function syncSchedule(Event $event, $ladderEntry) { - $ext_id = 'stepladder:'.$ladderEntry['id']; - $episode = Episode::firstWhere('ext_id', '=', $ext_id); - if (!$episode) { - $episode = new Episode(); - $episode->ext_id = $ext_id; - } - $mode = $this->getMode($ladderEntry); - $episode->event()->associate($event); - $episode->stepLadderMode()->associate($mode); - $episode->title = $mode->name; - $episode->start = Carbon::createFromFormat('Y-m-d H:i:s', $ladderEntry['time'], 'America/Detroit')->setTimezone('UTC'); - $episode->estimate = 2 * 60 * 60; - $episode->confirmed = true; - $episode->save(); - } - - private function getMode($ladderEntry) { - $ext_id = 'stepladder:'.$ladderEntry['mode']; - $mode = StepLadderMode::firstWhere('ext_id', '=', $ext_id); - if (!$mode) { - $ladderMode = Http::get('https://alttpr.racing/api/v1/modes/'.$ladderEntry['mode'])->json(); - $mode = new StepLadderMode(); - $mode->ext_id = $ext_id; - $mode->name = $ladderMode['name']; - $mode->last_sync = Carbon::now(); - $mode->save(); - } - return $mode; + protected function getEntryTime($ladderEntry) { + return Carbon::createFromFormat('Y-m-d H:i:s', $ladderEntry['time'], 'America/Detroit')->setTimezone('UTC'); } }