| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- namespace App\Services;
- use App\Models\ProviderBlockedDay;
- use Illuminate\Database\Eloquent\Collection;
- class ProviderBlockedDayService
- {
- public function getByProvider(int $providerId): Collection
- {
- return ProviderBlockedDay::where('provider_id', $providerId)
- ->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.'
- );
- }
- }
- }
|