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

Commit 3fc0748

Browse files
1 parent 94cd53e commit 3fc0748

3 files changed

Lines changed: 88 additions & 31 deletions

File tree

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

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ public void create(CaseReferenceDto caseRef, boolean asResultingCase, Runnable a
132132
if (caseRef != null) {
133133
caze = FacadeProvider.getCaseFacade().getCaseDataByUuid(caseRef.getUuid());
134134
}
135-
CommitDiscardWrapperComponent<ContactCreateForm> createComponent = getContactCreateComponent(caze, asResultingCase, alternativeCallback);
135+
CommitDiscardWrapperComponent<ContactCreateForm> createComponent =
136+
getContactCreateComponent(caze, asResultingCase, alternativeCallback, false);
136137
VaadinUiUtil.showModalPopupWindow(createComponent, I18nProperties.getString(Strings.headingCreateNewContact));
137138
}
138139

@@ -227,7 +228,7 @@ private ContactDto createNewContact(EventParticipantDto eventParticipant, Diseas
227228
}
228229

229230
public CommitDiscardWrapperComponent<ContactCreateForm> getContactCreateComponent(CaseDataDto caze) {
230-
return getContactCreateComponent(caze, false, null);
231+
return getContactCreateComponent(caze, false, null, false);
231232
}
232233

233234
/**
@@ -239,7 +240,8 @@ public CommitDiscardWrapperComponent<ContactCreateForm> getContactCreateComponen
239240
public CommitDiscardWrapperComponent<ContactCreateForm> getContactCreateComponent(
240241
final CaseDataDto caze,
241242
boolean asSourceContact,
242-
Runnable alternativeCallback) {
243+
Runnable alternativeCallback,
244+
boolean createdFromLabMesssage) {
243245

244246
final PersonDto casePerson = caze != null ? FacadeProvider.getPersonFacade().getPersonByUuid(caze.getPerson().getUuid()) : null;
245247
ContactCreateForm createForm =
@@ -271,18 +273,24 @@ public CommitDiscardWrapperComponent<ContactCreateForm> getContactCreateComponen
271273
alternativeCallback.run();
272274
}
273275
});
276+
} else if (createdFromLabMesssage) {
277+
PersonDto dbPerson = FacadeProvider.getPersonFacade().getPersonByUuid(dto.getPerson().getUuid());
278+
if (dbPerson == null) {
279+
PersonDto personDto = PersonDto.build();
280+
transferDataToPerson(createForm, personDto);
281+
FacadeProvider.getPersonFacade().savePerson(personDto);
282+
dto.setPerson(personDto.toReference());
283+
createNewContact(dto, e -> {
284+
});
285+
} else {
286+
transferDataToPerson(createForm, dbPerson);
287+
FacadeProvider.getPersonFacade().savePerson(dbPerson);
288+
createNewContact(dto, e -> {
289+
});
290+
}
274291
} else {
275292
final PersonDto person = PersonDto.build();
276-
person.setFirstName(createForm.getPersonFirstName());
277-
person.setLastName(createForm.getPersonLastName());
278-
person.setNationalHealthId(createForm.getNationalHealthId());
279-
person.setPassportNumber(createForm.getPassportNumber());
280-
person.setBirthdateYYYY(createForm.getBirthdateYYYY());
281-
person.setBirthdateMM(createForm.getBirthdateMM());
282-
person.setBirthdateDD(createForm.getBirthdateDD());
283-
person.setSex(createForm.getSex());
284-
person.setPhone(createForm.getPhone());
285-
person.setEmailAddress(createForm.getEmailAddress());
293+
transferDataToPerson(createForm, person);
286294

287295
ControllerProvider.getPersonController()
288296
.selectOrCreatePerson(person, I18nProperties.getString(Strings.infoSelectOrCreatePersonForContact), selectedPerson -> {
@@ -318,6 +326,20 @@ public CommitDiscardWrapperComponent<ContactCreateForm> getContactCreateComponen
318326
});
319327

320328
return createComponent;
329+
330+
}
331+
332+
private void transferDataToPerson(ContactCreateForm createForm, PersonDto person) {
333+
person.setFirstName(createForm.getPersonFirstName());
334+
person.setLastName(createForm.getPersonLastName());
335+
person.setNationalHealthId(createForm.getNationalHealthId());
336+
person.setPassportNumber(createForm.getPassportNumber());
337+
person.setBirthdateYYYY(createForm.getBirthdateYYYY());
338+
person.setBirthdateMM(createForm.getBirthdateMM());
339+
person.setBirthdateDD(createForm.getBirthdateDD());
340+
person.setSex(createForm.getSex());
341+
person.setPhone(createForm.getPhone());
342+
person.setEmailAddress(createForm.getEmailAddress());
321343
}
322344

323345
public CommitDiscardWrapperComponent<ContactCreateForm> getContactCreateComponent(EventParticipantDto eventParticipant) {

sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/EntrySelectionField.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ protected Component initContent() {
8787

8888
private void addCreateEntityRadioGroup() {
8989
rbCreateEntity = new RadioButtonGroup<>();
90-
// TODO: Add creation of contacts and event participants
90+
// TODO: Add creation of event participants
9191
// rbCreateEntity.setItems(CREATE_CASE, CREATE_CONTACT, CREATE_EVENT_PARTICIPANT);
92-
rbCreateEntity.setItems(CREATE_CASE);
92+
rbCreateEntity.setItems(CREATE_CASE, CREATE_CONTACT);
9393
rbCreateEntity.setItemCaptionGenerator((item) -> {
9494
if (item == CREATE_CASE) {
9595
return I18nProperties.getCaption(Captions.caseCreateNew);

sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessageController.java

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import de.symeda.sormas.api.caze.CaseDataDto;
1616
import de.symeda.sormas.api.caze.CaseIndexDto;
1717
import de.symeda.sormas.api.caze.CaseSimilarityCriteria;
18+
import de.symeda.sormas.api.contact.ContactDto;
1819
import de.symeda.sormas.api.contact.SimilarContactDto;
1920
import de.symeda.sormas.api.event.SimilarEventParticipantDto;
2021
import de.symeda.sormas.api.facility.FacilityReferenceDto;
@@ -31,6 +32,7 @@
3132
import de.symeda.sormas.ui.SormasUI;
3233
import de.symeda.sormas.ui.UserProvider;
3334
import de.symeda.sormas.ui.caze.CaseCreateForm;
35+
import de.symeda.sormas.ui.contact.ContactCreateForm;
3436
import de.symeda.sormas.ui.samples.PathogenTestForm;
3537
import de.symeda.sormas.ui.samples.SampleCreateForm;
3638
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent;
@@ -114,6 +116,8 @@ private void pickOrCreateEntry(
114116
SimilarEntriesDto similarEntriesDto = selectField.getValue();
115117
if (similarEntriesDto.isNewCase()) {
116118
createCase(labMessageDto, person);
119+
} else if (similarEntriesDto.isNewContact()) {
120+
createContact(labMessageDto, person);
117121
} else if (similarEntriesDto.getCaze() != null) {
118122
createSample(FacadeProvider.getCaseFacade().getCaseDataByUuid(similarEntriesDto.getCaze().getUuid()), labMessageDto);
119123
}
@@ -154,17 +158,60 @@ private void createCase(LabMessageDto labMessageDto, PersonDto person) {
154158
caseCreateComponent.getWrappedComponent().setValue(caseDto);
155159
caseCreateComponent.getWrappedComponent().setPerson(person);
156160

161+
showCreateForm(labMessageDto, caseCreateComponent, window, I18nProperties.getString(Strings.headingCreateNewCase));
162+
}
163+
164+
private void createContact(LabMessageDto labMessageDto, PersonDto person) {
165+
CommitDiscardWrapperComponent<ContactCreateForm> contactCreateComponent =
166+
ControllerProvider.getContactController().getContactCreateComponent(null, false, null, true);
167+
168+
ContactDto contactDto = ContactDto.build(null, labMessageDto.getTestedDisease(), null);
169+
contactDto.setReportingUser(UserProvider.getCurrent().getUserReference());
170+
Window window = VaadinUiUtil.createPopupWindow();
171+
contactCreateComponent.addCommitListener(() -> {
172+
PersonDto personDto =
173+
FacadeProvider.getPersonFacade().getPersonByUuid(contactCreateComponent.getWrappedComponent().getValue().getPerson().getUuid());
174+
if (personDto.getAddress().getCity() == null
175+
&& personDto.getAddress().getHouseNumber() == null
176+
&& personDto.getAddress().getPostalCode() == null
177+
&& personDto.getAddress().getStreet() == null) {
178+
personDto.getAddress().setStreet(labMessageDto.getPersonStreet());
179+
personDto.getAddress().setHouseNumber(labMessageDto.getPersonHouseNumber());
180+
personDto.getAddress().setPostalCode(labMessageDto.getPersonPostalCode());
181+
personDto.getAddress().setCity(labMessageDto.getPersonCity());
182+
FacadeProvider.getPersonFacade().savePerson(personDto);
183+
}
184+
createSample(contactCreateComponent.getWrappedComponent().getValue(), labMessageDto);
185+
window.close();
186+
});
187+
contactCreateComponent.addDiscardListener(() -> window.close());
188+
contactCreateComponent.getWrappedComponent().setValue(contactDto);
189+
contactCreateComponent.getWrappedComponent().setPerson(person);
190+
191+
showCreateForm(labMessageDto, contactCreateComponent, window, I18nProperties.getString(Strings.headingCreateNewContact));
192+
}
193+
194+
private void showCreateForm(LabMessageDto labMessageDto, CommitDiscardWrapperComponent createComponent, Window window, String heading) {
157195
LabMessageEditForm form = new LabMessageEditForm(true);
158196
form.setValue(labMessageDto);
159-
HorizontalLayout layout = new HorizontalLayout(form, caseCreateComponent);
197+
HorizontalLayout layout = new HorizontalLayout(form, createComponent);
160198
layout.setMargin(true);
161199
window.setContent(layout);
162-
window.setCaption(I18nProperties.getString(Strings.headingCreateNewCase));
200+
window.setCaption(heading);
163201
UI.getCurrent().addWindow(window);
164202
}
165203

166204
private void createSample(CaseDataDto caseDataDto, LabMessageDto labMessageDto) {
167205
SampleDto sampleDto = SampleDto.build(UserProvider.getCurrent().getUserReference(), caseDataDto.toReference());
206+
createSample(sampleDto, labMessageDto);
207+
}
208+
209+
private void createSample(ContactDto contactDto, LabMessageDto labMessageDto) {
210+
SampleDto sampleDto = SampleDto.build(UserProvider.getCurrent().getUserReference(), contactDto.toReference());
211+
createSample(sampleDto, labMessageDto);
212+
}
213+
214+
private void createSample(SampleDto sampleDto, LabMessageDto labMessageDto) {
168215
sampleDto.setSampleDateTime(labMessageDto.getSampleDateTime());
169216
if (labMessageDto.getSampleReceivedDate() != null) {
170217
sampleDto.setReceived(true);
@@ -202,13 +249,7 @@ private void createSample(CaseDataDto caseDataDto, LabMessageDto labMessageDto)
202249
});
203250
sampleCreateComponent.addDiscardListener(() -> window.close());
204251

205-
LabMessageEditForm form = new LabMessageEditForm(true);
206-
form.setValue(labMessageDto);
207-
HorizontalLayout layout = new HorizontalLayout(form, sampleCreateComponent);
208-
layout.setMargin(true);
209-
window.setContent(layout);
210-
window.setCaption(I18nProperties.getString(Strings.headingCreateNewSample));
211-
UI.getCurrent().addWindow(window);
252+
showCreateForm(labMessageDto, sampleCreateComponent, window, I18nProperties.getString(Strings.headingCreateNewSample));
212253
}
213254

214255
private void createPathogenTest(SampleDto sampleDto, LabMessageDto labMessageDto) {
@@ -230,12 +271,6 @@ private void createPathogenTest(SampleDto sampleDto, LabMessageDto labMessageDto
230271
pathogenTestCreateComponent.addDiscardListener(() -> window.close());
231272
pathogenTestCreateComponent.getWrappedComponent().setValue(pathogenTestDto);
232273

233-
LabMessageEditForm form = new LabMessageEditForm(true);
234-
form.setValue(labMessageDto);
235-
HorizontalLayout layout = new HorizontalLayout(form, pathogenTestCreateComponent);
236-
layout.setMargin(true);
237-
window.setContent(layout);
238-
window.setCaption(I18nProperties.getString(Strings.headingCreatePathogenTestResult));
239-
UI.getCurrent().addWindow(window);
274+
showCreateForm(labMessageDto, pathogenTestCreateComponent, window, I18nProperties.getString(Strings.headingCreatePathogenTestResult));
240275
}
241276
}

0 commit comments

Comments
 (0)