'datetime', 'slot_end' => 'datetime', 'booking_fee' => 'decimal:2', 'reserved_amount' => 'decimal:2', 'penalty_amount' => 'decimal:2', 'status' => 'string', 'cancelled_at' => 'datetime', 'penalty_applied_at' => 'datetime', ]; } public function user(): BelongsTo { return $this->belongsTo(User::class); } public function machine(): BelongsTo { return $this->belongsTo(Machine::class); } public function washes(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Wash::class); } public function isCancellable(): bool { return in_array($this->status, ['pending', 'confirmed'], true) && $this->slot_start->isFuture(); } }