File: D:/HostingSpaces/SBogers10/csb.komma.pro/app/Vacancies/VacancyService.php
<?php
namespace App\Vacancies;
use App\Base\Service;
use App\Vacancies\Models\Vacancy;
use Carbon\Carbon;
final class VacancyService extends Service
{
/**
* Base query for get Vacancy from DB
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
private function baseVacancyQuery()
{
return Vacancy::where('active', 1)
->with('translation', 'images')
->orderBy('lft','asc');
}
/**
* Get all Vacancies
*
* @return \Illuminate\Database\Eloquent\Collection
*/
public function getVacancies()
{
return $this->baseVacancyQuery()->get();
}
/**
* Get $amount of latest Vacancies
*
* @param int $amount
* @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection
*/
public function getFirstSetOfVacancies($amount = 3)
{
return $this->baseVacancyQuery()
->take($amount)
->get();
}
/**
* Get Vacancies paginated per $amount on a page
*
* @param int $amountPerPage
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
*/
public function getVacanciesPaginated($amountPerPage = 12)
{
return $this->baseVacancyQuery()->paginate($amountPerPage);
}
/**
* Get the next Vacancies after give $vacancy
*
* @param Vacancy $vacancy
* @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection
*/
public function getNextVacancies(Vacancy $vacancy)
{
return $this->baseVacancyQuery()
->where('lft', '>', $vacancy->lft)
->take(2)
->get();
}
}