<?php

namespace App\Http\Resources\Profiles;

use App\Helpers\Backoffice\MediaHelper;
use App\Http\Resources\JobOffers\JobOfferListResource;
use App\Http\Resources\Projects\ProjectResource;
use App\Http\Resources\Offices\OfficeResource;
use App\Http\Resources\Specialisations\SpecialisationResource;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Http\Resources\Profiles\ProfileSupervisionListResource;
use App\Http\Resources\Profiles\ProfileWinnerListResource;


class ProfileDetailResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        $mainOffice = $this->offices->where('is_main_office', true)->first();
        return [
            'company' => [
                'name' => $this->name,
                'description' => $this->description,
                'companyImage' => MediaHelper::getCompanyImageUrl($this->company_image, '600x'),
                'coverImage' => MediaHelper::getCompanyImageUrl($this->cover_image, '1200x'),
                'specialisations' => SpecialisationResource::collection($this->companySpecialisations),
                'location' => new OfficeResource($mainOffice),
                'instagramUrl' => $this->instagram_url,
                'facebookUrl' => $this->facebook_url,
                'linkedinUrl' => $this->linkedin_url,
                'updatedAt' => $this->updated_at
            ],
            'jobOffers' => JobOfferListResource::collection($this->jobOffers),
            'members' => ProfileTeamListResource::collection($this->members),
            'memberEmployee' => $this->employee_count,
            'supervisions' => ProfileSupervisionListResource::collection($this->coordinationGroupMembers),
            'competitions' => ProfileWinnerListResource::collection($this->resultEntities),
            'projects' => ProjectResource::collection($this->projects),
            'offices' => OfficeResource::collection($this->offices),
        ];
    }
}
