Skip to content
Snippets Groups Projects
Commit 9d99bfbd authored by Torsten Oppermann's avatar Torsten Oppermann
Browse files

[TASK] Working on job filter

parent a4de1a1f
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,7 @@ namespace SGalinski\SgJobs\Controller\Ajax;
***************************************************************/
use SGalinski\SgAjax\Controller\Ajax\AbstractAjaxController;
use SGalinski\SgJobs\Domain\Repository\JobRepository;
use SGalinski\SgJobs\Service\BackendService;
use SGalinski\SgJobs\Service\FrontendFilterService;
......
......@@ -111,9 +111,8 @@ class JoblistController extends ActionController {
/**
* @param int $rootPageId
* @param array $filterValues
*/
private function assignFilterValues($rootPageId, $filterValues = []) {
private function assignFilterValues($rootPageId) {
// get all countries
$countries = $this->companyRepository->getAllCountries($rootPageId);
$this->view->assign('countries', $countries);
......
......@@ -26,8 +26,10 @@ namespace SGalinski\SgJobs\Service;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use SGalinski\SgJobs\Domain\Repository\JobRepository;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Persistence\Generic\QueryResult;
/**
* Frontend filter service class
......@@ -228,4 +230,66 @@ class FrontendFilterService {
return $result;
}
/**
* @param array $filters
* @param int $siteRootId
* @return QueryResult
* @throws \InvalidArgumentException
*/
public static function getJobs(array $filters = [], $siteRootId): array {
// get all company ids
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(
'tx_sgjobs_domain_model_company'
);
$statement = $queryBuilder->select('b.uid')
->from('tx_sgjobs_domain_model_job', 'a')
->join(
'a', 'tx_sgjobs_domain_model_company', 'b'
, $queryBuilder->expr()->eq('a.company', 'b.uid')
)
->where(
$queryBuilder->expr()->eq(
'b.country', $queryBuilder->createNamedParameter($filters['country'])
)
);
if ($filters['city'] !== '0' && $filters['city'] !== NULL) {
$statement->andWhere(
$queryBuilder->expr()->eq(
'b.city', $queryBuilder->createNamedParameter($filters['city'])
)
);
}
if ($filters['company'] !== '0' && $filters['company'] !== NULL) {
$statement->andWhere(
$queryBuilder->expr()->eq(
'b.name', $queryBuilder->createNamedParameter($filters['company'])
)
);
}
if ($filters['area'] !== '0' && $filters['area'] !== NULL) {
$statement->andWhere(
$queryBuilder->expr()->eq(
'b.name', $queryBuilder->createNamedParameter($filters['area'])
)
);
}
$companies = $statement->execute()->fetchAll();
$result = [];
$result[0] = '';
foreach ($companies as $company) {
$result[$company['uid']] = $company['uid'];
}
// use company ids to filter the jobs
/** @var JobRepository $jobRepository */
$jobRepository = GeneralUtility::makeInstance(JobRepository::class);
return $jobRepository->findByCompanyId($siteRootId, $result);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment