Luke Jones

intervle - app/Models/Event.php

<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Event extends Model { use HasFactory; protected $fillable = ['date', 'description']; protected $casts = [ 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; public function scopeDailyRandom($query, $seed) { $count = $this->getCountFromSeed($seed); return $query ->orderByRaw("md5(id::text || ?)", [$seed]) ->limit($count); } public function scopeDailyRandomOrdered($query, $seed) { $count = $this->getCountFromSeed($seed); $sub = self::query() ->orderByRaw("md5(id::text || ?)", [$seed]) ->limit($count); return $query ->fromSub($sub, 'daily_events') ->orderBy('date', 'asc'); } private function getCountFromSeed($seed) { $difficultyMapping = [ 'easy' => 5, 'medium' => 7, 'hard' => 10, ]; return $difficultyMapping[(preg_replace('/[0-9]+/', '', $seed))]; } }