RequirementResource.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Resources\API;
  3. use App\Models\User;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Http\Resources\Json\JsonResource;
  6. class RequirementResource extends JsonResource
  7. {
  8. /**
  9. * Transform the resource into an array.
  10. *
  11. * @return array<string, mixed>
  12. */
  13. public function toArray(Request $request): array
  14. {
  15. $mailto=$this->mailto;
  16. $mailtoName=User::query()->whereIn('id',$mailto)->get();
  17. return [
  18. 'title' => $this->title,
  19. 'status' => $this->status,
  20. 'asset_id' => $this->asset_id,
  21. 'plan_id' => $this->plan_id,
  22. 'plan_name'=> new SimplePlanResource($this->plan),
  23. 'project_id' => $this->projects->pluck('id')->toArray(),
  24. 'project_name' => ProjectSimpleResource::collection($this->projects),
  25. 'requirement_group_id' => $this->requirement_group_id ?? 0,
  26. 'requirement_group' => new RequirementGroupResource($this->group),
  27. 'asset' => new SimpleAssetResource($this->asset),
  28. 'reviewed_by' => $this->reviewed_by,
  29. 'approval_status' => $this->approval_status,
  30. 'priority' => $this->priority,
  31. 'note' => $this->note,
  32. 'description' => $this->description?(new \App\Services\File\ImageUrlService)->getImageUrl($this->description):null,
  33. 'acceptance' => $this->acceptance,
  34. 'mailto' => $mailto,
  35. 'mailto_name'=>UserProfileResource::collection($mailtoName),
  36. 'created_by' => new UserProfileResource($this->createdBy),
  37. 'created_at' => (string)$this->created_at,
  38. 'updated_at' => (string)$this->updated_at,
  39. ];
  40. }
  41. }