ClientFavoriteProviderService.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Services;
  3. use App\Models\ClientFavoriteProvider;
  4. use App\Http\Resources\ClientFavoriteProviderResource;
  5. use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
  6. class ClientFavoriteProviderService
  7. {
  8. public function getByClientId(int $clientId): AnonymousResourceCollection
  9. {
  10. $favorites = ClientFavoriteProvider::with('provider')
  11. ->where('client_id', $clientId)
  12. ->orderBy('created_at', 'desc')
  13. ->get();
  14. return ClientFavoriteProviderResource::collection($favorites);
  15. }
  16. public function getById(int $id): ClientFavoriteProviderResource
  17. {
  18. $favorite = ClientFavoriteProvider::with('provider')->findOrFail($id);
  19. return new ClientFavoriteProviderResource($favorite);
  20. }
  21. public function create(array $data): ClientFavoriteProviderResource
  22. {
  23. $favorite = ClientFavoriteProvider::create($data);
  24. $favorite->load('provider');
  25. return new ClientFavoriteProviderResource($favorite);
  26. }
  27. public function update(int $id, array $data): ClientFavoriteProviderResource
  28. {
  29. $favorite = ClientFavoriteProvider::findOrFail($id);
  30. $favorite->update($data);
  31. $favorite->load('provider');
  32. return new ClientFavoriteProviderResource($favorite);
  33. }
  34. public function delete(int $id): bool
  35. {
  36. $favorite = ClientFavoriteProvider::findOrFail($id);
  37. return $favorite->delete();
  38. }
  39. public function getFavoritedProviderIds(int $clientId): array
  40. {
  41. return ClientFavoriteProvider::where('client_id', $clientId)
  42. ->pluck('provider_id')
  43. ->toArray();
  44. }
  45. }