diff --git a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/EtterlevelseController.java b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/EtterlevelseController.java index dfa9aacab..00d455320 100644 --- a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/EtterlevelseController.java +++ b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/EtterlevelseController.java @@ -111,8 +111,10 @@ public ResponseEntity createEtterlevelse(@RequestBody Ette throw new ValidationException("Tried to create etterlevelse with old architecture"); } - var krav = service.save(request); - return new ResponseEntity<>(krav.toResponse(), HttpStatus.CREATED); + etterlevelseDokumentasjonService.updatePriorityList(request.getEtterlevelseDokumentasjonId(), request.getKravNummer(), request.isPrioritised()); + + var etterlevelse = service.save(request); + return new ResponseEntity<>(etterlevelse.toResponse(), HttpStatus.CREATED); } @Operation(summary = "Update Etterlevelse") @@ -128,6 +130,8 @@ public ResponseEntity updateEtterlevelse(@PathVariable UUI throw new ValidationException("Tried to create etterlevelse with old architecture"); } + etterlevelseDokumentasjonService.updatePriorityList(request.getEtterlevelseDokumentasjonId(), request.getKravNummer(), request.isPrioritised()); + var etterlevelse = service.save(request); return ResponseEntity.ok(etterlevelse.toResponse()); } diff --git a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/dto/EtterlevelseRequest.java b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/dto/EtterlevelseRequest.java index bc19e53c6..bb271df68 100644 --- a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/dto/EtterlevelseRequest.java +++ b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelse/dto/EtterlevelseRequest.java @@ -39,6 +39,7 @@ public class EtterlevelseRequest implements RequestElement, KravId { private List suksesskriterieBegrunnelser; private Boolean update; + private boolean prioritised; @Override public void format() { diff --git a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonService.java b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonService.java index 536d46388..160b71203 100644 --- a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonService.java +++ b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonService.java @@ -160,6 +160,27 @@ public EtterlevelseDokumentasjon delete(UUID id) { return storage.delete(id); } + + @Transactional(propagation = Propagation.REQUIRED) + public EtterlevelseDokumentasjon updatePriorityList(String etterlevelseDokumentasjonId, int kravNummer, boolean prioritised) { + EtterlevelseDokumentasjon etterlevelseDokumentasjon = get(UUID.fromString(etterlevelseDokumentasjonId)); + + List priorityList = etterlevelseDokumentasjon.getPrioritertKravNummer(); + if (prioritised) { + if (!priorityList.contains(String.valueOf(kravNummer))) { + priorityList.add(String.valueOf(kravNummer)); + } + } else { + if (priorityList.contains(String.valueOf(kravNummer))) { + priorityList = priorityList.stream().filter(number -> !number.equals(String.valueOf(kravNummer))).toList(); + } + } + etterlevelseDokumentasjon.mergePrioritertKravNummer(priorityList); + return storage.save(etterlevelseDokumentasjon); + } + + ; + public List getByBehandlingId(List ids) { return convertToDomaionObject(etterlevelseDokumentasjonRepo.findByBehandlingIds(ids)); } diff --git a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/domain/EtterlevelseDokumentasjon.java b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/domain/EtterlevelseDokumentasjon.java index 1b1030159..e41190b3a 100644 --- a/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/domain/EtterlevelseDokumentasjon.java +++ b/apps/backend/src/main/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/domain/EtterlevelseDokumentasjon.java @@ -74,6 +74,10 @@ public void merge(EtterlevelseDokumentasjonRequest request) { varslingsadresser = copyOf(request.getVarslingsadresser()); } + public void mergePrioritertKravNummer(List newPrioritertKravNummer) { + prioritertKravNummer = newPrioritertKravNummer; + } + public EtterlevelseDokumentasjonResponse toResponse() { return EtterlevelseDokumentasjonResponse.builder() .id(id) diff --git a/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonIT.java b/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonIT.java index 55e54ef9f..d0d414547 100644 --- a/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonIT.java +++ b/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonIT.java @@ -5,12 +5,15 @@ import no.nav.data.etterlevelse.codelist.CodelistStub; import no.nav.data.etterlevelse.etterlevelse.domain.Etterlevelse; import no.nav.data.etterlevelse.etterlevelseDokumentasjon.domain.EtterlevelseDokumentasjon; +import no.nav.data.etterlevelse.etterlevelseDokumentasjon.dto.EtterlevelseDokumentasjonRequest; import no.nav.data.etterlevelse.etterlevelseDokumentasjon.dto.EtterlevelseDokumentasjonResponse; import no.nav.data.etterlevelse.etterlevelsemetadata.domain.EtterlevelseMetadata; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.http.HttpStatus; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; public class EtterlevelseDokumentasjonIT extends IntegrationTestBase { @@ -70,5 +73,36 @@ void deleteEtterlevelseDokumentasjonAndChildren() { } + @Test + void shouldOnlyUpdatePrioritertKravNummerWithoutOverwrittingOtherFields() { + var etterlevelseDokumentasjon_1 = etterlevelseDokumentasjonService.save( + EtterlevelseDokumentasjonRequest.builder() + .title("test dokumentasjon") + .etterlevelseNummer(101) + .knyttetTilVirkemiddel(false) + .virkemiddelId("") + .beskrivelse("") + .forGjenbruk(false) + .teams(List.of("")) + .resources(List.of("")) + .risikoeiere(List.of("")) + .irrelevansFor(List.of("")) + .update(false) + .behandlerPersonopplysninger(true) + .behandlingIds(List.of("")) + .prioritertKravNummer(List.of()) + .varslingsadresser(List.of()) + .build() + ); + + etterlevelseDokumentasjon_1.mergePrioritertKravNummer(List.of("test")); + + var updatedEtterlevelseDokumentasjon = etterlevelseDokumentasjonStorageService.save(etterlevelseDokumentasjon_1); + + assertThat(updatedEtterlevelseDokumentasjon.getId()).isEqualTo(etterlevelseDokumentasjon_1.getId()); + assertThat(updatedEtterlevelseDokumentasjon.getTitle()).isEqualTo(etterlevelseDokumentasjon_1.getTitle()); + assertThat(updatedEtterlevelseDokumentasjon.getPrioritertKravNummer()).isEqualTo(List.of("test")); + } + } \ No newline at end of file