|RadioSchedule where($column, $operator = null, $value = null) * @method static \Illuminate\Database\Eloquent\Builder|RadioSchedule create($attributes = []) */ class RadioSchedule extends Model { #[\Override] protected $table = 'radio_schedules'; #[\Override] protected $guarded = ['id', 'created_at', 'updated_at', 'user_id']; /** @var array */ #[\Override] protected $casts = [ 'start_time' => 'datetime:H:i', 'end_time' => 'datetime:H:i', 'is_active' => 'boolean', ]; public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id'); } public function scopeActive($query) { return $query->where('is_active', true); } public function scopeToday($query) { $days = [ 'Sunday' => 'sunday', 'Monday' => 'monday', 'Tuesday' => 'tuesday', 'Wednesday' => 'wednesday', 'Thursday' => 'thursday', 'Friday' => 'friday', 'Saturday' => 'saturday', ]; return $query->where('day', $days[now()->format('l')]); } public function scopeOrdered($query) { $days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']; return $query->orderByRaw("FIELD(day, '" . implode("','", $days) . "')") ->orderBy('start_time'); } public function getDayNameAttribute(): string { $days = [ 'monday' => 'Maandag', 'tuesday' => 'Dinsdag', 'wednesday' => 'Woensdag', 'thursday' => 'Donderdag', 'friday' => 'Vrijdag', 'saturday' => 'Zaterdag', 'sunday' => 'Zondag', ]; return $days[$this->day] ?? $this->day; } public function getTimeRangeAttribute(): string { return $this->start_time->format('H:i') . ' - ' . $this->end_time->format('H:i'); } }