Skip to content

Commit 4815c4c

Browse files
committed
ability to display Case info in external messages
1 parent e0f1658 commit 4815c4c

5 files changed

Lines changed: 21 additions & 8 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/survey/SurveyFacade.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@
1717

1818
import java.io.IOException;
1919
import java.util.List;
20+
import java.util.Optional;
2021

2122
import javax.ejb.Remote;
2223
import javax.validation.Valid;
2324
import javax.validation.constraints.NotNull;
2425

26+
import org.apache.commons.collections4.CollectionUtils;
27+
2528
import de.symeda.sormas.api.Disease;
2629
import de.symeda.sormas.api.docgeneneration.DocumentTemplateDto;
2730
import de.symeda.sormas.api.docgeneneration.DocumentTemplateException;
@@ -41,7 +44,11 @@ void uploadDocumentTemplate(@NotNull SurveyReferenceDto surveyRef, DocumentTempl
4144

4245
SurveyDto getByUuid(String uuid);
4346

44-
List<SurveyDto> getByExternalIds(List<String> externalId);
47+
List<SurveyDto> getByExternalIds(List<String> externalIds);
48+
49+
default Optional<SurveyDto> getByExternalId(@NotNull String externalId) {
50+
return Optional.ofNullable(getByExternalIds(List.of(externalId))).filter(CollectionUtils::isNotEmpty).map(surveys -> surveys.get(0));
51+
}
4552

4653
long count(SurveyCriteria criteria);
4754

sormas-api/src/main/java/de/symeda/sormas/api/survey/SurveyTokenFacade.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public interface SurveyTokenFacade {
4747

4848
SurveyTokenDto getBySurveyAndToken(SurveyReferenceDto survey, String token);
4949

50+
SurveyTokenDto getBySurveyExternalIdAndToken(String externalSurveyId, String token);
51+
5052
List<SurveyTokenDto> getBySurveyReferenceTokenTuples(List<Tuple<SurveyReferenceDto, String>> surveyReferenceTokenTuples);
5153

5254
boolean exists(String uuid);

sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/ExternalMessageFacadeEjb.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -388,11 +388,6 @@ public ExternalMessageDto save(@Valid ExternalMessageDto dto, boolean checkChang
388388

389389
validate(dto);
390390

391-
// TODO: is null but should not
392-
if (ExternalMessageType.SURVEY_RESPONSE.equals(dto.getType())) {
393-
// TODO: fill missing holes from person: fetch the entities: case -> person
394-
}
395-
396391
externalMessage = fillOrBuildEntity(dto, externalMessage, checkChangeDate);
397392

398393
// If it is a LabMessage and it has not set a DiseaseVariant, an attempt is made to determine this from the attached TestReports.

sormas-backend/src/main/java/de/symeda/sormas/backend/survey/SurveyFacadeEjb.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,11 @@ public SurveyDto getByUuid(String uuid) {
237237
}
238238

239239
@Override
240-
public List<SurveyDto> getByExternalIds(List<String> externalId) {
240+
public List<SurveyDto> getByExternalIds(List<String> externalIds) {
241241
CriteriaBuilder cb = em.getCriteriaBuilder();
242242
CriteriaQuery<Survey> cq = cb.createQuery(Survey.class);
243243
Root<Survey> from = cq.from(Survey.class);
244-
cq.where(cb.equal(from.get(Survey.EXTERNAL_ID), externalId));
244+
cq.where(cb.equal(from.get(Survey.EXTERNAL_ID), externalIds));
245245
cq.orderBy(cb.desc(from.get(Survey.NAME)));
246246

247247
return getAsStream(cq).map(this::toDto).collect(Collectors.toList());

sormas-backend/src/main/java/de/symeda/sormas/backend/survey/SurveyTokenFacadeEjb.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.slf4j.Logger;
4545
import org.slf4j.LoggerFactory;
4646

47+
import de.symeda.sormas.api.survey.SurveyDto;
4748
import de.symeda.sormas.api.survey.SurveyReferenceDto;
4849
import de.symeda.sormas.api.survey.SurveyTokenCriteria;
4950
import de.symeda.sormas.api.survey.SurveyTokenDto;
@@ -228,6 +229,14 @@ public SurveyTokenDto getBySurveyAndToken(SurveyReferenceDto survey, String toke
228229
return toDto(surveyTokenService.getBySurveyAndToken(survey, token));
229230
}
230231

232+
@Override
233+
public SurveyTokenDto getBySurveyExternalIdAndToken(String externalSurveyId, String token) {
234+
SurveyDto surveyDto = surveyFacade.getByExternalId(externalSurveyId)
235+
.orElseThrow(() -> new RuntimeException(String.format("Survey with external id: [%s] not found", externalSurveyId)));
236+
237+
return toDto(surveyTokenService.getBySurveyAndToken(surveyDto.toReference(), token));
238+
}
239+
231240
@Override
232241
public List<SurveyTokenDto> getBySurveyReferenceTokenTuples(
233242
List<de.symeda.sormas.api.utils.Tuple<SurveyReferenceDto, String>> surveyReferenceTokenTuples) {

0 commit comments

Comments
 (0)