|
42 | 42 | import de.symeda.sormas.api.i18n.Strings; |
43 | 43 | import de.symeda.sormas.api.person.PersonDto; |
44 | 44 | import de.symeda.sormas.api.person.PersonFacade; |
| 45 | +import de.symeda.sormas.api.region.DistrictReferenceDto; |
| 46 | +import de.symeda.sormas.api.region.RegionReferenceDto; |
45 | 47 | import de.symeda.sormas.api.user.UserDto; |
46 | 48 | import de.symeda.sormas.api.user.UserRight; |
47 | 49 | import de.symeda.sormas.ui.ControllerProvider; |
@@ -208,15 +210,34 @@ private CommitDiscardWrapperComponent<EventParticipantEditForm> createEventParti |
208 | 210 | EventParticipantDto dto = editForm.getValue(); |
209 | 211 | EventDto eventDto = FacadeProvider.getEventFacade().getEventByUuid(dto.getEvent().getUuid()); |
210 | 212 | 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) { |
220 | 241 | VaadinUiUtil.showConfirmationPopup( |
221 | 242 | I18nProperties.getString(Strings.headingEventParticipantResponsibleJurisdictionUpdated), |
222 | 243 | new Label(I18nProperties.getString(Strings.messageEventParticipantResponsibleJurisdictionUpdated)), |
|
0 commit comments