From 42ebfd607f027674cb747d9a2b533bd6a3feb212 Mon Sep 17 00:00:00 2001 From: ssedoudbgouv Date: Thu, 22 Feb 2024 14:14:15 +0100 Subject: [PATCH] TRELLO-2204: fix department filter --- app/repositories/company/CompanyRepository.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/repositories/company/CompanyRepository.scala b/app/repositories/company/CompanyRepository.scala index 9dabf04a0..4e8336f37 100644 --- a/app/repositories/company/CompanyRepository.scala +++ b/app/repositories/company/CompanyRepository.scala @@ -23,6 +23,7 @@ import repositories.CRUDRepository import slick.basic.DatabaseConfig import utils.Constants.ActionEvent.POST_FOLLOW_UP_DOC import utils.Constants.ActionEvent.REPORT_CLOSED_BY_NO_READING +import utils.Constants.Departments.toPostalCode import java.sql.Timestamp import java.time.OffsetDateTime @@ -53,8 +54,17 @@ class CompanyRepository(override val dbConfig: DatabaseConfig[JdbcProfile])(impl val query = table .joinLeft(ReportTable.table(Some(userRole))) .on(_.id === _.companyId) - .filterIf(search.departments.nonEmpty) { case (company, _) => - company.department.map(a => a.inSet(search.departments)).getOrElse(false) +// .filterIf(search.departments.nonEmpty) { case (company, _) => +// company.department.map(a => a.inSet(search.departments)).getOrElse(false) +// } + .filterIf(search.departments.nonEmpty) { case (company, report) => + val departmentsFilter: Rep[Boolean] = search.departments + .flatMap(toPostalCode) + .map(dep => company.department.asColumnOf[String] like s"${dep}%") + .reduceLeft(_ || _) + // Avoid searching departments in foreign countries + departmentsFilter && report.map(_.companyCountry).isEmpty + } .filterIf(search.activityCodes.nonEmpty) { case (company, _) => company.activityCode.map(a => a.inSet(search.activityCodes)).getOrElse(false)