CustomScheduleResource.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Http\Resources;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Http\Resources\Json\JsonResource;
  5. class CustomScheduleResource extends JsonResource
  6. {
  7. /**
  8. * Transform the resource into an array.
  9. *
  10. * @return array<string, mixed>
  11. */
  12. public function toArray(Request $request): array
  13. {
  14. return [
  15. 'id' => $this->id,
  16. 'schedule_id' => $this->schedule_id,
  17. 'address_type' => $this->address_type,
  18. 'service_type_id' => $this->service_type_id,
  19. 'service_type_name' => $this->whenLoaded('serviceType', function () {
  20. return $this->serviceType->description;
  21. }),
  22. 'description' => $this->description,
  23. 'min_price' => number_format($this->min_price, 2, '.', ''),
  24. 'max_price' => number_format($this->max_price, 2, '.', ''),
  25. 'offers_meal' => $this->offers_meal,
  26. 'created_at' => $this->created_at?->format('Y-m-d H:i'),
  27. 'updated_at' => $this->updated_at?->format('Y-m-d H:i'),
  28. 'schedule' => $this->whenLoaded('schedule', function () {
  29. return [
  30. 'id' => $this->schedule->id,
  31. 'client_id' => $this->schedule->client_id,
  32. 'client_name' => $this->schedule->client?->user?->name,
  33. 'address_id' => $this->schedule->address_id,
  34. 'address' => $this->schedule->address ? [
  35. 'street' => $this->schedule->address->street,
  36. 'number' => $this->schedule->address->number,
  37. 'complement' => $this->schedule->address->complement,
  38. 'neighborhood' => $this->schedule->address->neighborhood,
  39. 'city' => $this->schedule->address->city,
  40. 'state' => $this->schedule->address->state,
  41. 'zipcode' => $this->schedule->address->zipcode,
  42. ] : null,
  43. 'date' => $this->schedule->date?->format('d/m/Y'),
  44. 'period_type' => $this->schedule->period_type,
  45. 'start_time' => $this->schedule->start_time,
  46. 'end_time' => $this->schedule->end_time,
  47. 'status' => $this->schedule->status,
  48. ];
  49. }),
  50. 'specialities' => $this->whenLoaded('specialities', function () {
  51. return $this->specialities->map(function ($item) {
  52. return [
  53. 'id' => $item->id,
  54. 'name' => $item->description,
  55. ];
  56. });
  57. }),
  58. ];
  59. }
  60. }