From 9edf190deef37ae97cd6c1e00fa0e3804fefcb47 Mon Sep 17 00:00:00 2001 From: Janis Saldabols Date: Mon, 3 Jun 2024 13:45:20 +0300 Subject: [PATCH 1/2] PR-1776 Return loan id on check out --- .../org/folio/ncip/services/FolioCheckOutItemService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java b/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java index b60e7d8..910f9f9 100644 --- a/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java +++ b/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java @@ -12,6 +12,7 @@ import org.extensiblecatalog.ncip.v2.service.CheckOutItemService; import org.extensiblecatalog.ncip.v2.service.ItemId; import org.extensiblecatalog.ncip.v2.service.ItemIdentifierType; +import org.extensiblecatalog.ncip.v2.service.ItemOptionalFields; import org.extensiblecatalog.ncip.v2.service.Problem; import org.extensiblecatalog.ncip.v2.service.ProblemType; import org.extensiblecatalog.ncip.v2.service.RemoteServiceManager; @@ -37,6 +38,7 @@ public CheckOutItemResponseData performService(CheckOutItemInitiationData initDa ItemId itemId = initData.getItemId(); UserId userId = retrieveUserId(initData); String dueDate = null; + String loanUuid = null; try { validateUserId(userId); validateItemId(itemId); @@ -79,6 +81,7 @@ public CheckOutItemResponseData performService(CheckOutItemInitiationData initDa //THE SERVICE MANAGER CALLS THE OKAPI APIs JsonObject checkOutItemResponseDetails = ((FolioRemoteServiceManager)serviceManager).checkOut(initData,requesterAgencyId.toLowerCase()); dueDate = checkOutItemResponseDetails.getString("dueDate"); + loanUuid = checkOutItemResponseDetails.getString("id"); //DUE DATE PARSE STARTED FAILING 11-2020 //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); @@ -110,6 +113,9 @@ public CheckOutItemResponseData performService(CheckOutItemInitiationData initDa responseData.setDateDue(calendar); responseData.setItemId(iId); responseData.setUserId(uId); + ItemOptionalFields o = new ItemOptionalFields(); + o.setHoldQueue(loanUuid); + responseData.setItemOptionalFields(o); return responseData; } From 7662d35eace6975fedb26fd18f196bc692682f51 Mon Sep 17 00:00:00 2001 From: Janis Saldabols Date: Mon, 3 Jun 2024 16:22:18 +0300 Subject: [PATCH 2/2] PR-1777 Return requester id in request item call --- .../ncip/services/FolioCheckOutItemService.java | 12 +++++++++--- .../folio/ncip/services/FolioRequestItemService.java | 11 +++++++++++ src/test/java/org/folio/ncip/RequestItem.java | 3 +++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java b/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java index 910f9f9..88b1e1d 100644 --- a/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java +++ b/src/main/java/org/folio/ncip/services/FolioCheckOutItemService.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; +import java.util.List; + import org.apache.log4j.Logger; import org.extensiblecatalog.ncip.v2.service.AgencyId; import org.extensiblecatalog.ncip.v2.service.AuthenticationInput; @@ -19,6 +21,7 @@ import org.extensiblecatalog.ncip.v2.service.ServiceContext; import org.extensiblecatalog.ncip.v2.service.UserId; import org.extensiblecatalog.ncip.v2.service.UserIdentifierType; +import org.extensiblecatalog.ncip.v2.service.UserOptionalFields; import org.folio.ncip.Constants; import org.folio.ncip.FolioRemoteServiceManager; @@ -113,9 +116,12 @@ public CheckOutItemResponseData performService(CheckOutItemInitiationData initDa responseData.setDateDue(calendar); responseData.setItemId(iId); responseData.setUserId(uId); - ItemOptionalFields o = new ItemOptionalFields(); - o.setHoldQueue(loanUuid); - responseData.setItemOptionalFields(o); + UserId loanId = new UserId(); + loanId.setUserIdentifierValue(loanUuid); + loanId.setUserIdentifierType(new UserIdentifierType(Constants.SCHEME, "loanUuid")); + UserOptionalFields userOptionalFields = new UserOptionalFields(); + userOptionalFields.setUserIds(List.of(loanId)); + responseData.setUserOptionalFields(userOptionalFields); return responseData; } diff --git a/src/main/java/org/folio/ncip/services/FolioRequestItemService.java b/src/main/java/org/folio/ncip/services/FolioRequestItemService.java index c42e2d2..b36f552 100644 --- a/src/main/java/org/folio/ncip/services/FolioRequestItemService.java +++ b/src/main/java/org/folio/ncip/services/FolioRequestItemService.java @@ -24,6 +24,8 @@ import org.extensiblecatalog.ncip.v2.service.RequestType; import org.extensiblecatalog.ncip.v2.service.ServiceContext; import org.extensiblecatalog.ncip.v2.service.UserId; +import org.extensiblecatalog.ncip.v2.service.UserIdentifierType; +import org.extensiblecatalog.ncip.v2.service.UserOptionalFields; import org.folio.ncip.Constants; import org.folio.ncip.FolioNcipException; import org.folio.ncip.FolioRemoteServiceManager; @@ -73,10 +75,12 @@ public RequestItemResponseData performService(RequestItemInitiationData initData RequestId ncipRequestId = new RequestId(); ItemDescription itemDescription = new ItemDescription(); LocationNameInstance locationNameInstance = new LocationNameInstance(); + UserId optionalUserId = new UserId(); try { JsonObject requestItemResponseDetails = ((FolioRemoteServiceManager)serviceManager) .requestItem(bibliographicId.getBibliographicRecordId().getBibliographicRecordIdentifier(), userId, titleRequest, requestType, pickUpLocationCode); String assignedRequestId = requestItemResponseDetails.getString("id"); + String requesterId = requestItemResponseDetails.getString("requesterId"); String barcode = null; String callNumber = null; String locationName = null; @@ -92,6 +96,7 @@ public RequestItemResponseData performService(RequestItemInitiationData initData itemDescription.setCallNumber(callNumber); locationNameInstance.setLocationNameValue(locationName); itemId.setItemIdentifierValue(barcode); + optionalUserId.setUserIdentifierValue(requesterId); } catch(Exception exception) { logger.error("Failed to Page RequestItem " + exception.getLocalizedMessage()); @@ -112,6 +117,11 @@ public RequestItemResponseData performService(RequestItemInitiationData initData itemOptionalFields.setLocations(List.of(location)); itemId.setItemIdentifierType(itemIdentifierType); ncipRequestId.setRequestIdentifierType(requestIdentifierType); + + optionalUserId.setUserIdentifierType(new UserIdentifierType(Constants.SCHEME,"uuid")); + UserOptionalFields userOptionalFields = new UserOptionalFields(); + userOptionalFields.setUserIds(List.of(optionalUserId)); + RequestItemResponseData requestItemResponseData = new RequestItemResponseData(); requestItemResponseData.setItemId(itemId); requestItemResponseData.setRequestId(ncipRequestId); @@ -119,6 +129,7 @@ public RequestItemResponseData performService(RequestItemInitiationData initData requestItemResponseData.setItemOptionalFields(itemOptionalFields); requestItemResponseData.setRequestType(new RequestType(Constants.SCHEME, Constants.PAGE)); requestItemResponseData.setRequestScopeType(new RequestScopeType(Constants.SCHEME, Constants.ITEM)); + requestItemResponseData.setUserOptionalFields(userOptionalFields); return requestItemResponseData; } diff --git a/src/test/java/org/folio/ncip/RequestItem.java b/src/test/java/org/folio/ncip/RequestItem.java index 6a85abf..e5da396 100644 --- a/src/test/java/org/folio/ncip/RequestItem.java +++ b/src/test/java/org/folio/ncip/RequestItem.java @@ -23,6 +23,7 @@ public class RequestItem extends TestBase { private static final String ITEM_IDENTIFIER = "0000005"; private static final String CALL_NUMBER = "58.95"; private static final String LOCATION = "Annex : Datalogisk Institut"; + private static final String REQUESTER_ID = "764fe3bf-e09b-4fcc-b4a9-c78aab6995f1"; /** * @throws java.lang.Exception @@ -41,6 +42,7 @@ public void callRequestItem() throws MalformedURLException { assertTrue(body.contains(ITEM_IDENTIFIER)); assertTrue(body.contains(CALL_NUMBER)); assertTrue(body.contains(LOCATION)); + assertTrue(body.contains(REQUESTER_ID)); } @@ -55,5 +57,6 @@ public void callRequestItemTitle() throws MalformedURLException { assertTrue(body.contains(ITEM_IDENTIFIER)); assertTrue(body.contains(CALL_NUMBER)); assertTrue(body.contains(LOCATION)); + assertTrue(body.contains(REQUESTER_ID)); } }