<?php

namespace App\Http\Resources\Competitions;

use App\Helpers\DateHelper;
use App\Http\Resources\DocumentResource;
use App\Http\Resources\ImageResource;
use Illuminate\Http\Resources\Json\JsonResource;

class CompetitionDetailResource extends CompetitionResource
{
    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     * @return array
     */

    public function toArray($request)
    {
        $baseData = parent::toArray($request);

        $result = $this->result;
        $trackedResult = $this->trackedResult;

        $updatedCompetition = null;
        $updatedByCompetition = null;

        if ($this->updatedCompetition && $this->updatedCompetition->status == 'published') {
            $updatedCompetition = [
                'id' => $this->updatedCompetition->id,
                'slug' => $this->updatedCompetition->slug,
                'waId' => $this->updatedCompetition->wa_id,
                'title' => $this->updatedCompetition->title,
                'status' => $this->updatedCompetition->status,
            ];
        }

        $updatedBy = $this;
        $i = 0;
        while($updatedBy->updatedByCompetitions->count() > 0 && $i < 10) {
            if ($updatedBy->status == 'published') {
                $updatedBy = $updatedBy->updatedByCompetitions->first();
            }
            $i++;
        }
        if ($i) {
            $updatedByCompetition = [
                'id' => $updatedBy->id,
                'slug' => $updatedBy->slug,
                'waId' => $updatedBy->wa_id,
                'title' => $updatedBy->title,
            ];
        }

        return array_merge($baseData, [
            'officialNumber' => $this->official_number,
            'cpvs' => CpvResource::collection($this->cpvs),
            'content' => $this->content,
            'aditionalContent' => $this->aditional_content,
            'images' => ImageResource::collection($this->images),
            'documents' => DocumentResource::collection($this->documents),
            'description' => nl2br($this->description),
            'promoter' => nl2br($this->promoter),
            'coordination' => nl2br($this->coordination),
            'informationRequestDate' => DateHelper::formatDateTimeCET($this->information_request_until),
            'applicationDeadlineDate' => DateHelper::formatDateTimeCET($this->application_deadline),
            'registrationDeadlineDate' => DateHelper::formatDateTimeCET($this->registration_deadline),
            'deadlineDate' => DateHelper::formatDateTimeCET($this->deadline),
            'deadlinePlansDate' => DateHelper::formatDateTimeCET($this->plans_deadline),
            'modelDeadlineDate' => DateHelper::formatDateTimeCET($this->model_deadline),
            'juryDate' => DateHelper::formatDateTimeCET($this->jury_date),
            'announcementDate' => DateHelper::formatDateTimeCET($this->announcement_date),
            'documentsUrl' => $this->documents_url,
            'moneyValue' => $this->money_value,
            'resultSlug' => $result && $result->status == 'published' ? $result->slug :null,
            'trackedResultSlug' => $trackedResult && $trackedResult->status == 'published' ? $trackedResult->slug : null,
            'updatedCompetition' => $updatedCompetition,
            'updatedByCompetition' => $updatedByCompetition,
            'participant' => $this->participant,
        ]);
    }
}
