ClassPackageResource.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Http\Resources;
  3. use Carbon\Carbon;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Http\Resources\Json\JsonResource;
  6. use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
  7. use App\Http\Resources\Concerns\SerializesProposalPricing;
  8. use App\Models\ClassPackage;
  9. class ClassPackageResource extends JsonResource
  10. {
  11. use SerializesProposalPricing;
  12. public function toArray(Request $request): array
  13. {
  14. return [
  15. 'id' => $this->id,
  16. 'name' => $this->name,
  17. 'quantity_classes' => $this->quantity_classes,
  18. 'class_duration_minutes' => $this->class_duration_minutes,
  19. 'weekday' => $this->weekday,
  20. 'start_time' => $this->start_time,
  21. 'second_weekday' => $this->second_weekday,
  22. 'second_start_time' => $this->second_start_time,
  23. 'created_at' => Carbon::parse($this->created_at)->format('Y-m-d H:i:s'),
  24. 'updated_at' => Carbon::parse($this->updated_at)->format('Y-m-d H:i:s'),
  25. 'unit_visibilities' => $this->whenLoaded('unitPackages', fn() =>
  26. $this->unitPackages->map(fn($up) => [
  27. 'unit_id' => $up->unit_id,
  28. 'visible' => (bool) $up->visible,
  29. ])
  30. ),
  31. 'group_ids' => $this->whenLoaded('groups', fn() =>
  32. $this->groups->pluck('id')->values()
  33. ),
  34. 'pavao' => $this->whenLoaded('pavaoProposal', fn() => $this->proposalPricingArray($this->pavaoProposal)),
  35. 'irrecusavel' => $this->whenLoaded('irrecusableProposal', fn() => $this->proposalPricingArray($this->irrecusableProposal, withCondition: true)),
  36. ];
  37. }
  38. /**
  39. * @param \Illuminate\Database\Eloquent\Collection<ClassPackage> $resource
  40. * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection<ClassPackageResource>
  41. */
  42. public static function collection($resource): AnonymousResourceCollection
  43. {
  44. return parent::collection($resource);
  45. }
  46. }