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

Commit 1d9f265

Browse files
Merge branch 'bugfix-3590-filter-by-responsible-surveillance-officer' into development
2 parents 34b043a + 3eae064 commit 1d9f265

7 files changed

Lines changed: 100 additions & 37 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/campaigndata/CampaignFormDataFilterForm.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import de.symeda.sormas.api.region.DistrictReferenceDto;
3333
import de.symeda.sormas.api.region.RegionReferenceDto;
3434
import de.symeda.sormas.api.user.UserDto;
35-
import de.symeda.sormas.ui.UserProvider;
3635
import de.symeda.sormas.ui.utils.AbstractFilterForm;
3736
import de.symeda.sormas.ui.utils.CssStyles;
3837
import de.symeda.sormas.ui.utils.FieldConfiguration;
@@ -79,17 +78,22 @@ protected void addFields() {
7978
});
8079
}
8180

82-
regionFilter = addField(FieldConfiguration.withCaptionAndPixelSized(CampaignFormDataCriteria.REGION, I18nProperties.getCaption(Captions.Campaign_region), 200));
81+
regionFilter = addField(
82+
FieldConfiguration.withCaptionAndPixelSized(CampaignFormDataCriteria.REGION, I18nProperties.getCaption(Captions.Campaign_region), 200));
8383
regionFilter.setInputPrompt(I18nProperties.getString(Strings.promptAllRegions));
8484
regionFilter.addItems(FacadeProvider.getRegionFacade().getAllActiveAsReference());
8585

86-
districtFilter = addField(FieldConfiguration.withCaptionAndPixelSized(CampaignFormDataCriteria.DISTRICT, I18nProperties.getCaption(Captions.Campaign_district), 200));
86+
districtFilter = addField(
87+
FieldConfiguration
88+
.withCaptionAndPixelSized(CampaignFormDataCriteria.DISTRICT, I18nProperties.getCaption(Captions.Campaign_district), 200));
8789
districtFilter.setInputPrompt(I18nProperties.getString(Strings.promptAllDistricts));
8890

89-
communityFilter = addField(FieldConfiguration.withCaptionAndPixelSized(CampaignFormDataCriteria.COMMUNITY, I18nProperties.getCaption(Captions.Campaign_community), 200));
91+
communityFilter = addField(
92+
FieldConfiguration
93+
.withCaptionAndPixelSized(CampaignFormDataCriteria.COMMUNITY, I18nProperties.getCaption(Captions.Campaign_community), 200));
9094
communityFilter.setInputPrompt(I18nProperties.getString(Strings.promptAllCommunities));
9195

92-
final UserDto user = UserProvider.getCurrent().getUser();
96+
UserDto user = currentUserDto();
9397
final RegionReferenceDto userRegion = user.getRegion();
9498
final DistrictReferenceDto userDistrict = user.getDistrict();
9599
final CommunityReferenceDto userCommunity = user.getCommunity();

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseFilterForm.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void addMoreFilters(CustomLayout moreFiltersContainer) {
130130
ComboBox presentConditionField = addField(moreFiltersContainer, FieldConfiguration.pixelSized(CaseCriteria.PRESENT_CONDITION, 140));
131131
presentConditionField.setInputPrompt(I18nProperties.getPrefixCaption(PersonDto.I18N_PREFIX, PersonDto.PRESENT_CONDITION));
132132

133-
UserDto user = UserProvider.getCurrent().getUser();
133+
UserDto user = currentUserDto();
134134
ComboBox regionField = null;
135135
if (user.getRegion() == null) {
136136
regionField = addField(moreFiltersContainer, FieldConfiguration.pixelSized(CaseDataDto.REGION, 140));
@@ -294,7 +294,7 @@ protected void applyDependenciesOnFieldChange(String propertyId, Property.ValueC
294294
final ComboBox pointOfEntryField = getField(CaseDataDto.POINT_OF_ENTRY);
295295
final ComboBox caseOriginField = getField(CaseDataDto.CASE_ORIGIN);
296296

297-
final UserDto user = UserProvider.getCurrent().getUser();
297+
final UserDto user = currentUserDto();
298298
final DistrictReferenceDto currentDistrict =
299299
user.getDistrict() != null ? user.getDistrict() : (DistrictReferenceDto) districtField.getValue();
300300
final CaseOrigin currentCaseOrigin =
@@ -469,10 +469,10 @@ protected void applyDependenciesOnNewValue(CaseCriteria criteria) {
469469

470470
final ComboBox districtField = getField(CaseDataDto.DISTRICT);
471471
final ComboBox communityField = getField(CaseDataDto.COMMUNITY);
472-
472+
473473
disableFields(districtField, communityField);
474474

475-
final UserDto user = UserProvider.getCurrent().getUser();
475+
final UserDto user = currentUserDto();
476476

477477
if (user.getRegion() != null) {
478478
if (user.getDistrict() == null) {

sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactsFilterForm.java

Lines changed: 41 additions & 9 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.stream.Stream;
89

910
import org.apache.commons.lang3.StringUtils;
@@ -39,6 +40,7 @@
3940
import de.symeda.sormas.api.region.RegionReferenceDto;
4041
import de.symeda.sormas.api.user.JurisdictionLevel;
4142
import de.symeda.sormas.api.user.UserDto;
43+
import de.symeda.sormas.api.user.UserReferenceDto;
4244
import de.symeda.sormas.api.user.UserRole;
4345
import de.symeda.sormas.api.utils.DateFilterOption;
4446
import de.symeda.sormas.api.utils.DateHelper;
@@ -137,7 +139,7 @@ protected void addFields() {
137139
@Override
138140
public void addMoreFilters(CustomLayout moreFiltersContainer) {
139141

140-
UserDto user = UserProvider.getCurrent().getUser();
142+
UserDto user = currentUserDto();
141143

142144
if (user.getRegion() == null) {
143145
ComboBox regionField = addField(
@@ -170,12 +172,13 @@ public void addMoreFilters(CustomLayout moreFiltersContainer) {
170172
CssStyles.style(infoLabel, CssStyles.LABEL_XLARGE, CssStyles.LABEL_SECONDARY, AbstractFilterForm.FILTER_ITEM_STYLE);
171173
moreFiltersContainer.addComponent(infoLabel, DISTRICT_INFO_LABEL_ID);
172174

173-
addField(
175+
ComboBox officerField = addField(
174176
moreFiltersContainer,
175177
FieldConfiguration.withCaptionAndPixelSized(
176178
ContactCriteria.CONTACT_OFFICER,
177179
I18nProperties.getPrefixCaption(ContactIndexDto.I18N_PREFIX, ContactIndexDto.CONTACT_OFFICER_UUID),
178180
140));
181+
officerField.addItems(fetchSurveillanceOfficersByRegion(currentUserDto().getRegion()));
179182
addField(
180183
moreFiltersContainer,
181184
FieldConfiguration.withCaptionAndPixelSized(ContactCriteria.REPORTING_USER_ROLE, I18nProperties.getString(Strings.reportedBy), 140));
@@ -314,21 +317,23 @@ protected void applyDependenciesOnFieldChange(String propertyId, Property.ValueC
314317
switch (propertyId) {
315318
case ContactCriteria.REGION: {
316319
RegionReferenceDto region = (RegionReferenceDto) event.getProperty().getValue();
317-
if (region == null) {
318-
clearAndDisableFields(ContactCriteria.DISTRICT, ContactCriteria.COMMUNITY);
319-
} else {
320+
if (region != null) {
320321
applyRegionFilterDependency(region, ContactCriteria.DISTRICT);
321322
clearAndDisableFields(ContactCriteria.COMMUNITY);
323+
} else {
324+
clearAndDisableFields(ContactCriteria.DISTRICT, ContactCriteria.COMMUNITY);
322325
}
326+
populateSurveillanceOfficersForRegion(region);
323327
break;
324328
}
325329
case ContactCriteria.DISTRICT: {
326330
DistrictReferenceDto district = (DistrictReferenceDto) event.getProperty().getValue();
327-
if (district == null) {
328-
clearAndDisableFields(ContactCriteria.COMMUNITY);
329-
} else {
331+
if (district != null) {
330332
applyDistrictDependency(district, ContactCriteria.COMMUNITY);
333+
} else {
334+
clearAndDisableFields(ContactCriteria.COMMUNITY);
331335
}
336+
populateSurveillanceOfficersForDistrict(district);
332337
break;
333338
}
334339
case ContactCriteria.FOLLOW_UP_UNTIL_TO: {
@@ -354,7 +359,7 @@ protected void applyDependenciesOnNewValue(ContactCriteria newValue) {
354359
final DistrictReferenceDto district = newValue.getDistrict();
355360
applyRegionAndDistrictFilterDependency(region, ContactCriteria.DISTRICT, district, ContactCriteria.COMMUNITY);
356361

357-
final UserDto user = UserProvider.getCurrent().getUser();
362+
final UserDto user = currentUserDto();
358363

359364
ComboBox officerField = getField(ContactCriteria.CONTACT_OFFICER);
360365
if (user.getRegion() != null) {
@@ -495,4 +500,31 @@ public void setSearchFieldEnabled(boolean enabled) {
495500
this.getField(ContactCriteria.NAME_UUID_CASE_LIKE).setEnabled(enabled);
496501
this.getField(ContactCriteria.EVENT_LIKE).setEnabled(enabled);
497502
}
503+
504+
private void populateSurveillanceOfficersForRegion(RegionReferenceDto regionReferenceDto) {
505+
List<UserReferenceDto> items =
506+
fetchSurveillanceOfficersByRegion(regionReferenceDto != null ? regionReferenceDto : currentUserDto().getRegion());
507+
populateSurveillanceOfficers(items);
508+
}
509+
510+
private void populateSurveillanceOfficersForDistrict(DistrictReferenceDto districtReferenceDto) {
511+
if (districtReferenceDto != null) {
512+
List<UserReferenceDto> items =
513+
FacadeProvider.getUserFacade().getUserRefsByDistrict(districtReferenceDto, false, UserRole.SURVEILLANCE_OFFICER);
514+
populateSurveillanceOfficers(items);
515+
} else {
516+
final ComboBox regionField = getField(ContactCriteria.REGION);
517+
populateSurveillanceOfficersForRegion((RegionReferenceDto) regionField.getValue());
518+
}
519+
}
520+
521+
private void populateSurveillanceOfficers(List<UserReferenceDto> items) {
522+
final ComboBox officerField = getField(ContactCriteria.CONTACT_OFFICER);
523+
officerField.removeAllItems();
524+
officerField.addItems(items);
525+
}
526+
527+
private List<UserReferenceDto> fetchSurveillanceOfficersByRegion(RegionReferenceDto regionReferenceDto) {
528+
return FacadeProvider.getUserFacade().getUsersByRegionAndRoles(regionReferenceDto, UserRole.SURVEILLANCE_OFFICER);
529+
}
498530
}

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

Lines changed: 38 additions & 11 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,11 +29,11 @@
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.UserReferenceDto;
3133
import de.symeda.sormas.api.user.UserRole;
3234
import de.symeda.sormas.api.utils.DateFilterOption;
3335
import de.symeda.sormas.api.utils.DateHelper;
3436
import de.symeda.sormas.api.utils.EpiWeek;
35-
import de.symeda.sormas.ui.UserProvider;
3637
import de.symeda.sormas.ui.utils.AbstractFilterForm;
3738
import de.symeda.sormas.ui.utils.EpiWeekAndDateFilterComponent;
3839
import de.symeda.sormas.ui.utils.FieldConfiguration;
@@ -91,10 +92,7 @@ protected void addFields() {
9192
addField(FieldConfiguration.pixelSized(EventIndexDto.DISEASE, 140));
9293
addField(FieldConfiguration.withCaptionAndPixelSized(EventCriteria.REPORTING_USER_ROLE, I18nProperties.getString(Strings.reportedBy), 140));
9394
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-
}
95+
officerField.addItems(fetchSurveillanceOfficersByRegion(currentUserDto().getRegion()));
9896
TextField searchField = addField(
9997
FieldConfiguration.withCaptionAndPixelSized(EventCriteria.FREE_TEXT, I18nProperties.getString(Strings.promptEventsSearchField), 200));
10098
searchField.setNullRepresentation("");
@@ -220,20 +218,22 @@ protected void applyDependenciesOnFieldChange(String propertyId, Property.ValueC
220218
switch (propertyId) {
221219
case LocationDto.REGION:
222220
RegionReferenceDto region = (RegionReferenceDto) event.getProperty().getValue();
223-
if (region == null) {
224-
clearAndDisableFields(LocationDto.DISTRICT, LocationDto.COMMUNITY);
225-
} else {
221+
if (region != null) {
226222
applyRegionFilterDependency(region, LocationDto.DISTRICT);
227223
clearAndDisableFields(LocationDto.COMMUNITY);
224+
} else {
225+
clearAndDisableFields(LocationDto.DISTRICT, LocationDto.COMMUNITY);
228226
}
227+
populateSurveillanceOfficersForRegion(region);
229228
break;
230229
case LocationDto.DISTRICT:
231230
DistrictReferenceDto district = (DistrictReferenceDto) event.getProperty().getValue();
232-
if (district == null) {
233-
clearAndDisableFields(LocationDto.COMMUNITY);
234-
} else {
231+
if (district != null) {
235232
applyDistrictDependency(district, LocationDto.COMMUNITY);
233+
} else {
234+
clearAndDisableFields(LocationDto.COMMUNITY);
236235
}
236+
populateSurveillanceOfficersForDistrict(district);
237237
break;
238238
}
239239
}
@@ -296,6 +296,33 @@ private void applyDateDependencyOnNewValue(String componentId, DateFilterOption
296296
}
297297
}
298298

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

sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleGridFilterForm.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import de.symeda.sormas.api.utils.DateFilterOption;
2828
import de.symeda.sormas.api.utils.DateHelper;
2929
import de.symeda.sormas.api.utils.EpiWeek;
30-
import de.symeda.sormas.ui.UserProvider;
3130
import de.symeda.sormas.ui.utils.AbstractFilterForm;
3231
import de.symeda.sormas.ui.utils.EpiWeekAndDateFilterComponent;
3332
import de.symeda.sormas.ui.utils.FieldConfiguration;
@@ -86,7 +85,7 @@ protected void addFields() {
8685
I18nProperties.getPrefixCaption(CaseDataDto.I18N_PREFIX, CaseDataDto.DISEASE),
8786
140));
8887

89-
UserDto user = UserProvider.getCurrent().getUser();
88+
UserDto user = currentUserDto();
9089
if (user.getRegion() == null) {
9190
ComboBox regionField = addField(
9291
FieldConfiguration.withCaptionAndPixelSized(
@@ -122,8 +121,7 @@ public void addMoreFilters(CustomLayout moreFiltersContainer) {
122121

123122
private HorizontalLayout buildWeekAndDateFilter() {
124123

125-
EpiWeekAndDateFilterComponent<DateFilterOption> weekAndDateFilter =
126-
new EpiWeekAndDateFilterComponent<>(false, false, null, this);
124+
EpiWeekAndDateFilterComponent<DateFilterOption> weekAndDateFilter = new EpiWeekAndDateFilterComponent<>(false, false, null, this);
127125

128126
weekAndDateFilter.getWeekFromFilter().setInputPrompt(I18nProperties.getString(Strings.promptSampleEpiWeekFrom));
129127
weekAndDateFilter.getWeekToFilter().setInputPrompt(I18nProperties.getString(Strings.promptSampleEpiWeekTo));
@@ -199,7 +197,7 @@ protected void applyDependenciesOnFieldChange(String propertyId, Property.ValueC
199197
@Override
200198
protected void applyDependenciesOnNewValue(SampleCriteria criteria) {
201199

202-
UserDto user = UserProvider.getCurrent().getUser();
200+
UserDto user = currentUserDto();
203201

204202
ComboBox districtField = (ComboBox) getField(SampleCriteria.DISTRICT);
205203
if (user.getRegion() != null) {

sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridFilterForm.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import de.symeda.sormas.api.utils.DateFilterOption;
2828
import de.symeda.sormas.api.utils.DateHelper;
2929
import de.symeda.sormas.api.utils.EpiWeek;
30-
import de.symeda.sormas.ui.UserProvider;
3130
import de.symeda.sormas.ui.utils.AbstractFilterForm;
3231
import de.symeda.sormas.ui.utils.EpiWeekAndDateFilterComponent;
3332
import de.symeda.sormas.ui.utils.FieldConfiguration;
@@ -66,7 +65,7 @@ protected void addFields() {
6665
addField(FieldConfiguration.pixelSized(TaskIndexDto.TASK_CONTEXT, 140));
6766
addField(FieldConfiguration.pixelSized(TaskIndexDto.TASK_STATUS, 140));
6867

69-
final UserDto user = UserProvider.getCurrent().getUser();
68+
final UserDto user = currentUserDto();
7069
if (user.getDistrict() == null) {
7170
if (user.getRegion() == null) {
7271
final ComboBox regionField = addField(FieldConfiguration.pixelSized(TaskIndexDto.REGION, 200));

sormas-ui/src/main/java/de/symeda/sormas/ui/utils/AbstractFilterForm.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.vaadin.event.ShortcutAction;
1212
import com.vaadin.icons.VaadinIcons;
1313
import com.vaadin.ui.Button;
14-
import com.vaadin.ui.Component;
1514
import com.vaadin.ui.CustomLayout;
1615
import com.vaadin.ui.themes.ValoTheme;
1716
import com.vaadin.v7.data.Property;
@@ -93,6 +92,10 @@ protected String createHtmlLayout() {
9392

9493
protected abstract String[] getMainFilterLocators();
9594

95+
protected UserDto currentUserDto() {
96+
return UserProvider.getCurrent().getUser();
97+
}
98+
9699
protected String createMoreFiltersHtmlLayout() {
97100
return "";
98101
}

0 commit comments

Comments
 (0)