ScheduleResource.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Http\Resources;
  3. use App\Models\ServicePackageItem;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Http\Resources\Json\JsonResource;
  6. class ScheduleResource extends JsonResource
  7. {
  8. public function toArray(Request $request): array
  9. {
  10. $servicePackageId = $this->service_package_id ?? ServicePackageItem::query()
  11. ->where('schedule_id', $this->id)
  12. ->value('service_package_id');
  13. $servicePackageItemsCount = $this->service_package_items_count ?? (
  14. $servicePackageId ? ServicePackageItem::query()->where('service_package_id', $servicePackageId)->count() : 0
  15. );
  16. return [
  17. 'id' => $this->id,
  18. 'client_id' => $this->client_id,
  19. 'client_name' => $this->client?->user?->name,
  20. 'provider_id' => $this->provider_id,
  21. 'provider_name' => $this->provider?->user?->name,
  22. 'gender' => $this->provider?->gender?->value,
  23. 'gender_label' => $this->provider?->gender?->label(),
  24. 'address_id' => $this->address_id,
  25. 'address_full' => $this->address ? implode(', ', array_filter([
  26. $this->address->address,
  27. $this->address->number ? "nº {$this->address->number}" : null,
  28. $this->address->district,
  29. $this->address->city ? "{$this->address->city->name}/{$this->address->state?->code}" : null,
  30. ])) : null,
  31. 'address' => new AddressResource($this->whenLoaded('address')),
  32. 'date' => $this->date?->format('Y-m-d'),
  33. 'period_type' => $this->period_type,
  34. 'schedule_type' => $this->schedule_type,
  35. 'start_time' => $this->start_time,
  36. 'end_time' => $this->end_time,
  37. 'offers_meal' => $this->offers_meal,
  38. 'status' => $this->status,
  39. 'total_amount' => $this->total_amount,
  40. 'code' => $this->code,
  41. 'code_verified' => $this->code_verified,
  42. 'service_package_id' => $servicePackageId,
  43. 'service_package_items_count' => $servicePackageItemsCount,
  44. 'created_at' => $this->created_at?->toISOString(),
  45. 'updated_at' => $this->updated_at?->toISOString(),
  46. 'deleted_at' => $this->deleted_at?->toISOString(),
  47. ];
  48. }
  49. }