Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 09469c2

Browse files
SORMAS-Foundation#3590 - Fixed filter by responsible surveillance officer in events directory
1 parent 4dd4950 commit 09469c2

1 file changed

Lines changed: 42 additions & 10 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventsFilterForm.java

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static de.symeda.sormas.ui.utils.LayoutUtil.loc;
55

66
import java.util.Date;
7+
import java.util.List;
78
import java.util.Set;
89
import java.util.stream.Stream;
910

@@ -28,6 +29,8 @@
2829
import de.symeda.sormas.api.location.LocationDto;
2930
import de.symeda.sormas.api.region.DistrictReferenceDto;
3031
import de.symeda.sormas.api.region.RegionReferenceDto;
32+
import de.symeda.sormas.api.user.UserDto;
33+
import de.symeda.sormas.api.user.UserReferenceDto;
3134
import de.symeda.sormas.api.user.UserRole;
3235
import de.symeda.sormas.api.utils.DateFilterOption;
3336
import de.symeda.sormas.api.utils.DateHelper;
@@ -91,10 +94,7 @@ protected void addFields() {
9194
addField(FieldConfiguration.pixelSized(EventIndexDto.DISEASE, 140));
9295
addField(FieldConfiguration.withCaptionAndPixelSized(EventCriteria.REPORTING_USER_ROLE, I18nProperties.getString(Strings.reportedBy), 140));
9396
ComboBox officerField = addField(FieldConfiguration.pixelSized(EventCriteria.SURVEILLANCE_OFFICER, 140));
94-
RegionReferenceDto userRegion = UserProvider.getCurrent().getUser().getRegion();
95-
if (userRegion != null) {
96-
officerField.addItems(FacadeProvider.getUserFacade().getUsersByRegionAndRoles(userRegion, UserRole.SURVEILLANCE_OFFICER));
97-
}
97+
officerField.addItems(fetchSurveillanceOfficersByRegion(currentUser().getRegion()));
9898
TextField searchField = addField(
9999
FieldConfiguration.withCaptionAndPixelSized(EventCriteria.FREE_TEXT, I18nProperties.getString(Strings.promptEventsSearchField), 200));
100100
searchField.setNullRepresentation("");
@@ -220,20 +220,22 @@ protected void applyDependenciesOnFieldChange(String propertyId, Property.ValueC
220220
switch (propertyId) {
221221
case LocationDto.REGION:
222222
RegionReferenceDto region = (RegionReferenceDto) event.getProperty().getValue();
223-
if (region == null) {
224-
clearAndDisableFields(LocationDto.DISTRICT, LocationDto.COMMUNITY);
225-
} else {
223+
if (region != null) {
226224
applyRegionFilterDependency(region, LocationDto.DISTRICT);
227225
clearAndDisableFields(LocationDto.COMMUNITY);
226+
} else {
227+
clearAndDisableFields(LocationDto.DISTRICT, LocationDto.COMMUNITY);
228228
}
229+
populateSurveillanceOfficersForRegion(region);
229230
break;
230231
case LocationDto.DISTRICT:
231232
DistrictReferenceDto district = (DistrictReferenceDto) event.getProperty().getValue();
232-
if (district == null) {
233-
clearAndDisableFields(LocationDto.COMMUNITY);
234-
} else {
233+
if (district != null) {
235234
applyDistrictDependency(district, LocationDto.COMMUNITY);
235+
} else {
236+
clearAndDisableFields(LocationDto.COMMUNITY);
236237
}
238+
populateSurveillanceOfficersForDistrict(district);
237239
break;
238240
}
239241
}
@@ -296,6 +298,36 @@ private void applyDateDependencyOnNewValue(String componentId, DateFilterOption
296298
}
297299
}
298300

301+
private void populateSurveillanceOfficersForRegion(RegionReferenceDto regionReferenceDto) {
302+
List<UserReferenceDto> items = fetchSurveillanceOfficersByRegion(regionReferenceDto != null ? regionReferenceDto : currentUser().getRegion());
303+
populateSurveillanceOfficers(items);
304+
}
305+
306+
private void populateSurveillanceOfficersForDistrict(DistrictReferenceDto districtReferenceDto) {
307+
if (districtReferenceDto != null) {
308+
List<UserReferenceDto> items =
309+
FacadeProvider.getUserFacade().getUserRefsByDistrict(districtReferenceDto, false, UserRole.SURVEILLANCE_OFFICER);
310+
populateSurveillanceOfficers(items);
311+
} else {
312+
final ComboBox regionField = getField(EventCriteria.REGION);
313+
populateSurveillanceOfficersForRegion((RegionReferenceDto) regionField.getValue());
314+
}
315+
}
316+
317+
private void populateSurveillanceOfficers(List<UserReferenceDto> items) {
318+
final ComboBox officerField = getField(EventCriteria.SURVEILLANCE_OFFICER);
319+
officerField.removeAllItems();
320+
officerField.addItems(items);
321+
}
322+
323+
private List<UserReferenceDto> fetchSurveillanceOfficersByRegion(RegionReferenceDto regionReferenceDto) {
324+
return FacadeProvider.getUserFacade().getUsersByRegionAndRoles(regionReferenceDto, UserRole.SURVEILLANCE_OFFICER);
325+
}
326+
327+
private UserDto currentUser() {
328+
return UserProvider.getCurrent().getUser();
329+
}
330+
299331
@Override
300332
protected String createMoreFiltersHtmlLayout() {
301333
return MORE_FILTERS_HTML_LAYOUT;

0 commit comments

Comments
 (0)