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

Commit 7352dcc

Browse files
SORMAS-Foundation#3392 - Added notifications when case person is already part of the event
1 parent 69f08e0 commit 7352dcc

4 files changed

Lines changed: 52 additions & 32 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,9 @@ public interface Strings {
707707
String messagePathogenTestSaved = "messagePathogenTestSaved";
708708
String messagePathogenTestSavedShort = "messagePathogenTestSavedShort";
709709
String messagePathogenTestsDeleted = "messagePathogenTestsDeleted";
710+
String messagePersonAddedAsEventParticipant = "messagePersonAddedAsEventParticipant";
711+
String messagePersonAlreadyCaseInEvent = "messagePersonAlreadyCaseInEvent";
712+
String messagePersonAlreadyEventParticipant = "messagePersonAlreadyEventParticipant";
710713
String messagePersonSaved = "messagePersonSaved";
711714
String messagePersonSavedClassificationChanged = "messagePersonSavedClassificationChanged";
712715
String messagePlagueTypeChange = "messagePlagueTypeChange";

sormas-api/src/main/resources/strings.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,9 @@ messageSetContactRegionAndDistrict = Please choose a responsible region and resp
790790
messageAllCampaignFormsValid = All campaign forms have been successfully validated
791791
messageEnterSms = Please enter your SMS message here:
792792
messageSelectedPeriodTooLong = You have selected a time period that exceeds the maximum number of days. Please make sure that the selected time period does not exceed %d days.
793+
messagePersonAlreadyEventParticipant = The case person already is an event participant in the selected event. This case has been linked to the selected event.
794+
messagePersonAddedAsEventParticipant = The case person was added as an event participant to the selected event.
795+
messagePersonAlreadyCaseInEvent = This case is already linked to the selected event.
793796

794797
# Notifications
795798
notificationCaseClassificationChanged = The classification of case %s has changed to %s.

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

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -97,25 +97,35 @@ public void selectOrCreateEvent(CaseReferenceDto caseRef) {
9797
eventSelect.setWidth(1024, Sizeable.Unit.PIXELS);
9898

9999
final CommitDiscardWrapperComponent<EventSelectionField> component = new CommitDiscardWrapperComponent<>(eventSelect);
100-
component.addCommitListener(new CommitListener() {
101-
102-
@Override
103-
public void onCommit() {
104-
EventIndexDto selectedEvent = eventSelect.getValue();
105-
if (selectedEvent != null) {
100+
component.addCommitListener(() -> {
101+
EventIndexDto selectedEvent = eventSelect.getValue();
102+
if (selectedEvent != null) {
106103

107-
EventCriteria eventCriteria = new EventCriteria();
108-
eventCriteria.caze(caseRef);
109-
eventCriteria.setUserFilterIncluded(false);
110-
List<EventIndexDto> eventIndexDto = FacadeProvider.getEventFacade().getIndexList(eventCriteria, null, null, null);
104+
EventCriteria eventCriteria = new EventCriteria();
105+
eventCriteria.caze(caseRef);
106+
eventCriteria.setUserFilterIncluded(false);
107+
List<EventIndexDto> eventIndexDto = FacadeProvider.getEventFacade().getIndexList(eventCriteria, null, null, null);
111108

112-
EventReferenceDto eventReferenceDto = new EventReferenceDto(selectedEvent.getUuid());
113-
if (!eventIndexDto.contains(selectedEvent)) {
114-
linkCaseToEvent(eventReferenceDto, caseDataDto, caseRef);
115-
}
109+
EventReferenceDto eventReferenceDto = new EventReferenceDto(selectedEvent.getUuid());
110+
if (!eventIndexDto.contains(selectedEvent)) {
111+
boolean wasEventParticipant = linkCaseToEvent(eventReferenceDto, caseDataDto, caseRef);
112+
SormasUI.refreshView();
113+
Notification notification = new Notification(
114+
I18nProperties.getString(
115+
wasEventParticipant ? Strings.messagePersonAlreadyEventParticipant : Strings.messagePersonAddedAsEventParticipant),
116+
"",
117+
Type.HUMANIZED_MESSAGE);
118+
notification.setDelayMsec(10000);
119+
notification.show(Page.getCurrent());
116120
} else {
117-
create(caseRef);
121+
SormasUI.refreshView();
122+
Notification notification =
123+
new Notification(I18nProperties.getString(Strings.messagePersonAlreadyCaseInEvent), "", Type.HUMANIZED_MESSAGE);
124+
notification.setDelayMsec(10000);
125+
notification.show(Page.getCurrent());
118126
}
127+
} else {
128+
create(caseRef);
119129
SormasUI.refreshView();
120130
}
121131
});
@@ -159,7 +169,10 @@ public void selectOrCreateEvent(ContactDto contact) {
159169
VaadinUiUtil.showModalPopupWindow(component, I18nProperties.getString(Strings.headingPickOrCreateEvent));
160170
}
161171

162-
public void linkCaseToEvent(EventReferenceDto eventReferenceDto, CaseDataDto caseDataDto, CaseReferenceDto caseRef) {
172+
/**
173+
* @return true if the person was already an event participant in the event, false if not
174+
*/
175+
public boolean linkCaseToEvent(EventReferenceDto eventReferenceDto, CaseDataDto caseDataDto, CaseReferenceDto caseRef) {
163176
// Check whether Person is already enlisted as EventParticipant in this Event
164177
EventParticipantReferenceDto eventParticipantRef =
165178
FacadeProvider.getEventParticipantFacade().getReferenceByEventAndPerson(eventReferenceDto.getUuid(), caseDataDto.getPerson().getUuid());
@@ -168,7 +181,7 @@ public void linkCaseToEvent(EventReferenceDto eventReferenceDto, CaseDataDto cas
168181
FacadeProvider.getEventParticipantFacade().getEventParticipantByUuid(eventParticipantRef.getUuid());
169182
eventParticipant.setResultingCase(caseRef);
170183
FacadeProvider.getEventParticipantFacade().saveEventParticipant(eventParticipant);
171-
return;
184+
return true;
172185
}
173186

174187
// Create new EventParticipant for this Person
@@ -177,6 +190,7 @@ public void linkCaseToEvent(EventReferenceDto eventReferenceDto, CaseDataDto cas
177190
eventParticipantDto =
178191
new EventParticipantDto().buildFromCase(caseRef, personDto, eventReferenceDto, UserProvider.getCurrent().getUserReference());
179192
FacadeProvider.getEventParticipantFacade().saveEventParticipant(eventParticipantDto);
193+
return false;
180194
}
181195

182196
public void createEventParticipantWithContact(EventReferenceDto eventReferenceDto, ContactDto contact) {
@@ -248,23 +262,19 @@ public CommitDiscardWrapperComponent<EventDataForm> getEventCreateComponent(Case
248262
eventCreateForm.getFieldGroup());
249263

250264
CaseDataDto finalCaseDataDto = caseDataDto;
251-
editView.addCommitListener(new CommitListener() {
252-
253-
@Override
254-
public void onCommit() {
255-
if (!eventCreateForm.getFieldGroup().isModified()) {
256-
EventDto dto = eventCreateForm.getValue();
257-
FacadeProvider.getEventFacade().saveEvent(dto);
258-
Notification.show(I18nProperties.getString(Strings.messageEventCreated), Type.WARNING_MESSAGE);
265+
editView.addCommitListener(() -> {
266+
if (!eventCreateForm.getFieldGroup().isModified()) {
267+
EventDto dto = eventCreateForm.getValue();
268+
FacadeProvider.getEventFacade().saveEvent(dto);
269+
Notification.show(I18nProperties.getString(Strings.messageEventCreated), Type.WARNING_MESSAGE);
259270

260-
if (caseRef != null) {
261-
EventReferenceDto createdEvent = new EventReferenceDto(dto.getUuid());
271+
if (caseRef != null) {
272+
EventReferenceDto createdEvent = new EventReferenceDto(dto.getUuid());
262273

263-
linkCaseToEvent(createdEvent, finalCaseDataDto, caseRef);
264-
SormasUI.refreshView();
265-
} else {
266-
navigateToParticipants(dto.getUuid());
267-
}
274+
linkCaseToEvent(createdEvent, finalCaseDataDto, caseRef);
275+
SormasUI.refreshView();
276+
} else {
277+
navigateToParticipants(dto.getUuid());
268278
}
269279
}
270280
});

sormas-ui/src/main/webapp/VAADIN/themes/sormas/components/notification.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,8 @@
3030

3131
}
3232

33+
.v-Notification.humanized .v-Notification-caption {
34+
color: #005A9C;
35+
}
36+
3337
}

0 commit comments

Comments
 (0)