orderBy('date', 'asc') ->orderBy('init_hour', 'asc') ->get(); } public function findById(int $id): ?ProviderBlockedDay { return ProviderBlockedDay::find($id); } public function create(array $data): ProviderBlockedDay { return ProviderBlockedDay::create($data); } public function update( ProviderBlockedDay $blockedDay, array $data ): ProviderBlockedDay { $this->validateManualChange($blockedDay); $blockedDay->update($data); return $blockedDay->fresh(); } public function delete(ProviderBlockedDay $blockedDay): bool { $this->validateManualChange($blockedDay); return $blockedDay->delete(); } private function validateManualChange( ProviderBlockedDay $blockedDay ): void { if ($blockedDay->type === 'auto_cancel') { throw new \Exception( 'Este dia foi bloqueado como penalidade por falta do prestador e não pode ser alterado ou desbloqueado.' ); } } }