diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/EbsDao.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/EbsDao.java index 4f6ab95e86c..14649e54570 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/EbsDao.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/EbsDao.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.QueryBuilder; @@ -18,9 +19,11 @@ import de.symeda.sormas.app.backend.common.AbstractAdoDao; import de.symeda.sormas.app.backend.common.AbstractDomainObject; import de.symeda.sormas.app.backend.common.DatabaseHelper; +import de.symeda.sormas.app.backend.config.ConfigProvider; import de.symeda.sormas.app.backend.ebs.signalVerification.SignalVerification; import de.symeda.sormas.app.backend.ebs.triaging.Triaging; import de.symeda.sormas.app.backend.location.Location; +import de.symeda.sormas.app.backend.user.User; public class EbsDao extends AbstractAdoDao { @@ -124,15 +127,24 @@ private QueryBuilder buildQueryBuilder(EbsCriteria criteria) throws S DateHelper.getEndOfDay(criteria.getTriageDate())); } - if (criteria.getRegion() != null) { - locationLongQueryBuilder.where().eq(Location.REGION + "_id", criteria.getRegion().getId()); + User currentUser = ConfigProvider.getUser(); + + if (currentUser.getRegion() != null || currentUser.getDistrict() != null) { + if (currentUser.getRegion() != null) { + locationLongQueryBuilder.where().eq(Location.REGION + "_id", currentUser.getRegion().getId()); + } + if (currentUser.getDistrict() != null) { + locationLongQueryBuilder.where().eq(Location.DISTRICT + "_id", currentUser.getDistrict().getId()); + } + if (currentUser.getCommunity() != null) { + locationLongQueryBuilder.where().eq(Location.COMMUNITY + "_id", currentUser.getCommunity().getId()); + } queryBuilder.leftJoin(locationLongQueryBuilder); } if (criteria.getDistrict() != null) { - locationLongQueryBuilder.where().eq(Location.DISTRICT + "_id", criteria.getDistrict().getId()); - } - if (criteria.getCommunity() != null) { - locationLongQueryBuilder.where().eq(Location.COMMUNITY + "_id", criteria.getCommunity().getId()); + if (Objects.equals(currentUser.getDistrict().getId(), criteria.getDistrict().getId())) { + System.out.println("User District: " + currentUser.getDistrict().getId() + " Criteria District: " + criteria.getDistrict().getId()); + } } if (!whereStatements.isEmpty()) { Where whereStatement = where.and(whereStatements.size()); diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/triaging/Triaging.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/triaging/Triaging.java index 5f955bc0ff9..8e4a37e1bef 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/triaging/Triaging.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/backend/ebs/triaging/Triaging.java @@ -1,15 +1,15 @@ package de.symeda.sormas.app.backend.ebs.triaging; -import com.j256.ormlite.field.DataType; -import com.j256.ormlite.field.DatabaseField; -import com.j256.ormlite.table.DatabaseTable; - import java.util.Date; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; +import com.j256.ormlite.field.DataType; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + import de.symeda.sormas.api.ebs.AnimalCommunityCategoryDetails; import de.symeda.sormas.api.ebs.AnimalFacilityCategoryDetails; import de.symeda.sormas.api.ebs.AnimalLaboratoryCategoryDetails; @@ -33,283 +33,258 @@ @DatabaseTable(tableName = Triaging.TABLE_NAME) public class Triaging extends PseudonymizableAdo { - private static final long serialVersionUID = 2430932452606853497L; - - public static final String TABLE_NAME = "triaging"; - public static final String I18N_PREFIX = "triaging"; - - public static final String SUPERVISOR_REVIEW = "supervisorReview"; - public static final String SPECIFIC_SIGNAL = "specificSignal"; - public static final String HEALTH_CONCERN = "healthConcern"; - public static final String SIGNAL_CATEGORY = "signalCategory"; - public static final String HUMAN_COMMUNITY_CATEGORY_DETAILS = "humanCommunityCategoryDetails"; - public static final String HUMAN_FACILITY_CATEGORY_DETAILS = "humanFacilityCategoryDetails"; - public static final String HUMAN_LABORATORY_CATEGORY_DETAILS = "humanLaboratoryCategoryDetails"; - public static final String ANIMAL_COMMUNITY_CATEGORY_DETAILS = "animalCommunityCategoryDetails"; - public static final String ANIMAL_FACILITY_CATEGORY_DETAILS = "animalFacilityCategoryDetails"; - public static final String ANIMAL_LABORATORY_CATEGORY_DETAILS = "animalLaboratoryCategoryDetails"; - public static final String ENVIRONMENTAL_CATEGORY_DETAILS = "environmentalCategoryDetails"; - public static final String POE_CATEGORY_DETAILS = "poeCategoryDetails"; - public static final String OCCURRENCE_PREVIOUSLY = "occurrencePreviously"; - public static final String TRIAGING_DECISION = "triagingDecision"; - public static final String DATE_OF_DECISION = "decisionDate"; - public static final String REFERRED_TO = "referredTo"; - public static final String RESPONSIBLE_USER = "responsibleUser"; - public static final String OUTCOME_SUPERVISOR = "outcomeSupervisor"; - public static final String NOT_SIGNAL = "notSignal"; - public static final String CATEGORY_DETAILS_LEVEL = "categoryDetailsLevel"; - public static final String POTENTIAL_RISK = "potentialRisk"; - public static final String REFERRED = "referred"; - - - @Enumerated(EnumType.STRING) - private YesNo supervisorReview; - @Enumerated(EnumType.STRING) - private YesNo referred; - @Enumerated(EnumType.STRING) - private YesNo specificSignal; - @Enumerated(EnumType.STRING) - private SignalCategory signalCategory; - @Enumerated(EnumType.STRING) - private YesNo healthConcern; - @Enumerated(EnumType.STRING) - private HumanCommunityCategoryDetails humanCommunityCategoryDetails; - @Enumerated(EnumType.STRING) - private HumanFaclityCategoryDetails humanFacilityCategoryDetails; - @Enumerated(EnumType.STRING) - private HumanLaboratoryCategoryDetails humanLaboratoryCategoryDetails; - @Enumerated(EnumType.STRING) - private AnimalCommunityCategoryDetails animalCommunityCategoryDetails; - @Enumerated(EnumType.STRING) - private AnimalFacilityCategoryDetails animalFacilityCategoryDetails; - @Enumerated(EnumType.STRING) - private AnimalLaboratoryCategoryDetails animalLaboratoryCategoryDetails; - @Enumerated(EnumType.STRING) - private EnvironmentalCategoryDetails environmentalCategoryDetails; - @Enumerated(EnumType.STRING) - private POE poeCategoryDetails; - @Enumerated(EnumType.STRING) - private CategoryDetailsLevel categoryDetailsLevel; - - @DatabaseField(foreign = true, foreignAutoRefresh = true) - private Ebs ebs; - - @Enumerated(EnumType.STRING) - private YesNo occurrencePreviously; - @Enumerated(EnumType.STRING) - private EbsTriagingDecision triagingDecision; - - @DatabaseField - private String triagingDecisionString; - @DatabaseField(dataType = DataType.DATE_LONG) - private Date decisionDate; - @DatabaseField - private String referredTo; - - @Enumerated(EnumType.STRING) - private OutComeSupervisor outcomeSupervisor; - @DatabaseField - private boolean notSignal; - @Enumerated(EnumType.STRING) - private YesNo potentialRisk; - - public EbsReferenceDto toReference() { - return new EbsReferenceDto(getUuid()); - } - - - public YesNo getSupervisorReview() { - return supervisorReview; - } - - public void setSupervisorReview(YesNo earlyWarning) { - this.supervisorReview = earlyWarning; - } - - public YesNo getSpecificSignal() { - return specificSignal; - } - - public void setSpecificSignal(YesNo specificSignal) { - this.specificSignal = specificSignal; - } - - @Enumerated(EnumType.STRING) - public SignalCategory getSignalCategory() { - return signalCategory; - } - - public void setSignalCategory(SignalCategory signalCategory) { - this.signalCategory = signalCategory; - } - - public YesNo getHealthConcern() { - return healthConcern; - } - - public void setHealthConcern(YesNo healthConcern) { - this.healthConcern = healthConcern; - } - - - public HumanCommunityCategoryDetails getHumanCommunityCategoryDetails() { - return humanCommunityCategoryDetails; - } - - public void setHumanCommunityCategoryDetails(HumanCommunityCategoryDetails humanCommunityCategoryDetails) { - this.humanCommunityCategoryDetails = humanCommunityCategoryDetails; - } - - public HumanFaclityCategoryDetails getHumanFacilityCategoryDetails() { - return humanFacilityCategoryDetails; - } - - public void setHumanFacilityCategoryDetails(HumanFaclityCategoryDetails humanFacilityCategoryDetails) { - this.humanFacilityCategoryDetails = humanFacilityCategoryDetails; - } - - public HumanLaboratoryCategoryDetails getHumanLaboratoryCategoryDetails() { - return humanLaboratoryCategoryDetails; - } - - public void setHumanLaboratoryCategoryDetails(HumanLaboratoryCategoryDetails humanLaboratoryCategoryDetails) { - this.humanLaboratoryCategoryDetails = humanLaboratoryCategoryDetails; - } - - public AnimalCommunityCategoryDetails getAnimalCommunityCategoryDetails() { - return animalCommunityCategoryDetails; - } - - public void setAnimalCommunityCategoryDetails(AnimalCommunityCategoryDetails animalCommunityCategoryDetails) { - this.animalCommunityCategoryDetails = animalCommunityCategoryDetails; - } - - public AnimalFacilityCategoryDetails getAnimalFacilityCategoryDetails() { - return animalFacilityCategoryDetails; - } - - public void setAnimalFacilityCategoryDetails(AnimalFacilityCategoryDetails animalFacilityCategoryDetails) { - this.animalFacilityCategoryDetails = animalFacilityCategoryDetails; - - } - - public AnimalLaboratoryCategoryDetails getAnimalLaboratoryCategoryDetails() { - return animalLaboratoryCategoryDetails; - } + public static final String TABLE_NAME = "triaging"; + public static final String I18N_PREFIX = "triaging"; + public static final String SIGNAL_CATEGORY = "signalCategory"; + public static final String TRIAGING_DECISION = "triagingDecision"; + public static final String DATE_OF_DECISION = "decisionDate"; + private static final long serialVersionUID = 2430932452606853497L; + @Enumerated(EnumType.STRING) + private YesNo supervisorReview; + @Enumerated(EnumType.STRING) + private YesNo referred; + @Enumerated(EnumType.STRING) + private YesNo specificSignal; + @Enumerated(EnumType.STRING) + private SignalCategory signalCategory; + @Enumerated(EnumType.STRING) + private YesNo healthConcern; + @Enumerated(EnumType.STRING) + private HumanCommunityCategoryDetails humanCommunityCategoryDetails; + @Enumerated(EnumType.STRING) + private HumanFaclityCategoryDetails humanFacilityCategoryDetails; + @Enumerated(EnumType.STRING) + private HumanLaboratoryCategoryDetails humanLaboratoryCategoryDetails; + @Enumerated(EnumType.STRING) + private AnimalCommunityCategoryDetails animalCommunityCategoryDetails; + @Enumerated(EnumType.STRING) + private AnimalFacilityCategoryDetails animalFacilityCategoryDetails; + @Enumerated(EnumType.STRING) + private AnimalLaboratoryCategoryDetails animalLaboratoryCategoryDetails; + @Enumerated(EnumType.STRING) + private EnvironmentalCategoryDetails environmentalCategoryDetails; + @Enumerated(EnumType.STRING) + private POE poeCategoryDetails; + @Enumerated(EnumType.STRING) + private CategoryDetailsLevel categoryDetailsLevel; + + @DatabaseField(foreign = true, foreignAutoRefresh = true) + private Ebs ebs; + + @Enumerated(EnumType.STRING) + private YesNo occurrencePreviously; + @Enumerated(EnumType.STRING) + private EbsTriagingDecision triagingDecision; + + @DatabaseField + private String triagingDecisionString; + @DatabaseField(dataType = DataType.DATE_LONG) + private Date decisionDate; + @DatabaseField + private String referredTo; + + @Enumerated(EnumType.STRING) + private OutComeSupervisor outcomeSupervisor; + @DatabaseField + private boolean notSignal; + @Enumerated(EnumType.STRING) + private YesNo potentialRisk; + + public EbsReferenceDto toReference() { + return new EbsReferenceDto(getUuid()); + } + + public YesNo getSupervisorReview() { + return supervisorReview; + } + + public void setSupervisorReview(YesNo earlyWarning) { + this.supervisorReview = earlyWarning; + } + + public YesNo getSpecificSignal() { + return specificSignal; + } + + public void setSpecificSignal(YesNo specificSignal) { + this.specificSignal = specificSignal; + } + + @Enumerated(EnumType.STRING) + public SignalCategory getSignalCategory() { + return signalCategory; + } + + public void setSignalCategory(SignalCategory signalCategory) { + this.signalCategory = signalCategory; + } + + public YesNo getHealthConcern() { + return healthConcern; + } + + public void setHealthConcern(YesNo healthConcern) { + this.healthConcern = healthConcern; + } + + public HumanCommunityCategoryDetails getHumanCommunityCategoryDetails() { + return humanCommunityCategoryDetails; + } + + public void setHumanCommunityCategoryDetails(HumanCommunityCategoryDetails humanCommunityCategoryDetails) { + this.humanCommunityCategoryDetails = humanCommunityCategoryDetails; + } + + public HumanFaclityCategoryDetails getHumanFacilityCategoryDetails() { + return humanFacilityCategoryDetails; + } + + public void setHumanFacilityCategoryDetails(HumanFaclityCategoryDetails humanFacilityCategoryDetails) { + this.humanFacilityCategoryDetails = humanFacilityCategoryDetails; + } + + public HumanLaboratoryCategoryDetails getHumanLaboratoryCategoryDetails() { + return humanLaboratoryCategoryDetails; + } + + public void setHumanLaboratoryCategoryDetails(HumanLaboratoryCategoryDetails humanLaboratoryCategoryDetails) { + this.humanLaboratoryCategoryDetails = humanLaboratoryCategoryDetails; + } + + public AnimalCommunityCategoryDetails getAnimalCommunityCategoryDetails() { + return animalCommunityCategoryDetails; + } + + public void setAnimalCommunityCategoryDetails(AnimalCommunityCategoryDetails animalCommunityCategoryDetails) { + this.animalCommunityCategoryDetails = animalCommunityCategoryDetails; + } + + public AnimalFacilityCategoryDetails getAnimalFacilityCategoryDetails() { + return animalFacilityCategoryDetails; + } + + public void setAnimalFacilityCategoryDetails(AnimalFacilityCategoryDetails animalFacilityCategoryDetails) { + this.animalFacilityCategoryDetails = animalFacilityCategoryDetails; + + } - public void setAnimalLaboratoryCategoryDetails(AnimalLaboratoryCategoryDetails animalLaboratoryCategoryDetails) { - this.animalLaboratoryCategoryDetails = animalLaboratoryCategoryDetails; - } + public AnimalLaboratoryCategoryDetails getAnimalLaboratoryCategoryDetails() { + return animalLaboratoryCategoryDetails; + } + + public void setAnimalLaboratoryCategoryDetails(AnimalLaboratoryCategoryDetails animalLaboratoryCategoryDetails) { + this.animalLaboratoryCategoryDetails = animalLaboratoryCategoryDetails; + } - public EnvironmentalCategoryDetails getEnvironmentalCategoryDetails() { - return environmentalCategoryDetails; - } + public EnvironmentalCategoryDetails getEnvironmentalCategoryDetails() { + return environmentalCategoryDetails; + } - public void setEnvironmentalCategoryDetails(EnvironmentalCategoryDetails environmentalCategoryDetails) { - this.environmentalCategoryDetails = environmentalCategoryDetails; - } + public void setEnvironmentalCategoryDetails(EnvironmentalCategoryDetails environmentalCategoryDetails) { + this.environmentalCategoryDetails = environmentalCategoryDetails; + } - public POE getPoeCategoryDetails() { - return poeCategoryDetails; - } + public POE getPoeCategoryDetails() { + return poeCategoryDetails; + } - public void setPoeCategoryDetails(POE poeCategoryDetails) { - this.poeCategoryDetails = poeCategoryDetails; + public void setPoeCategoryDetails(POE poeCategoryDetails) { + this.poeCategoryDetails = poeCategoryDetails; - } + } - public YesNo getOccurrencePreviously() { - return occurrencePreviously; - } + public YesNo getOccurrencePreviously() { + return occurrencePreviously; + } - public void setOccurrencePreviously(YesNo occurrencePreviously) { - this.occurrencePreviously = occurrencePreviously; - } + public void setOccurrencePreviously(YesNo occurrencePreviously) { + this.occurrencePreviously = occurrencePreviously; + } - public EbsTriagingDecision getTriagingDecision() { - return triagingDecision; - } + public EbsTriagingDecision getTriagingDecision() { + return triagingDecision; + } - public void setTriagingDecision(EbsTriagingDecision triagingDecision) { - this.triagingDecision = triagingDecision; - } + public void setTriagingDecision(EbsTriagingDecision triagingDecision) { + this.triagingDecision = triagingDecision; + } - public Date getDecisionDate() { - return decisionDate; - } + public Date getDecisionDate() { + return decisionDate; + } - public void setDecisionDate(Date decisionDate) { - this.decisionDate = decisionDate; - } + public void setDecisionDate(Date decisionDate) { + this.decisionDate = decisionDate; + } - public String getReferredTo() { - return referredTo; - } + public String getReferredTo() { + return referredTo; + } - public void setReferredTo(String referredTo) { - this.referredTo = referredTo; - } + public void setReferredTo(String referredTo) { + this.referredTo = referredTo; + } + public String getTriagingDecisionString() { + return triagingDecisionString; + } - public String getTriagingDecisionString() { - return triagingDecisionString; - } + public void setTriagingDecisionString(String triagingDecisionString) { + this.triagingDecisionString = triagingDecisionString; + } - public void setTriagingDecisionString(String triagingDecisionString) { - this.triagingDecisionString = triagingDecisionString; - } - @Enumerated(EnumType.STRING) - public OutComeSupervisor getOutcomeSupervisor() { - return outcomeSupervisor; - } + @Enumerated(EnumType.STRING) + public OutComeSupervisor getOutcomeSupervisor() { + return outcomeSupervisor; + } - public void setOutcomeSupervisor(OutComeSupervisor outcomeSupervisor) { - this.outcomeSupervisor = outcomeSupervisor; - } + public void setOutcomeSupervisor(OutComeSupervisor outcomeSupervisor) { + this.outcomeSupervisor = outcomeSupervisor; + } + public boolean getNotSignal() { + return notSignal; + } - public boolean getNotSignal() { - return notSignal; - } + public void setNotSignal(boolean notSignal) { + this.notSignal = notSignal; + } - public void setNotSignal(boolean notSignal) { - this.notSignal = notSignal; - } - @Enumerated(EnumType.STRING) - public CategoryDetailsLevel getCategoryDetailsLevel() { - return categoryDetailsLevel; - } + @Enumerated(EnumType.STRING) + public CategoryDetailsLevel getCategoryDetailsLevel() { + return categoryDetailsLevel; + } - public void setCategoryDetailsLevel(CategoryDetailsLevel categoryDetailsLevel) { - this.categoryDetailsLevel = categoryDetailsLevel; - } + public void setCategoryDetailsLevel(CategoryDetailsLevel categoryDetailsLevel) { + this.categoryDetailsLevel = categoryDetailsLevel; + } - public YesNo getPotentialRisk() { - return potentialRisk; - } + public YesNo getPotentialRisk() { + return potentialRisk; + } - public void setPotentialRisk(YesNo potentialRisk) { - this.potentialRisk = potentialRisk; - } + public void setPotentialRisk(YesNo potentialRisk) { + this.potentialRisk = potentialRisk; + } - public YesNo getReferred() { - return referred; - } + public YesNo getReferred() { + return referred; + } - public void setReferred(YesNo referred) { - this.referred = referred; - } + public void setReferred(YesNo referred) { + this.referred = referred; + } - @Override - public String getI18nPrefix() { - return I18N_PREFIX; - } + @Override + public String getI18nPrefix() { + return I18N_PREFIX; + } - public Ebs getEbs() { - return ebs; - } + public Ebs getEbs() { + return ebs; + } - public void setEbs(Ebs ebs) { - this.ebs = ebs; - } + public void setEbs(Ebs ebs) { + this.ebs = ebs; + } } diff --git a/sormas-app/app/src/main/java/de/symeda/sormas/app/ebs/list/EbsListActivity.java b/sormas-app/app/src/main/java/de/symeda/sormas/app/ebs/list/EbsListActivity.java index 7f368384a79..4d17ba015ec 100644 --- a/sormas-app/app/src/main/java/de/symeda/sormas/app/ebs/list/EbsListActivity.java +++ b/sormas-app/app/src/main/java/de/symeda/sormas/app/ebs/list/EbsListActivity.java @@ -16,6 +16,7 @@ import de.symeda.sormas.api.ebs.EbsTriagingDecision; import de.symeda.sormas.api.ebs.SignalCategory; import de.symeda.sormas.api.ebs.SignalOutcome; +import de.symeda.sormas.api.user.JurisdictionLevel; import de.symeda.sormas.api.user.UserRight; import de.symeda.sormas.app.BaseListActivity; import de.symeda.sormas.app.PagedBaseListActivity; @@ -24,6 +25,7 @@ import de.symeda.sormas.app.backend.config.ConfigProvider; import de.symeda.sormas.app.backend.region.District; import de.symeda.sormas.app.backend.region.Region; +import de.symeda.sormas.app.backend.user.User; import de.symeda.sormas.app.component.Item; import de.symeda.sormas.app.component.menu.PageMenuItem; import de.symeda.sormas.app.databinding.FilterEbsListLayoutBinding; @@ -39,6 +41,7 @@ public class EbsListActivity extends PagedBaseListActivity { SignalOutcome.EVENT }; public static boolean showWarningAlert = false; public static int message = 0; + User currentUser = ConfigProvider.getUser(); private EbsListViewModel model; private FilterEbsListLayoutBinding filterBinding; @@ -155,13 +158,15 @@ public void addFiltersToPageMenu() { filterBinding.ebsSourceInformationFilter.initializeSpinner(sourceInformation); filterBinding.triagingSignalCategoryFilter.initializeSpinner(signalCategory); filterBinding.triagingTriagingDecisionFilter.initializeSpinner(triagingDecision); - filterBinding.ebsRegionFilter.initializeSpinner(InfrastructureDaoHelper.loadRegionsByServerCountry()); - filterBinding.ebsRegionFilter.addValueChangedListener(e -> { - filterBinding.ebsDistrictFilter.initializeSpinner(InfrastructureDaoHelper.loadDistricts((Region) e.getValue())); - }); - filterBinding.ebsDistrictFilter.addValueChangedListener(e -> { - filterBinding.ebsCommunityFilter.initializeSpinner(InfrastructureDaoHelper.loadCommunities((District) e.getValue())); - }); + if (currentUser.getJurisdictionLevel() == JurisdictionLevel.NATION) { + filterBinding.ebsRegionFilter.initializeSpinner(InfrastructureDaoHelper.loadRegionsByServerCountry()); + filterBinding.ebsRegionFilter.addValueChangedListener(e -> { + filterBinding.ebsDistrictFilter.initializeSpinner(InfrastructureDaoHelper.loadDistricts((Region) e.getValue())); + }); + filterBinding.ebsDistrictFilter.addValueChangedListener(e -> { + filterBinding.ebsCommunityFilter.initializeSpinner(InfrastructureDaoHelper.loadCommunities((District) e.getValue())); + }); + } filterBinding.ebsReportDateTimeFilter.initializeDateField(getSupportFragmentManager()); filterBinding.triagingDecisionDateFilter.initializeDateField(getSupportFragmentManager()); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsFacadeEjb.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsFacadeEjb.java index f20ac27ef66..b73b7b356a6 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsFacadeEjb.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsFacadeEjb.java @@ -471,6 +471,9 @@ public List getIndexList(EbsCriteria ebsCriteria, Integer first, In Predicate criteriaFilter = service.buildCriteriaFilter(ebsCriteria, ebsQueryContext); filter = CriteriaBuilderHelper.and(cb, filter, criteriaFilter); } + if (filter != null) { + cq.where(filter); + } sortBy(sortProperties, ebsQueryContext); cq.distinct(true); diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsService.java index 61c99f6fbe1..0f039331bc1 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/ebs/EbsService.java @@ -397,6 +397,28 @@ public Predicate buildCriteriaFilter(EbsCriteria ebsCriteria, EbsQueryContext eb Predicate filter = null; + User currentUser = getCurrentUser(); + if (currentUser == null) { + return null; + } + final JurisdictionLevel jurisdictionLevel = currentUser.getJurisdictionLevel(); + if (jurisdictionLevel != JurisdictionLevel.NATION) { + if (currentUser.getRegion() != null) { + Predicate regionPredicate = cb.equal(joins.getLocation().get(Location.REGION).get(Region.ID), currentUser.getRegion().getId()); + filter = regionPredicate; + if (currentUser.getDistrict() != null) { + Predicate districtPredicate = + cb.equal(joins.getLocation().get(Location.DISTRICT).get(District.ID), currentUser.getDistrict().getId()); + filter = cb.and(filter, districtPredicate); + } + if (currentUser.getCommunity() != null) { + Predicate communityPredicate = + cb.equal(joins.getLocation().get(Location.COMMUNITY).get(Community.ID), currentUser.getCommunity().getId()); + filter = cb.and(filter, communityPredicate); + } + } + } + if (ebsCriteria.getRiskAssessment() != null) { filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(joins.getRiskAssessment().get(RiskAssessment.RISK_ASSESSMENT), ebsCriteria.getRiskAssessment())); }