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

Commit 661fbbf

Browse files
SORMAS-Foundation#2724 Create investigation task on new contact save for Switzerland
1 parent f55bba4 commit 661fbbf

1 file changed

Lines changed: 37 additions & 13 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactFacadeEjb.java

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package de.symeda.sormas.backend.contact;
1919

2020
import static de.symeda.sormas.backend.visit.VisitLogic.getVisitResult;
21+
import static java.time.temporal.ChronoUnit.DAYS;
2122

2223
import java.math.BigInteger;
2324
import java.sql.Timestamp;
@@ -57,6 +58,7 @@
5758
import org.slf4j.Logger;
5859
import org.slf4j.LoggerFactory;
5960

61+
import de.symeda.sormas.api.CountryHelper;
6062
import de.symeda.sormas.api.Disease;
6163
import de.symeda.sormas.api.Language;
6264
import de.symeda.sormas.api.caze.CaseReferenceDto;
@@ -116,6 +118,7 @@
116118
import de.symeda.sormas.backend.clinicalcourse.ClinicalCourseFacadeEjb;
117119
import de.symeda.sormas.backend.common.AbstractAdoService;
118120
import de.symeda.sormas.backend.common.AbstractDomainObject;
121+
import de.symeda.sormas.backend.common.ConfigFacadeEjb;
119122
import de.symeda.sormas.backend.common.FollowUpTaskCreationException;
120123
import de.symeda.sormas.backend.epidata.EpiData;
121124
import de.symeda.sormas.backend.epidata.EpiDataFacadeEjb;
@@ -193,6 +196,8 @@ public class ContactFacadeEjb implements ContactFacade {
193196
private EpiDataFacadeEjbLocal epiDataFacade;
194197
@EJB
195198
private ClinicalCourseFacadeEjb.ClinicalCourseFacadeEjbLocal clinicalCourseFacade;
199+
@EJB
200+
private ConfigFacadeEjb.ConfigFacadeEjbLocal configFacade;
196201

197202
@Override
198203
public List<String> getAllActiveUuids() {
@@ -274,9 +279,24 @@ public ContactDto saveContact(ContactDto dto, boolean handleChanges) {
274279
// }
275280

276281
Contact entity = fromDto(dto);
277-
278282
contactService.ensurePersisted(entity);
279283

284+
if (configFacade.isConfiguredCountry(CountryHelper.COUNTRY_CODE_SWITZERLAND) && existingContact == null) {
285+
LocalDate now = LocalDate.now();
286+
LocalDate reportDate = DateHelper8.toLocalDate(entity.getReportDateTime());
287+
if (DAYS.between(reportDate, now) <= 30) {
288+
try {
289+
User assignee = taskService.getTaskAssignee(entity);
290+
LocalDateTime fromDateTime = LocalDate.now().atStartOfDay();
291+
LocalDateTime toDateTime = fromDateTime.plusDays(1);
292+
Task task = getContactTask(TaskType.CONTACT_INVESTIGATION, fromDateTime, toDateTime, entity, assignee);
293+
taskService.ensurePersisted(task);
294+
} catch (FollowUpTaskCreationException e) {
295+
logger.warn(e.getMessage());
296+
}
297+
}
298+
}
299+
280300
if (handleChanges) {
281301
updateContactVisitAssociations(existingContactDto, entity);
282302

@@ -1263,22 +1283,26 @@ public void generateContactFollowUpTasks() {
12631283
}
12641284

12651285
// none found -> create the task
1266-
Task task = taskService.buildTask(null);
1267-
task.setTaskContext(TaskContext.CONTACT);
1268-
task.setContact(contact);
1269-
task.setTaskType(TaskType.CONTACT_FOLLOW_UP);
1270-
task.setSuggestedStart(DateHelper8.toDate(fromDateTime));
1271-
task.setDueDate(DateHelper8.toDate(toDateTime.minusMinutes(1)));
1272-
task.setAssigneeUser(assignee);
1273-
1274-
if (contact.isHighPriority()) {
1275-
task.setPriority(TaskPriority.HIGH);
1276-
}
1277-
1286+
Task task = getContactTask(TaskType.CONTACT_FOLLOW_UP, fromDateTime, toDateTime, contact, assignee);
12781287
taskService.ensurePersisted(task);
12791288
}
12801289
}
12811290

1291+
private Task getContactTask(TaskType taskType, LocalDateTime fromDateTime, LocalDateTime toDateTime, Contact contact, User assignee) {
1292+
Task task = taskService.buildTask(null);
1293+
task.setTaskContext(TaskContext.CONTACT);
1294+
task.setContact(contact);
1295+
task.setTaskType(taskType);
1296+
task.setSuggestedStart(DateHelper8.toDate(fromDateTime));
1297+
task.setDueDate(DateHelper8.toDate(toDateTime.minusMinutes(1)));
1298+
task.setAssigneeUser(assignee);
1299+
1300+
if (contact.isHighPriority()) {
1301+
task.setPriority(TaskPriority.HIGH);
1302+
}
1303+
return task;
1304+
}
1305+
12821306
@Override
12831307
public void validate(ContactDto contact) throws ValidationRuntimeException {
12841308

0 commit comments

Comments
 (0)