%PDF- %PDF-
Direktori : /var/www/html/workeasy-api/app/Http/Controllers/Api/ |
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); } }