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

Commit 6e2b9a4

Browse files
SORMAS-Foundation#2902 - extend event participant jurisdiction calculation - added logic for warning on change jurisdiction on save
1 parent b47742e commit 6e2b9a4

2 files changed

Lines changed: 32 additions & 11 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjb.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ public EventParticipantDto saveEventParticipant(EventParticipantDto dto) {
193193
Event event = eventService.getByUuid(eventReferenceDto.getUuid());
194194

195195
if (!eventJurisdictionChecker.isInJurisdiction(event) && (dto.getRegion() == null || dto.getDistrict() == null)) {
196-
dto.setRegion(new RegionReferenceDto(user.getRegion().getUuid()));
197-
dto.setDistrict(new DistrictReferenceDto(user.getDistrict().getUuid()));
196+
dto.setRegion(new RegionReferenceDto(user.getRegion() != null ? user.getRegion().getUuid() : null));
197+
dto.setDistrict(new DistrictReferenceDto(user.getDistrict() != null ? user.getDistrict().getUuid() : null));
198198
}
199199

200200
Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight);

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

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
import de.symeda.sormas.api.i18n.Strings;
4343
import de.symeda.sormas.api.person.PersonDto;
4444
import de.symeda.sormas.api.person.PersonFacade;
45+
import de.symeda.sormas.api.region.DistrictReferenceDto;
46+
import de.symeda.sormas.api.region.RegionReferenceDto;
4547
import de.symeda.sormas.api.user.UserDto;
4648
import de.symeda.sormas.api.user.UserRight;
4749
import de.symeda.sormas.ui.ControllerProvider;
@@ -208,15 +210,34 @@ private CommitDiscardWrapperComponent<EventParticipantEditForm> createEventParti
208210
EventParticipantDto dto = editForm.getValue();
209211
EventDto eventDto = FacadeProvider.getEventFacade().getEventByUuid(dto.getEvent().getUuid());
210212
UserDto user = UserProvider.getCurrent().getUser();
211-
if ((user.getRegion() != null && dto.getRegion() != null && !user.getRegion().equals(dto.getRegion()))
212-
|| (user.getDistrict() != null && dto.getDistrict() != null && !user.getDistrict().equals(dto.getDistrict()))
213-
|| (dto.getRegion() == null
214-
&& dto.getDistrict() == null
215-
&& (user.getRegion() != null && !user.getRegion().equals(eventDto.getEventLocation().getRegion())
216-
|| user.getDistrict() != null && !user.getDistrict().equals(eventDto.getEventLocation().getDistrict())))
217-
|| ((dto.getRegion() == null || dto.getDistrict() == null)
218-
&& (user.getRegion() != null && !user.getRegion().equals(dto.getRegion())
219-
|| user.getDistrict() != null && !user.getDistrict().equals(dto.getDistrict())))) {
213+
214+
RegionReferenceDto userRegion = user.getRegion();
215+
DistrictReferenceDto userDistrict = user.getDistrict();
216+
217+
RegionReferenceDto epResponsibleRegion = dto.getRegion();
218+
DistrictReferenceDto epResponsibleDistrict = dto.getDistrict();
219+
220+
RegionReferenceDto epEventRegion = eventDto.getEventLocation().getRegion();
221+
DistrictReferenceDto epEventDistrict = eventDto.getEventLocation().getDistrict();
222+
223+
Boolean responsibleRegionDiffersFromUserRegion =
224+
(userRegion != null && epResponsibleRegion != null && !userRegion.equals(epResponsibleRegion));
225+
226+
Boolean responsibleDistrictDiffersFromUserDistrict =
227+
(userDistrict != null && epResponsibleDistrict != null && !userDistrict.equals(epResponsibleDistrict));
228+
229+
Boolean responsibleEmptyFallBackToEvent = (epResponsibleRegion == null
230+
&& epResponsibleDistrict == null
231+
&& (userRegion != null && !userRegion.equals(epEventRegion) || userDistrict != null && !userDistrict.equals(epEventDistrict)));
232+
233+
Boolean onResponsibleDistrictNullCheckBothRegionAndDistrictAgainstUser =
234+
((epResponsibleRegion != null && epResponsibleDistrict == null)
235+
&& (userRegion != null && !userRegion.equals(epResponsibleRegion) || userDistrict != null));
236+
237+
if (responsibleRegionDiffersFromUserRegion
238+
|| responsibleDistrictDiffersFromUserDistrict
239+
|| responsibleEmptyFallBackToEvent
240+
|| onResponsibleDistrictNullCheckBothRegionAndDistrictAgainstUser) {
220241
VaadinUiUtil.showConfirmationPopup(
221242
I18nProperties.getString(Strings.headingEventParticipantResponsibleJurisdictionUpdated),
222243
new Label(I18nProperties.getString(Strings.messageEventParticipantResponsibleJurisdictionUpdated)),

0 commit comments

Comments
 (0)