Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import org.apache.logging.log4j.Logger;
import org.folio.circulation.domain.representations.logs.LogEventType;
import org.folio.circulation.domain.validation.RequestLoanValidator;
import org.folio.circulation.resources.HoldNoticeSender;
import org.folio.circulation.resources.RequestBlockValidators;
import org.folio.circulation.resources.RequestNoticeSender;
import org.folio.circulation.resources.handlers.error.CirculationErrorHandler;
Expand All @@ -59,19 +60,22 @@ public class CreateRequestService {
private final UpdateUponRequest updateUponRequest;
private final RequestLoanValidator requestLoanValidator;
private final RequestNoticeSender requestNoticeSender;
private final HoldNoticeSender holdNoticeSender;
private final RequestBlockValidators requestBlockValidators;
private final EventPublisher eventPublisher;
private final CirculationErrorHandler errorHandler;

public CreateRequestService(RequestRelatedRepositories repositories,
UpdateUponRequest updateUponRequest, RequestLoanValidator requestLoanValidator,
RequestNoticeSender requestNoticeSender, RequestBlockValidators requestBlockValidators,
EventPublisher eventPublisher, CirculationErrorHandler errorHandler) {
RequestNoticeSender requestNoticeSender, HoldNoticeSender holdNoticeSender,
RequestBlockValidators requestBlockValidators, EventPublisher eventPublisher,
CirculationErrorHandler errorHandler) {

this.repositories = repositories;
this.updateUponRequest = updateUponRequest;
this.requestLoanValidator = requestLoanValidator;
this.requestNoticeSender = requestNoticeSender;
this.holdNoticeSender = holdNoticeSender;
this.requestBlockValidators = requestBlockValidators;
this.eventPublisher = eventPublisher;
this.errorHandler = errorHandler;
Expand Down Expand Up @@ -113,7 +117,9 @@ public CompletableFuture<Result<RequestAndRelatedRecords>> createRequest(
.thenApplyAsync(r -> {
r.after(t -> eventPublisher.publishLogRecord(mapToRequestLogEventJson(t.getRequest()), getLogEventType()));
return r.next(requestNoticeSender::sendNoticeOnRequestCreated);
}).thenApply(r -> logResult(r, "createRequest"));
})
.thenComposeAsync(r -> r.after(this::sendHoldNoticeIfNeeded))
.thenApply(r -> logResult(r, "createRequest"));
}

private Result<RequestAndRelatedRecords> refuseHoldOrRecallTlrWhenPageableItemExists(
Expand Down Expand Up @@ -295,4 +301,7 @@ private LogEventType getLogEventType() {
: REQUEST_CREATED;
}

private CompletableFuture<Result<RequestAndRelatedRecords>> sendHoldNoticeIfNeeded(RequestAndRelatedRecords records) {
return holdNoticeSender.sendHoldNoticeIfNeeded(records.getRequest()).thenApply(v -> Result.succeeded(records));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public enum NoticeEventType {
DUE_DATE("Due date"),
ITEM_RECALLED("Item recalled"),
AGED_TO_LOST("Aged to lost"),
HOLD_REQUEST_FOR_ITEM("Hold request for item"),

// Request notices,
PAGING_REQUEST("Paging request"),
Expand Down
Loading