From 0ceb76a6bd90d6d18fcc2aec42444199c2445a99 Mon Sep 17 00:00:00 2001 From: Stefan Galinski <stefan@sgalinski.de> Date: Thu, 14 Jul 2022 17:55:08 +0200 Subject: [PATCH] [TASK] --- Classes/Domain/Repository/JobRepository.php | 23 +++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Classes/Domain/Repository/JobRepository.php b/Classes/Domain/Repository/JobRepository.php index b308d010..67c863a8 100644 --- a/Classes/Domain/Repository/JobRepository.php +++ b/Classes/Domain/Repository/JobRepository.php @@ -278,11 +278,7 @@ class JobRepository extends Repository { // the minimum amount of related jobs, we should try to find before removing constraints $minRelatedJobs = 2; $relatedJobs = []; - $query = $this->prepareRelatedJobsQuery($job, 0); - - if ($limit > 0) { - $query->setLimit($limit); - } + $query = $this->prepareRelatedJobsQuery($job, 0, $limit); $resultCount = $query->count(); @@ -290,13 +286,13 @@ class JobRepository extends Repository { if ($resultCount < $minRelatedJobs) { $queryResult = $query->execute()->toArray(); array_push($relatedJobs, ...$queryResult); - $query = $this->prepareRelatedJobsQuery($job, 1); + $query = $this->prepareRelatedJobsQuery($job, 1, $limit); $queryResult = $query->execute()->toArray(); array_push($relatedJobs, ...$queryResult); $relatedJobs = array_unique($relatedJobs); $relatedJobsCount = count($relatedJobs); if ($relatedJobsCount < $minRelatedJobs) { - $query = $this->prepareRelatedJobsQuery($job, 2); + $query = $this->prepareRelatedJobsQuery($job, 2, $limit); $queryResult = $query->execute()->toArray(); array_push($relatedJobs, ...$queryResult); $relatedJobs = array_unique($relatedJobs); @@ -313,10 +309,11 @@ class JobRepository extends Repository { * Returns a query, to be used within findRelated() * * @param Job $job - * @param int $iteration + * @param int $iteration used different conditions based on the iteration step + * @param int $limit * @return QueryInterface */ - protected function prepareRelatedJobsQuery(Job $job, int $iteration): QueryInterface { + protected function prepareRelatedJobsQuery(Job $job, int $iteration, $limit = 0): QueryInterface { $query = $this->createQuery(); $constraints = []; $storagePageIds = $query->getQuerySettings()->getStoragePageIds(); @@ -327,6 +324,10 @@ class JobRepository extends Repository { $company = $job->getCompany(); $department = $job->getDepartment(); + if ($limit > 0) { + $query->setLimit($limit); + } + // look for jobs, which have the same company AND department if ($iteration === 0) { if ($company !== NULL) { @@ -336,10 +337,10 @@ class JobRepository extends Repository { if ($department !== NULL) { $constraints[] = $query->equals('department', $department->getUid()); } - } else if (($iteration === 1) && $company !== NULL) { + } elseif (($iteration === 1) && $company !== NULL) { // look for jobs, which have the same company $constraints[] = $query->equals('company', $company->getUid()); - } else if (($iteration === 2) && $department !== NULL) { + } elseif (($iteration === 2) && $department !== NULL) { // look for jobs, which have the same department $constraints[] = $query->equals('department', $department->getUid()); } -- GitLab