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

Commit 0d32dd7

Browse files
SORMAS-Foundation#3392 Added duplicate detection for linking cases (SORMAS-Foundation#3442)
* SORMAS-Foundation#3392 Added duplicate detection for linking cases * SORMAS-Foundation#3392 simplify check for exising EventParticipant
1 parent d05ea4f commit 0d32dd7

1 file changed

Lines changed: 23 additions & 6 deletions

File tree

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

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020
import java.util.ArrayList;
2121
import java.util.Collection;
2222
import java.util.List;
23-
24-
import org.apache.commons.text.StringEscapeUtils;
25-
23+
import com.vaadin.data.provider.DataProvider;
24+
import com.vaadin.data.provider.ListDataProvider;
2625
import com.vaadin.navigator.Navigator;
2726
import com.vaadin.server.Page;
2827
import com.vaadin.server.Sizeable;
@@ -44,7 +43,11 @@
4443
import de.symeda.sormas.api.event.EventCriteria;
4544
import de.symeda.sormas.api.event.EventDto;
4645
import de.symeda.sormas.api.event.EventIndexDto;
46+
import de.symeda.sormas.api.event.EventParticipantCriteria;
4747
import de.symeda.sormas.api.event.EventParticipantDto;
48+
import de.symeda.sormas.api.event.EventParticipantFacade;
49+
import de.symeda.sormas.api.event.EventParticipantIndexDto;
50+
import de.symeda.sormas.api.event.EventParticipantReferenceDto;
4851
import de.symeda.sormas.api.event.EventReferenceDto;
4952
import de.symeda.sormas.api.i18n.Captions;
5053
import de.symeda.sormas.api.i18n.I18nProperties;
@@ -60,6 +63,8 @@
6063
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent.CommitListener;
6164
import de.symeda.sormas.ui.utils.VaadinUiUtil;
6265

66+
import org.apache.commons.text.StringEscapeUtils;
67+
6368
public class EventController {
6469

6570
public void registerViews(Navigator navigator) {
@@ -105,7 +110,7 @@ public void onCommit() {
105110

106111
EventReferenceDto eventReferenceDto = new EventReferenceDto(selectedEvent.getUuid());
107112
if (!eventIndexDto.contains(selectedEvent)) {
108-
createEventParticipantWithCase(eventReferenceDto, caseDataDto, caseRef);
113+
linkCaseToEvent(eventReferenceDto, caseDataDto, caseRef);
109114
}
110115
} else {
111116
create(caseRef);
@@ -153,7 +158,19 @@ public void selectOrCreateEvent(ContactDto contact) {
153158
VaadinUiUtil.showModalPopupWindow(component, I18nProperties.getString(Strings.headingPickOrCreateEvent));
154159
}
155160

156-
public void createEventParticipantWithCase(EventReferenceDto eventReferenceDto, CaseDataDto caseDataDto, CaseReferenceDto caseRef) {
161+
public void linkCaseToEvent(EventReferenceDto eventReferenceDto, CaseDataDto caseDataDto, CaseReferenceDto caseRef) {
162+
// Check whether Person is already enlisted as EventParticipant in this Event
163+
EventParticipantReferenceDto eventParticipantRef =
164+
FacadeProvider.getEventParticipantFacade().getReferenceByEventAndPerson(eventReferenceDto.getUuid(), caseDataDto.getPerson().getUuid());
165+
if (eventParticipantRef != null) {
166+
EventParticipantDto eventParticipant =
167+
FacadeProvider.getEventParticipantFacade().getEventParticipantByUuid(eventParticipantRef.getUuid());
168+
eventParticipant.setResultingCase(caseRef);
169+
FacadeProvider.getEventParticipantFacade().saveEventParticipant(eventParticipant);
170+
return;
171+
}
172+
173+
// Create new EventParticipant for this Person
157174
PersonDto personDto = FacadeProvider.getPersonFacade().getPersonByUuid(caseDataDto.getPerson().getUuid());
158175
EventParticipantDto eventParticipantDto;
159176
eventParticipantDto =
@@ -242,7 +259,7 @@ public void onCommit() {
242259
if (caseRef != null) {
243260
EventReferenceDto createdEvent = new EventReferenceDto(dto.getUuid());
244261

245-
createEventParticipantWithCase(createdEvent, finalCaseDataDto, caseRef);
262+
linkCaseToEvent(createdEvent, finalCaseDataDto, caseRef);
246263
SormasUI.refreshView();
247264
} else {
248265
navigateToParticipants(dto.getUuid());

0 commit comments

Comments
 (0)