diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java index c8c7378a3ea53c202a34f4cf8582a30e71b8da09..4edfc3a6fb6c038d1a02dbd9344995b6c56506d9 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java @@ -23,6 +23,7 @@ class CollaborationVorgangProcessor implements RepresentationModelProcessor<Enti static final LinkRelation REL_COLLABORATIONS = LinkRelation.of("collaborations"); static final LinkRelation REL_SEARCH_ORGANISATIONS_EINHEIT = LinkRelation.of("searchOrganisationsEinheit"); + static final LinkRelation REL_SEARCH_FACHSTELLE = LinkRelation.of("searchFachstelle"); private final CurrentUserService currentUserService; private final CollaborationService collaborationService; @@ -35,9 +36,13 @@ class CollaborationVorgangProcessor implements RepresentationModelProcessor<Enti return model; } + var searchOrgnisationsEinheitLink = linkTo(methodOn(OrganisationsEinheitController.class).search(null)).withRel( + REL_SEARCH_ORGANISATIONS_EINHEIT); + var searchFachstelleLink = linkTo(methodOn(FachstelleController.class).search(null)).withRel(REL_SEARCH_FACHSTELLE); + return ModelBuilder.fromModel(model) .ifMatch(() -> !collaborationService.hasCollaboration(vorgang.getId())) - .addLink(linkTo(methodOn(OrganisationsEinheitController.class).search(null)).withRel(REL_SEARCH_ORGANISATIONS_EINHEIT)) + .addLinks(searchOrgnisationsEinheitLink, searchFachstelleLink) .addLink(linkTo(methodOn(CollaborationController.class).getAllByVorgangId(vorgang.getId())).withRel(REL_COLLABORATIONS)) .buildModel(); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java new file mode 100644 index 0000000000000000000000000000000000000000..604f6c1fe9663f623c6fc78ca34e87f2ad2c8804 --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java @@ -0,0 +1,15 @@ +package de.ozgcloud.alfa.collaboration; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class Fachstelle { + + @JsonIgnore + private String id; + +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java new file mode 100644 index 0000000000000000000000000000000000000000..3ac3e39ebb3200036677330a86c038efa779464a --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java @@ -0,0 +1,24 @@ +package de.ozgcloud.alfa.collaboration; + +import org.springframework.hateoas.CollectionModel; +import org.springframework.hateoas.EntityModel; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping(FachstelleController.PATH) +@RequiredArgsConstructor +class FachstelleController { + + static final String PATH = "/api/fachstelles"; // NOSONAR + static final String SEARCH_BY_PARAM = "searchBy"; + + @GetMapping(params = { SEARCH_BY_PARAM }) + public CollectionModel<EntityModel<Fachstelle>> search(@RequestParam String searchBy) { + return null; + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java index 8e28fca8d28c0752644af390b656228fef93ea26..9379fab4b2aaa026e2a9b09bd851383f47285844 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java @@ -124,8 +124,7 @@ class CollaborationVorgangProcessorTest { void shouldHaveThreeLinks() { var model = callProcessor(); - assertThat(model.getLinks()).hasSize(3); - + assertThat(model.getLinks()).hasSize(4); } @Test @@ -141,6 +140,19 @@ class CollaborationVorgangProcessorTest { .isEqualTo(expectedHref); } + @Test + void shouldAddSearchFachstelleLink() { + var expectedHref = UriComponentsBuilder.fromUriString(FachstelleController.PATH) + .queryParam(FachstelleController.SEARCH_BY_PARAM, "{" + FachstelleController.SEARCH_BY_PARAM + "}") + .build().toString(); + + var model = callProcessor(); + + assertThat(model.getLink(CollaborationVorgangProcessor.REL_SEARCH_FACHSTELLE)).get() + .extracting(Link::getHref) + .isEqualTo(expectedHref); + } + @Test void shouldAddCollaborationsLink() { var expectedHref = UriComponentsBuilder.fromUriString(CollaborationController.PATH)