diff --git a/NEWS.md b/NEWS.md index a4ffae8b..dff8aade 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +## v1.2.4 2024-12-12 +* MODDCB-152: Support for intermediate requests + ## v1.2.3 2024-12-02 * MODDCB-90: Accept existing circulation request ID * MODDCB-105: Accept existing circulation request ID (borrowing transaction) diff --git a/pom.xml b/pom.xml index 8649c093..fdd41d90 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.folio mod-dcb mod-dcb - 1.2.4-SNAPSHOT + 1.2.5-SNAPSHOT Manage DCB related transactions in folio jar diff --git a/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java b/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java index 722660b2..2d409777 100644 --- a/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java +++ b/src/main/java/org/folio/dcb/service/impl/EcsRequestTransactionsServiceImpl.java @@ -1,7 +1,9 @@ package org.folio.dcb.service.impl; import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.BORROWER; +import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.BORROWING_PICKUP; import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.LENDER; +import static org.folio.dcb.domain.dto.DcbTransaction.RoleEnum.PICKUP; import java.util.UUID; @@ -49,7 +51,10 @@ public TransactionStatusResponse createEcsRequestTransactions(String ecsRequestT RequestStatus.from(circulationRequest.getStatus()))) { if (dcbTransaction.getRole() == LENDER) { createLenderEcsRequestTransactions(ecsRequestTransactionsId, dcbTransaction, circulationRequest); - } else if(dcbTransaction.getRole() == BORROWER) { + } else if(dcbTransaction.getRole() == BORROWER + || dcbTransaction.getRole() == PICKUP + || dcbTransaction.getRole() == BORROWING_PICKUP) { + createBorrowerEcsRequestTransactions(ecsRequestTransactionsId, dcbTransaction, circulationRequest); } else { diff --git a/src/main/resources/swagger.api/schemas/CirculationRequest.yaml b/src/main/resources/swagger.api/schemas/CirculationRequest.yaml index a8fb0c56..c45a1fd3 100644 --- a/src/main/resources/swagger.api/schemas/CirculationRequest.yaml +++ b/src/main/resources/swagger.api/schemas/CirculationRequest.yaml @@ -18,6 +18,7 @@ CirculationRequest: enum: - Primary - Secondary + - Intermediate requestLevel: description: Level of the request - Item or Title type: string diff --git a/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java b/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java index 3b30281f..7b53e395 100644 --- a/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java +++ b/src/test/java/org/folio/dcb/controller/EcsRequestTransactionsApiControllerTest.java @@ -2,7 +2,9 @@ import static org.folio.dcb.utils.EntityUtils.CIRCULATION_REQUEST_ID; import static org.folio.dcb.utils.EntityUtils.createBorrowingEcsRequestTransactionByRole; +import static org.folio.dcb.utils.EntityUtils.createBorrowingPickupEcsRequestTransactionByRole; import static org.folio.dcb.utils.EntityUtils.createLendingEcsRequestTransactionByRole; +import static org.folio.dcb.utils.EntityUtils.createPickupEcsRequestTransactionByRole; import static org.hamcrest.Matchers.is; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; @@ -83,6 +85,32 @@ void createBorrowingEcsRequestTest() throws Exception { .andExpect(status().isCreated()); } + @Test + void createPickupEcsRequestTest() throws Exception { + removeExistedTransactionFromDbIfSoExists(); + + this.mockMvc.perform( + post("/ecs-request-transactions/" + CIRCULATION_REQUEST_ID) + .content(asJsonString(createPickupEcsRequestTransactionByRole())) + .headers(defaultHeaders()) + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isCreated()); + } + + @Test + void createBorrowingPickupEcsRequestTest() throws Exception { + removeExistedTransactionFromDbIfSoExists(); + + this.mockMvc.perform( + post("/ecs-request-transactions/" + CIRCULATION_REQUEST_ID) + .content(asJsonString(createBorrowingPickupEcsRequestTransactionByRole())) + .headers(defaultHeaders()) + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isCreated()); + } + @Test void checkErrorStatusForInvalidRequest() throws Exception { DcbTransaction dcbTransaction = createLendingEcsRequestTransactionByRole(); diff --git a/src/test/java/org/folio/dcb/utils/EntityUtils.java b/src/test/java/org/folio/dcb/utils/EntityUtils.java index 48d1b1e1..9e469962 100644 --- a/src/test/java/org/folio/dcb/utils/EntityUtils.java +++ b/src/test/java/org/folio/dcb/utils/EntityUtils.java @@ -92,6 +92,24 @@ public static DcbTransaction createBorrowingEcsRequestTransactionByRole() { .build(); } + public static DcbTransaction createPickupEcsRequestTransactionByRole() { + return DcbTransaction.builder() + .requestId(REQUEST_ID) + .item(createDcbItem()) + .role(DcbTransaction.RoleEnum.PICKUP) + .pickup(createDcbPickup()) + .build(); + } + + public static DcbTransaction createBorrowingPickupEcsRequestTransactionByRole() { + return DcbTransaction.builder() + .requestId(REQUEST_ID) + .item(createDcbItem()) + .role(DcbTransaction.RoleEnum.BORROWING_PICKUP) + .pickup(createDcbPickup()) + .build(); + } + public static org.folio.dcb.domain.dto.ServicePointRequest createServicePointRequest() { return org.folio.dcb.domain.dto.ServicePointRequest.builder() .id(PICKUP_SERVICE_POINT_ID)