ClientProviderBlockService.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Services;
  3. use App\Models\ClientProviderBlock;
  4. use Exception;
  5. class ClientProviderBlockService
  6. {
  7. public function getByClientId(int $clientId)
  8. {
  9. return ClientProviderBlock::with(['provider.user'])
  10. ->where('client_id', $clientId)
  11. ->orderBy('created_at', 'desc')
  12. ->get();
  13. }
  14. public function create(array $data): ClientProviderBlock
  15. {
  16. $existing = ClientProviderBlock::where('client_id', $data['client_id'])
  17. ->where('provider_id', $data['provider_id'])
  18. ->first();
  19. if ($existing) {
  20. if ($existing->trashed()) {
  21. $existing->restore();
  22. $existing->load(['provider.user']);
  23. return $existing;
  24. } else {
  25. throw new Exception(__('validation.client_provider_block.already_blocked'));
  26. }
  27. }
  28. $block = ClientProviderBlock::create($data);
  29. $block->load(['provider.user']);
  30. return $block;
  31. }
  32. public function delete(int $id): bool
  33. {
  34. $block = ClientProviderBlock::findOrFail($id);
  35. return $block->delete();
  36. }
  37. public function getBlockedProviderIds(int $clientId): array
  38. {
  39. return ClientProviderBlock::where('client_id', $clientId)
  40. ->pluck('provider_id')
  41. ->toArray();
  42. }
  43. }