Files
2026-05-09 17:32:17 +02:00

81 lines
2.1 KiB
PHP
Executable File

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* @method static \Illuminate\Database\Eloquent\Builder<static>|RadioSchedule where($column, $operator = null, $value = null)
* @method static \Illuminate\Database\Eloquent\Builder<static>|RadioSchedule create($attributes = [])
*/
class RadioSchedule extends Model
{
#[\Override]
protected $table = 'radio_schedules';
#[\Override]
protected $guarded = ['id', 'created_at', 'updated_at', 'user_id'];
/** @var array<string, string> */
#[\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');
}
}