<?php

namespace App\Http\Resources\API;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

class RequirementResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @return array<string, mixed>
     */
    public function toArray(Request $request): array
    {
        $mailto=$this->mailto;
        $mailtoName=User::query()->whereIn('id',$mailto)->get();
        return [
            'title' => $this->title,
            'status' => $this->status,
            'asset_id' => $this->asset_id,
            'plan_id' => $this->plan_id,
            'plan_name'=> new SimplePlanResource($this->plan),
            'project_id' =>  $this->projects->pluck('id')->toArray(),
            'project_name' => ProjectSimpleResource::collection($this->projects),
            'requirement_group_id' => $this->requirement_group_id ?? 0,
            'requirement_group' => new RequirementGroupResource($this->group),
            'asset' => new SimpleAssetResource($this->asset),
            'reviewed_by' => $this->reviewed_by,
            'approval_status' => $this->approval_status,
            'priority' => $this->priority,
            'note' => $this->note,
            'description' => $this->description?(new \App\Services\File\ImageUrlService)->getImageUrl($this->description):null,
            'acceptance' => $this->acceptance,
            'mailto' => $mailto,
            'mailto_name'=>UserProfileResource::collection($mailtoName),
            'created_by' => new UserProfileResource($this->createdBy),
            'created_at' => (string)$this->created_at,
            'updated_at' => (string)$this->updated_at,
        ];
    }
}