Luke Jones

intervle - app/Http/Controllers/GameController.php

<?php namespace App\Http\Controllers; use App\Models\Event; use Illuminate\Http\Request; class GameController extends Controller { public function show(string $difficulty, string $date) { if (!in_array($difficulty, ['easy', 'medium', 'hard'])) { return response('', 400); } $seed = $this->getSeedFromDateAndDifficulty($difficulty, $date); if ($seed == -1) { return response('', 400); } $events = Event::dailyRandom($seed)->get(); return view('game.show', compact('events')); } public function submit(Request $request, string $difficulty, string $date) { if (!in_array($difficulty, ['easy', 'medium', 'hard'])) { return response('', 400); } $seed = $this->getSeedFromDateAndDifficulty($difficulty, $date); if ($seed == -1) { return response('', 400); } $submitted = $request->input('order'); $correct = Event::dailyRandomOrdered($seed) ->pluck('id') ->toArray(); $results = []; foreach ($submitted as $index => $eventId) { $results[] = [ 'id' => $eventId, 'correct' => ($correct[$index] ?? null) == $eventId ]; } return response()->json([ 'correct_order' => $correct, 'results' => $results ]); } private function getSeedFromDateAndDifficulty(string $difficulty, string $date) { $today = intval(date('Ymd')); if ($date == 'today') { $seed = $today; } else { if (intval($date) <= intval($today)) { $seed = $date; } else { return -1; } } return $seed . $difficulty; } }