%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/workeasy-api/app/Transformers/
Upload File :
Create Path :
Current File : /var/www/html/workeasy-api/app/Transformers/OfferTransformer.php

<?php

namespace Workeasy\Transformers;

use Workeasy\Models\Interview;
use Workeasy\Models\Offer;

/**
 * Created by PhpStorm.
 * User: User
 * Date: 1/26/2018
 * Time: 3:31 PM
 */
class OfferTransformer extends BaseTransformer
{
    protected $availableIncludes = [
        'company',
        'media',
        'interviews',
        'candidates',
    ];

    public function includeCompany(Offer $offer)
    {
        if ($company = $offer->company) {
            return $this->item($company, new CompanyTransformer, 'company');
        }
        return null;
    }

    public function includeInterviews(Offer $offer)
    {
        if ($interviews = $offer->interviews) {
            return $this->collection($interviews, new InterviewTransformer, 'interviews');
        }
        return null;
    }

    public function includeMedia(Offer $offer)
    {
        if ($media = $offer->media()->first()) {
            return $this->item($media, new MediaTransformer, 'media');
        }else {
            $job = $offer->jobPosition()->first();
            $media= $job->media()->first();
            return $this->item($media, new MediaTransformer, 'media');
        }
    }

    public function includeCandidates(Offer $offer)
    {
        return $this->collection($offer->candidates, new CandidateTransformer, 'candidates');
    }

    public function transform(Offer $offer)
    {
        $data = $this->transformColumns($offer);
        $data['candidates_count'] = $offer->candidates()->where('status', Interview::PENDING)->count();
        // return $data;
        $data['candidates_accepted'] = $offer->candidates()->where('status', Interview::ACCEPTED)->count();
        return $data;
    }

    protected function getTransformableColumns()
    {
        return [
            'id'          => 'id',
            'name'        => 'name',
            'start_date'  => 'start_date',
            'end_date'    => 'end_date',
            'contract_id' => 'contract_id',
            'job_id'      => 'job_id',
            'company_id'  => 'company_id',
            'description' => 'description',
            'created_at'  => 'created_at',
            'updated_at'  => 'updated_at',
        ];
    }

}

Zerion Mini Shell 1.0