@chevre/domain 21.2.0-alpha.13 → 21.2.0-alpha.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example/src/chevre/aggregateEventReservation.ts +1 -1
- package/example/src/chevre/aggregation/aggregateSystem.ts +85 -27
- package/example/src/chevre/countDelayedTasks.ts +7 -2
- package/example/src/chevre/deleteTasksByName.ts +10 -2
- package/example/src/chevre/findMovieTheaterById.ts +40 -0
- package/example/src/chevre/importEventsFromCOA.ts +3 -4
- package/example/src/chevre/lockStockHolder.ts +5 -2
- package/example/src/chevre/migrateOrderAdditionalProperties.ts +85 -0
- package/example/src/chevre/migrateScreeningEventSeriesVersion.ts +79 -0
- package/example/src/chevre/processPay.ts +5 -1
- package/example/src/chevre/processRegisterMembership.ts +8 -4
- package/example/src/chevre/processRegisterPaymentCard.ts +8 -4
- package/example/src/chevre/processReserve.ts +5 -2
- package/example/src/chevre/saveTasks.ts +13 -10
- package/example/src/chevre/searchAbortedTasks.ts +34 -0
- package/example/src/chevre/searchActions.ts +33 -0
- package/example/src/chevre/searchEventSeats.ts +5 -2
- package/example/src/chevre/searchHoldReservations.ts +38 -0
- package/example/src/chevre/searchReservationNumbersByOrderNumbers.ts +37 -1
- package/example/src/chevre/searchScreeningRooms.ts +23 -0
- package/example/src/chevre/searchSendEmailActions.ts +44 -0
- package/example/src/chevre/task/executeTasks.ts +26 -0
- package/example/src/chevre/transaction/findCreditCard.ts +1 -1
- package/example/src/chevre/transaction/orderMembershipService.ts +1 -1
- package/example/src/chevre/transaction/processReturnOrder.ts +40 -0
- package/example/src/chevre/transaction/startExportTasks.ts +2 -1
- package/example/src/chevre/updateScreeningRoom.ts +41 -0
- package/example/src/chevre/updateTransaction.ts +1 -1
- package/example/src/playOnMoment.ts +24 -0
- package/lib/chevre/credentials.d.ts +1 -0
- package/lib/chevre/credentials.js +2 -1
- package/lib/chevre/eventEmitter/assetTransaction.d.ts +21 -0
- package/lib/chevre/eventEmitter/assetTransaction.js +25 -0
- package/lib/chevre/eventEmitter/task.d.ts +18 -0
- package/lib/chevre/eventEmitter/task.js +25 -0
- package/lib/chevre/eventEmitter/transaction.d.ts +21 -0
- package/lib/chevre/eventEmitter/transaction.js +25 -0
- package/lib/chevre/eventEmitter.d.ts +4 -0
- package/lib/chevre/eventEmitter.js +9 -0
- package/lib/chevre/index.d.ts +3 -2
- package/lib/chevre/index.js +5 -3
- package/lib/chevre/repo/account.js +3 -2
- package/lib/chevre/repo/accountTransaction.d.ts +3 -1
- package/lib/chevre/repo/accountTransaction.js +3 -2
- package/lib/chevre/repo/action.d.ts +42 -2
- package/lib/chevre/repo/action.js +130 -57
- package/lib/chevre/repo/additionalProperty.js +2 -1
- package/lib/chevre/repo/aggregation.d.ts +3 -0
- package/lib/chevre/repo/aggregation.js +3 -0
- package/lib/chevre/repo/assetTransaction.d.ts +23 -8
- package/lib/chevre/repo/assetTransaction.js +253 -80
- package/lib/chevre/repo/categoryCode.d.ts +1 -1
- package/lib/chevre/repo/categoryCode.js +37 -25
- package/lib/chevre/repo/code.js +3 -2
- package/lib/chevre/repo/comment.d.ts +4 -1
- package/lib/chevre/repo/comment.js +22 -6
- package/lib/chevre/repo/confirmationNumber.d.ts +0 -1
- package/lib/chevre/repo/confirmationNumber.js +3 -15
- package/lib/chevre/repo/creativeWork.d.ts +2 -4
- package/lib/chevre/repo/creativeWork.js +35 -12
- package/lib/chevre/repo/customer.js +2 -1
- package/lib/chevre/repo/emailMessage.d.ts +1 -27
- package/lib/chevre/repo/emailMessage.js +2 -1
- package/lib/chevre/repo/event.d.ts +27 -1
- package/lib/chevre/repo/event.js +67 -33
- package/lib/chevre/repo/member.js +4 -3
- package/lib/chevre/repo/merchantReturnPolicy.d.ts +1 -3
- package/lib/chevre/repo/merchantReturnPolicy.js +2 -1
- package/lib/chevre/repo/mongoose/schemas/account.d.ts +4 -2
- package/lib/chevre/repo/mongoose/schemas/accountTitle.d.ts +29 -3
- package/lib/chevre/repo/mongoose/schemas/accountTransaction.d.ts +31 -3
- package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/accountingReport.d.ts +13 -3
- package/lib/chevre/repo/mongoose/schemas/action.d.ts +43 -3
- package/lib/chevre/repo/mongoose/schemas/action.js +19 -1
- package/lib/chevre/repo/mongoose/schemas/additionalProperty.d.ts +17 -3
- package/lib/chevre/repo/mongoose/schemas/aggregation.d.ts +4 -2
- package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +44 -3
- package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +32 -19
- package/lib/chevre/repo/mongoose/schemas/authorization.d.ts +19 -3
- package/lib/chevre/repo/mongoose/schemas/authorization.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/categoryCode.d.ts +25 -3
- package/lib/chevre/repo/mongoose/schemas/comments.d.ts +27 -3
- package/lib/chevre/repo/mongoose/schemas/comments.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/creativeWork.d.ts +43 -3
- package/lib/chevre/repo/mongoose/schemas/customer.d.ts +25 -3
- package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +21 -3
- package/lib/chevre/repo/mongoose/schemas/event.d.ts +71 -3
- package/lib/chevre/repo/mongoose/schemas/holdReservation.d.ts +75 -0
- package/lib/chevre/repo/mongoose/schemas/holdReservation.js +92 -0
- package/lib/chevre/repo/mongoose/schemas/member.d.ts +13 -3
- package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.d.ts +21 -3
- package/lib/chevre/repo/mongoose/schemas/offer.d.ts +65 -3
- package/lib/chevre/repo/mongoose/schemas/offerCatalog.d.ts +27 -3
- package/lib/chevre/repo/mongoose/schemas/offerItemCondition.d.ts +74 -0
- package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +45 -0
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +51 -3
- package/lib/chevre/repo/mongoose/schemas/order.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/ownershipInfo.d.ts +25 -3
- package/lib/chevre/repo/mongoose/schemas/ownershipInfo.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/place.d.ts +49 -3
- package/lib/chevre/repo/mongoose/schemas/priceSpecification.d.ts +29 -3
- package/lib/chevre/repo/mongoose/schemas/product.d.ts +31 -3
- package/lib/chevre/repo/mongoose/schemas/project.d.ts +23 -3
- package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +63 -5
- package/lib/chevre/repo/mongoose/schemas/reservation.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/role.d.ts +11 -3
- package/lib/chevre/repo/mongoose/schemas/seller.d.ts +31 -3
- package/lib/chevre/repo/mongoose/schemas/seller.js +6 -0
- package/lib/chevre/repo/mongoose/schemas/serviceOutput.d.ts +11 -3
- package/lib/chevre/repo/mongoose/schemas/serviceOutput.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/task.d.ts +30 -3
- package/lib/chevre/repo/mongoose/schemas/task.js +2 -1
- package/lib/chevre/repo/mongoose/schemas/telemetry.d.ts +21 -3
- package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +40 -3
- package/lib/chevre/repo/mongoose/schemas/transaction.js +2 -1
- package/lib/chevre/repo/mongoose/schemas/trip.d.ts +11 -3
- package/lib/chevre/repo/offer.js +3 -2
- package/lib/chevre/repo/offerCatalog.js +0 -27
- package/lib/chevre/repo/offerItemCondition.d.ts +22 -0
- package/lib/chevre/repo/offerItemCondition.js +121 -0
- package/lib/chevre/repo/order.d.ts +55 -3
- package/lib/chevre/repo/order.js +62 -10
- package/lib/chevre/repo/ownershipInfo.js +2 -7
- package/lib/chevre/repo/place.d.ts +20 -5
- package/lib/chevre/repo/place.js +63 -23
- package/lib/chevre/repo/priceSpecification.js +3 -2
- package/lib/chevre/repo/product.d.ts +1 -3
- package/lib/chevre/repo/product.js +25 -4
- package/lib/chevre/repo/project.js +2 -1
- package/lib/chevre/repo/reservation.d.ts +20 -4
- package/lib/chevre/repo/reservation.js +40 -59
- package/lib/chevre/repo/role.js +3 -2
- package/lib/chevre/repo/seller.d.ts +1 -1
- package/lib/chevre/repo/seller.js +44 -23
- package/lib/chevre/repo/serviceOutput.js +2 -1
- package/lib/chevre/repo/stockHolder.d.ts +139 -7
- package/lib/chevre/repo/stockHolder.js +569 -102
- package/lib/chevre/repo/task.d.ts +45 -2
- package/lib/chevre/repo/task.js +94 -15
- package/lib/chevre/repo/transaction.d.ts +21 -2
- package/lib/chevre/repo/transaction.js +171 -50
- package/lib/chevre/repo/trip.js +2 -1
- package/lib/chevre/repository.d.ts +5 -2
- package/lib/chevre/repository.js +8 -4
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +6 -2
- package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +8 -6
- package/lib/chevre/service/aggregation/system.d.ts +110 -23
- package/lib/chevre/service/aggregation/system.js +213 -91
- package/lib/chevre/service/assetTransaction/cancelReservation.js +1 -28
- package/lib/chevre/service/assetTransaction/moneyTransfer.js +2 -24
- package/lib/chevre/service/assetTransaction/pay/account/validation.js +1 -1
- package/lib/chevre/service/assetTransaction/pay/potentialActions.js +17 -1
- package/lib/chevre/service/assetTransaction/pay.d.ts +5 -1
- package/lib/chevre/service/assetTransaction/pay.js +20 -34
- package/lib/chevre/service/assetTransaction/refund.js +2 -24
- package/lib/chevre/service/assetTransaction/registerService.js +1 -25
- package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +15 -5
- package/lib/chevre/service/assetTransaction/reserve/factory.js +122 -58
- package/lib/chevre/service/assetTransaction/reserve.d.ts +10 -1
- package/lib/chevre/service/assetTransaction/reserve.js +92 -69
- package/lib/chevre/service/assetTransaction.d.ts +6 -0
- package/lib/chevre/service/assetTransaction.js +9 -4
- package/lib/chevre/service/event.js +25 -6
- package/lib/chevre/service/notification/factory.js +2 -2
- package/lib/chevre/service/notification.d.ts +3 -1
- package/lib/chevre/service/notification.js +41 -7
- package/lib/chevre/service/offer/event/authorize.d.ts +3 -0
- package/lib/chevre/service/offer/event/authorize.js +8 -2
- package/lib/chevre/service/offer/event/factory.d.ts +3 -0
- package/lib/chevre/service/offer/event/factory.js +16 -5
- package/lib/chevre/service/offer/event/importFromCOA.js +2 -2
- package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
- package/lib/chevre/service/offer/event/voidTransaction.js +17 -1
- package/lib/chevre/service/offer/eventServiceByCOA.js +7 -9
- package/lib/chevre/service/offer/product.js +2 -2
- package/lib/chevre/service/offer.d.ts +16 -8
- package/lib/chevre/service/offer.js +71 -8
- package/lib/chevre/service/order/deleteOrder.d.ts +3 -1
- package/lib/chevre/service/order/deleteOrder.js +8 -8
- package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +5 -2
- package/lib/chevre/service/order/onOrderStatusChanged/factory.js +41 -81
- package/lib/chevre/service/order/onOrderStatusChanged.js +1 -3
- package/lib/chevre/service/order/onOrderUpdated.d.ts +16 -0
- package/lib/chevre/service/order/onOrderUpdated.js +22 -0
- package/lib/chevre/service/order/placeOrder.d.ts +1 -0
- package/lib/chevre/service/order/placeOrder.js +41 -24
- package/lib/chevre/service/order/returnOrder.d.ts +1 -0
- package/lib/chevre/service/order/returnOrder.js +7 -12
- package/lib/chevre/service/order/sendOrder.d.ts +1 -0
- package/lib/chevre/service/order/sendOrder.js +7 -10
- package/lib/chevre/service/order.d.ts +2 -1
- package/lib/chevre/service/order.js +3 -1
- package/lib/chevre/service/payment/any/onPaid.js +1 -1
- package/lib/chevre/service/payment/any/onRefund.js +1 -1
- package/lib/chevre/service/payment/any.d.ts +9 -5
- package/lib/chevre/service/payment/any.js +80 -18
- package/lib/chevre/service/payment/creditCard.d.ts +1 -1
- package/lib/chevre/service/payment/creditCard.js +23 -17
- package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +8 -7
- package/lib/chevre/service/payment/movieTicket/factory.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/getCredentials.d.ts +1 -1
- package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -1
- package/lib/chevre/service/payment/movieTicket/validation.d.ts +6 -6
- package/lib/chevre/service/payment/movieTicket/validation.js +55 -32
- package/lib/chevre/service/payment/movieTicket.d.ts +2 -2
- package/lib/chevre/service/payment/movieTicket.js +7 -6
- package/lib/chevre/service/product.js +1 -5
- package/lib/chevre/service/report/telemetry.d.ts +0 -11
- package/lib/chevre/service/report/telemetry.js +21 -24
- package/lib/chevre/service/reserve/cancelReservation.d.ts +5 -3
- package/lib/chevre/service/reserve/cancelReservation.js +162 -142
- package/lib/chevre/service/reserve/checkInReservation.d.ts +9 -4
- package/lib/chevre/service/reserve/checkInReservation.js +77 -3
- package/lib/chevre/service/reserve/confirmReservation.d.ts +7 -4
- package/lib/chevre/service/reserve/confirmReservation.js +133 -58
- package/lib/chevre/service/reserve/factory.d.ts +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.d.ts +17 -5
- package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +26 -24
- package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +2 -3
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -31
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +2 -3
- package/lib/chevre/service/reserve/useReservation.d.ts +7 -3
- package/lib/chevre/service/reserve/useReservation.js +61 -71
- package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +15 -0
- package/lib/chevre/service/reserve/verifyToken4reservation.js +56 -0
- package/lib/chevre/service/reserve.d.ts +3 -2
- package/lib/chevre/service/reserve.js +4 -2
- package/lib/chevre/service/task/aggregateScreeningEvent.js +1 -1
- package/lib/chevre/service/task/cancelPendingReservation.js +6 -2
- package/lib/chevre/service/task/cancelReservation.js +1 -1
- package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
- package/lib/chevre/service/task/deleteTransaction.js +10 -8
- package/lib/chevre/service/task/importOffersFromCOA.js +4 -0
- package/lib/chevre/service/task/onAuthorizationCreated.d.ts +7 -0
- package/lib/chevre/service/task/onAuthorizationCreated.js +108 -0
- package/lib/chevre/service/task/onEventChanged.d.ts +7 -0
- package/lib/chevre/service/task/{deleteOrder.js → onEventChanged.js} +8 -14
- package/lib/chevre/service/task/onResourceUpdated.d.ts +7 -0
- package/lib/chevre/service/task/onResourceUpdated.js +352 -0
- package/lib/chevre/service/task/placeOrder.js +1 -1
- package/lib/chevre/service/task/reserve.js +10 -7
- package/lib/chevre/service/task/returnOrder.js +1 -1
- package/lib/chevre/service/task/returnPayTransaction.js +2 -12
- package/lib/chevre/service/task/sendOrder.js +1 -1
- package/lib/chevre/service/task/useReservation.d.ts +7 -0
- package/lib/chevre/service/task/useReservation.js +36 -0
- package/lib/chevre/service/task/voidReserveTransaction.js +4 -2
- package/lib/chevre/service/task.d.ts +9 -0
- package/lib/chevre/service/task.js +43 -4
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +21 -0
- package/lib/chevre/service/transaction/deleteTransaction.js +232 -0
- package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +11 -1
- package/lib/chevre/service/transaction/moneyTransfer/factory.d.ts +1 -1
- package/lib/chevre/service/transaction/moneyTransfer/factory.js +3 -1
- package/lib/chevre/service/transaction/moneyTransfer/potentialActions.d.ts +1 -0
- package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +1 -1
- package/lib/chevre/service/transaction/moneyTransfer.js +10 -13
- package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
- package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +1 -1
- package/lib/chevre/service/transaction/orderProgramMembership.js +7 -3
- package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +42 -30
- package/lib/chevre/service/transaction/placeOrder.js +1 -5
- package/lib/chevre/service/transaction/placeOrderInProgress/factory.js +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.d.ts +1 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +1 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.d.ts +1 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.d.ts +3 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +7 -3
- package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -0
- package/lib/chevre/service/transaction/placeOrderInProgress/result.js +2 -2
- package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +2 -2
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +2 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +23 -17
- package/lib/chevre/service/transaction/placeOrderInProgress.d.ts +0 -3
- package/lib/chevre/service/transaction/placeOrderInProgress.js +28 -15
- package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +10 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +25 -17
- package/lib/chevre/service/transaction/returnOrder.d.ts +4 -0
- package/lib/chevre/service/transaction/returnOrder.js +228 -36
- package/lib/chevre/service/transaction.d.ts +7 -13
- package/lib/chevre/service/transaction.js +12 -139
- package/lib/chevre/settings.d.ts +13 -1
- package/lib/chevre/settings.js +56 -6
- package/package.json +5 -5
- package/example/src/chevre/createManyEventsIfNotExist.ts +0 -205
- package/example/src/chevre/eventCatalog2eventService.ts +0 -123
- package/example/src/chevre/migrateMoneyTransferPendingTransactionIdentifier.ts +0 -96
- package/example/src/chevre/migrateMovieAdditionalProperties.ts +0 -98
- package/example/src/chevre/migrateStockHolderKeys.ts +0 -89
- package/lib/chevre/service/task/deleteAssetTransaction.d.ts +0 -12
- package/lib/chevre/service/task/deleteAssetTransaction.js +0 -65
- package/lib/chevre/service/task/deleteOrder.d.ts +0 -6
|
@@ -19,67 +19,113 @@ const onReservationCanceled_1 = require("./potentialActions/onReservationCancele
|
|
|
19
19
|
/**
|
|
20
20
|
* 進行中の予約をキャンセルする
|
|
21
21
|
*/
|
|
22
|
-
|
|
23
|
-
function cancelPendingReservation(actionAttributesList) {
|
|
24
|
-
// tslint:disable-next-line:max-func-body-length
|
|
22
|
+
function cancelPendingReservation(actionAttributes) {
|
|
25
23
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
var _a;
|
|
26
25
|
const now = new Date();
|
|
27
26
|
let canceledReservations = [];
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
27
|
+
const { reserveTransaction } = yield cancelPengindIfNotYet(actionAttributes, now)(repos);
|
|
28
|
+
if (actionAttributes.object.typeOf === factory.reservationType.ReservationPackage) {
|
|
29
|
+
if (reserveTransaction.object.disablePendingReservations === true) {
|
|
30
|
+
// Pendingが存在しない場合は検索しても無駄(2023-06-05~)
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
canceledReservations = yield repos.reservation.search({
|
|
34
|
+
reservationNumber: { $eq: actionAttributes.object.reservationNumber },
|
|
35
|
+
typeOf: factory.reservationType.EventReservation
|
|
36
|
+
});
|
|
37
|
+
canceledReservations = canceledReservations.map((r) => {
|
|
38
|
+
// _idは不要であり、存在すると予期せぬ影響を及ぼす可能性がある
|
|
39
|
+
delete r._id;
|
|
40
|
+
return r;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
yield (0, onReservationCanceled_1.onReservationCanceled)(canceledReservations, false, {
|
|
45
|
+
project: { id: reserveTransaction.project.id },
|
|
46
|
+
id: String((_a = reserveTransaction.object.reservationFor) === null || _a === void 0 ? void 0 : _a.id)
|
|
47
|
+
})({ task: repos.task });
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
exports.cancelPendingReservation = cancelPendingReservation;
|
|
51
|
+
function cancelPengindIfNotYet(params, now) {
|
|
52
|
+
// tslint:disable-next-line:max-func-body-length
|
|
53
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const actionAttributes = params;
|
|
55
|
+
const reserveTransactionId = actionAttributes.purpose.id;
|
|
56
|
+
// 予約取引を検索
|
|
57
|
+
const reserveTransactions = yield repos.assetTransaction.search({
|
|
58
|
+
limit: 1,
|
|
59
|
+
page: 1,
|
|
60
|
+
typeOf: factory.assetTransactionType.Reserve,
|
|
61
|
+
ids: [reserveTransactionId]
|
|
62
|
+
});
|
|
63
|
+
const reserveTransaction = reserveTransactions.shift();
|
|
64
|
+
if (reserveTransaction === undefined) {
|
|
65
|
+
throw new factory.errors.NotFound(factory.assetTransactionType.Reserve);
|
|
66
|
+
}
|
|
67
|
+
// 冪等性を担保(2023-06-05~)
|
|
68
|
+
const completedActions = yield repos.action.search({
|
|
69
|
+
limit: 1,
|
|
70
|
+
page: 1,
|
|
71
|
+
actionStatus: { $in: [factory.actionStatusType.CompletedActionStatus] },
|
|
72
|
+
typeOf: { $eq: params.typeOf },
|
|
73
|
+
object: {
|
|
74
|
+
typeOf: { $eq: params.object.typeOf },
|
|
75
|
+
reservationNumber: { $eq: params.object.reservationNumber }
|
|
76
|
+
},
|
|
77
|
+
purpose: {
|
|
78
|
+
id: { $in: [params.purpose.id] },
|
|
79
|
+
typeOf: { $in: [params.purpose.typeOf] }
|
|
80
|
+
}
|
|
81
|
+
}, ['_id'], []);
|
|
82
|
+
if (completedActions.length === 0) {
|
|
83
|
+
// アクション開始
|
|
84
|
+
const action = yield repos.action.start(actionAttributes);
|
|
85
|
+
const actionObject = actionAttributes.object;
|
|
86
|
+
let cancelResult;
|
|
87
|
+
try {
|
|
88
|
+
if (reserveTransaction !== undefined) {
|
|
89
|
+
const reservationFor = reserveTransaction.object.reservationFor;
|
|
90
|
+
if (reservationFor === undefined) {
|
|
91
|
+
throw new factory.errors.NotFound('transaction.object.reservationFor');
|
|
92
|
+
}
|
|
93
|
+
// ReservationPackageに対応(2022-12-23~)
|
|
94
|
+
if (actionObject.typeOf === factory.reservationType.ReservationPackage) {
|
|
95
|
+
const subReservation = reserveTransaction.object.subReservation;
|
|
96
|
+
if (Array.isArray(subReservation) && subReservation.length > 0) {
|
|
97
|
+
yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
yield processUnlockSeat({
|
|
99
|
+
reservation: {
|
|
100
|
+
id: cancelingSubReservation.id,
|
|
101
|
+
project: { id: reserveTransaction.project.id },
|
|
102
|
+
reservedTicket: cancelingSubReservation.reservedTicket,
|
|
103
|
+
subReservation: cancelingSubReservation.subReservation,
|
|
104
|
+
reservationFor: {
|
|
105
|
+
id: String(reservationFor.id),
|
|
106
|
+
startDate: (reservationFor.typeOf === factory.eventType.ScreeningEvent)
|
|
107
|
+
? reservationFor.startDate
|
|
108
|
+
: reservationFor.departureTime
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
// holder:取引番号に対応(2023-06-05~)
|
|
112
|
+
expectedHolder: (reserveTransaction.object.useHoldStockByTransactionNumber === true)
|
|
113
|
+
? reserveTransaction.transactionNumber
|
|
114
|
+
: reserveTransactionId
|
|
115
|
+
})(repos);
|
|
116
|
+
yield processUnlockOfferRateLimit({
|
|
117
|
+
reservation: {
|
|
118
|
+
reservationNumber: reserveTransaction.object.reservationNumber,
|
|
119
|
+
reservedTicket: cancelingSubReservation.reservedTicket
|
|
120
|
+
},
|
|
121
|
+
reservationFor
|
|
122
|
+
})(repos);
|
|
123
|
+
})));
|
|
124
|
+
}
|
|
125
|
+
if (reserveTransaction.object.disablePendingReservations === true) {
|
|
126
|
+
// disablePendingReservationsの場合は処理不要(2023-06-05~)
|
|
50
127
|
}
|
|
51
|
-
|
|
52
|
-
if (actionObject.typeOf === factory.reservationType.ReservationPackage) {
|
|
53
|
-
const subReservation = reserveTransaction.object.subReservation;
|
|
54
|
-
if (Array.isArray(subReservation) && subReservation.length > 0) {
|
|
55
|
-
yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
// const cancelingReservation: factory.reservation.eventReservation.IReservation = {
|
|
57
|
-
// ...cancelingSubReservation,
|
|
58
|
-
// reservationFor
|
|
59
|
-
// };
|
|
60
|
-
yield processUnlockSeat({
|
|
61
|
-
reservation: {
|
|
62
|
-
id: cancelingSubReservation.id,
|
|
63
|
-
reservedTicket: cancelingSubReservation.reservedTicket,
|
|
64
|
-
subReservation: cancelingSubReservation.subReservation,
|
|
65
|
-
reservationFor: {
|
|
66
|
-
id: String(reservationFor.id),
|
|
67
|
-
startDate: (reservationFor.typeOf === factory.eventType.ScreeningEvent)
|
|
68
|
-
? reservationFor.startDate
|
|
69
|
-
: reservationFor.departureTime
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
expectedHolder: reserveTransactionId
|
|
73
|
-
})(repos);
|
|
74
|
-
yield processUnlockOfferRateLimit({
|
|
75
|
-
reservation: {
|
|
76
|
-
reservationNumber: cancelingSubReservation.reservationNumber,
|
|
77
|
-
reservedTicket: cancelingSubReservation.reservedTicket
|
|
78
|
-
},
|
|
79
|
-
reservationFor
|
|
80
|
-
})(repos);
|
|
81
|
-
})));
|
|
82
|
-
}
|
|
128
|
+
else {
|
|
83
129
|
// 予約番号単位でキャンセル状態に変更する
|
|
84
130
|
cancelResult = yield repos.reservation.cancelByReservationNumber({
|
|
85
131
|
reservationNumber: actionObject.reservationNumber,
|
|
@@ -87,82 +133,41 @@ function cancelPendingReservation(actionAttributesList) {
|
|
|
87
133
|
modifiedTime: now
|
|
88
134
|
});
|
|
89
135
|
}
|
|
90
|
-
else {
|
|
91
|
-
// 廃止(2022-12-27~)
|
|
92
|
-
throw new factory.errors.NotImplemented(`object.typeOf '${actionObject.typeOf}' not implemented`);
|
|
93
|
-
// const cancelingSubReservation = reserveTransaction.object.subReservation?.find((r) => {
|
|
94
|
-
// return r.id === actionObject.id;
|
|
95
|
-
// });
|
|
96
|
-
// // 取消対象予約が取引に存在すれば、適宜unlock
|
|
97
|
-
// if (cancelingSubReservation !== undefined) {
|
|
98
|
-
// const cancelingReservation: factory.reservation.eventReservation.IReservation = {
|
|
99
|
-
// ...cancelingSubReservation,
|
|
100
|
-
// reservationFor
|
|
101
|
-
// };
|
|
102
|
-
// await processUnlockSeat({
|
|
103
|
-
// reservation: cancelingReservation,
|
|
104
|
-
// expectedHolder: reserveTransactionId
|
|
105
|
-
// })(repos);
|
|
106
|
-
// await processUnlockOfferRateLimit({ reservation: cancelingReservation, reservationFor })(repos);
|
|
107
|
-
// // 予約が存在すればキャンセル状態に変更する
|
|
108
|
-
// const reservationCount = await repos.reservation.count({
|
|
109
|
-
// typeOf: cancelingSubReservation.typeOf,
|
|
110
|
-
// ids: [cancelingSubReservation.id]
|
|
111
|
-
// });
|
|
112
|
-
// if (reservationCount > 0) {
|
|
113
|
-
// await repos.reservation.cancel<factory.reservationType.EventReservation>({
|
|
114
|
-
// id: cancelingSubReservation.id,
|
|
115
|
-
// previousReservationStatus: actionObject.reservationStatus,
|
|
116
|
-
// modifiedTime: now
|
|
117
|
-
// });
|
|
118
|
-
// }
|
|
119
|
-
// }
|
|
120
|
-
}
|
|
121
136
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
try {
|
|
126
|
-
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
127
|
-
yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error: actionError });
|
|
128
|
-
}
|
|
129
|
-
catch (__) {
|
|
130
|
-
// 失敗したら仕方ない
|
|
137
|
+
else {
|
|
138
|
+
// 廃止(2022-12-27~)
|
|
139
|
+
throw new factory.errors.NotImplemented(`object.typeOf '${actionObject.typeOf}' not implemented`);
|
|
131
140
|
}
|
|
132
|
-
throw error;
|
|
133
141
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
matchedCount: cancelResult.matchedCount,
|
|
141
|
-
modifiedCount: cancelResult.modifiedCount
|
|
142
|
-
}
|
|
143
|
-
} : undefined
|
|
144
|
-
// canceledReservationId: canceledReservation?.id
|
|
145
|
-
);
|
|
146
|
-
yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
|
|
147
|
-
// await onReservationCanceledByAction(actionAttributes)({ task: repos.task });
|
|
148
|
-
if (actionObject.typeOf === factory.reservationType.ReservationPackage) {
|
|
149
|
-
// 最新のconfirmedReservationsを検索
|
|
150
|
-
canceledReservations = yield repos.reservation.search({
|
|
151
|
-
reservationNumber: { $eq: actionObject.reservationNumber },
|
|
152
|
-
typeOf: factory.reservationType.EventReservation
|
|
153
|
-
});
|
|
154
|
-
canceledReservations = canceledReservations.map((r) => {
|
|
155
|
-
// _idは不要であり、存在すると予期せぬ影響を及ぼす可能性がある
|
|
156
|
-
delete r._id;
|
|
157
|
-
return r;
|
|
158
|
-
});
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
// actionにエラー結果を追加
|
|
145
|
+
try {
|
|
146
|
+
const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
|
|
147
|
+
yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error: actionError });
|
|
159
148
|
}
|
|
160
|
-
|
|
161
|
-
|
|
149
|
+
catch (__) {
|
|
150
|
+
// 失敗したら仕方ない
|
|
151
|
+
}
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
// アクション完了
|
|
155
|
+
const actionResult = Object.assign({}, (cancelResult !== undefined) ? {
|
|
156
|
+
cancelResult: {
|
|
157
|
+
// n: cancelResult.n,
|
|
158
|
+
// nModified: cancelResult.nModified,
|
|
159
|
+
// ok: cancelResult.ok,
|
|
160
|
+
matchedCount: cancelResult.matchedCount,
|
|
161
|
+
modifiedCount: cancelResult.modifiedCount
|
|
162
|
+
}
|
|
163
|
+
} : undefined
|
|
164
|
+
// canceledReservationId: canceledReservation?.id
|
|
165
|
+
);
|
|
166
|
+
yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
|
|
162
167
|
}
|
|
168
|
+
return { reserveTransaction };
|
|
163
169
|
});
|
|
164
170
|
}
|
|
165
|
-
exports.cancelPendingReservation = cancelPendingReservation;
|
|
166
171
|
/**
|
|
167
172
|
* 予約をキャンセルする
|
|
168
173
|
*/
|
|
@@ -175,6 +180,7 @@ function cancelReservation(actionAttributesList) {
|
|
|
175
180
|
yield Promise.all(actionAttributesList.map((actionAttributes) => __awaiter(this, void 0, void 0, function* () {
|
|
176
181
|
const action = yield repos.action.start(actionAttributes);
|
|
177
182
|
let cancelResult;
|
|
183
|
+
let canceledReservationForId;
|
|
178
184
|
try {
|
|
179
185
|
if (actionAttributes.object.typeOf === factory.reservationType.ReservationPackage) {
|
|
180
186
|
// 予約取引を検索
|
|
@@ -186,22 +192,20 @@ function cancelReservation(actionAttributesList) {
|
|
|
186
192
|
});
|
|
187
193
|
const reserveTransaction = reserveTransactions.shift();
|
|
188
194
|
if (reserveTransaction === undefined) {
|
|
189
|
-
throw new factory.errors.NotFound(
|
|
195
|
+
throw new factory.errors.NotFound(factory.assetTransactionType.Reserve);
|
|
190
196
|
}
|
|
191
197
|
const reservationFor = reserveTransaction.object.reservationFor;
|
|
192
198
|
if (reservationFor === undefined) {
|
|
193
199
|
throw new factory.errors.NotFound('transaction.object.reservationFor');
|
|
194
200
|
}
|
|
201
|
+
canceledReservationForId = String(reservationFor.id);
|
|
195
202
|
const subReservation = reserveTransaction.object.subReservation;
|
|
196
203
|
if (Array.isArray(subReservation) && subReservation.length > 0) {
|
|
197
204
|
yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
|
|
198
|
-
// const cancelingReservation: factory.reservation.eventReservation.IReservation = {
|
|
199
|
-
// ...cancelingSubReservation,
|
|
200
|
-
// reservationFor
|
|
201
|
-
// };
|
|
202
205
|
yield processUnlockSeat({
|
|
203
206
|
reservation: {
|
|
204
207
|
id: cancelingSubReservation.id,
|
|
208
|
+
project: { id: reserveTransaction.project.id },
|
|
205
209
|
reservedTicket: cancelingSubReservation.reservedTicket,
|
|
206
210
|
subReservation: cancelingSubReservation.subReservation,
|
|
207
211
|
reservationFor: {
|
|
@@ -211,11 +215,14 @@ function cancelReservation(actionAttributesList) {
|
|
|
211
215
|
: reservationFor.departureTime
|
|
212
216
|
}
|
|
213
217
|
},
|
|
214
|
-
|
|
218
|
+
// holder:取引番号に対応(2023-06-05~)
|
|
219
|
+
expectedHolder: (reserveTransaction.object.useHoldStockByTransactionNumber === true)
|
|
220
|
+
? reserveTransaction.transactionNumber
|
|
221
|
+
: reserveTransaction.id
|
|
215
222
|
})(repos);
|
|
216
223
|
yield processUnlockOfferRateLimit({
|
|
217
224
|
reservation: {
|
|
218
|
-
reservationNumber:
|
|
225
|
+
reservationNumber: reserveTransaction.object.reservationNumber,
|
|
219
226
|
reservedTicket: cancelingSubReservation.reservedTicket
|
|
220
227
|
},
|
|
221
228
|
reservationFor
|
|
@@ -241,14 +248,16 @@ function cancelReservation(actionAttributesList) {
|
|
|
241
248
|
object: { reservations: { id: { $in: [reservation.id] } } }
|
|
242
249
|
});
|
|
243
250
|
const reserveTransaction = reserveTransactions.shift();
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
251
|
+
canceledReservationForId = reservation.reservationFor.id;
|
|
252
|
+
// holder:取引番号に対応(2023-06-05~)
|
|
253
|
+
const expectedHolder = ((reserveTransaction === null || reserveTransaction === void 0 ? void 0 : reserveTransaction.object.useHoldStockByTransactionNumber) === true)
|
|
254
|
+
? reserveTransaction.transactionNumber
|
|
255
|
+
: reserveTransaction === null || reserveTransaction === void 0 ? void 0 : reserveTransaction.id;
|
|
248
256
|
if (typeof expectedHolder === 'string') {
|
|
249
257
|
yield processUnlockSeat({
|
|
250
258
|
reservation: {
|
|
251
259
|
id: reservation.id,
|
|
260
|
+
project: { id: reservation.project.id },
|
|
252
261
|
reservedTicket: reservation.reservedTicket,
|
|
253
262
|
subReservation: reservation.subReservation,
|
|
254
263
|
reservationFor: {
|
|
@@ -297,7 +306,6 @@ function cancelReservation(actionAttributesList) {
|
|
|
297
306
|
// canceledReservationId: canceledReservation?.id
|
|
298
307
|
);
|
|
299
308
|
yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
|
|
300
|
-
// await onReservationCanceledByAction(actionAttributes)({ task: repos.task });
|
|
301
309
|
let canceledReservations = [];
|
|
302
310
|
if (actionAttributes.object.typeOf === factory.reservationType.ReservationPackage) {
|
|
303
311
|
const reservationNumber = actionAttributes.object.reservationNumber;
|
|
@@ -320,7 +328,10 @@ function cancelReservation(actionAttributesList) {
|
|
|
320
328
|
});
|
|
321
329
|
canceledReservations = [canceledReservation];
|
|
322
330
|
}
|
|
323
|
-
yield (0, onReservationCanceled_1.onReservationCanceled)(canceledReservations, true
|
|
331
|
+
yield (0, onReservationCanceled_1.onReservationCanceled)(canceledReservations, true, {
|
|
332
|
+
project: { id: actionAttributes.project.id },
|
|
333
|
+
id: canceledReservationForId
|
|
334
|
+
})({ task: repos.task });
|
|
324
335
|
})));
|
|
325
336
|
}
|
|
326
337
|
});
|
|
@@ -336,13 +347,16 @@ function processUnlockSeat(params) {
|
|
|
336
347
|
.toDate();
|
|
337
348
|
// 予約IDでロックされていれば解除
|
|
338
349
|
let lockKey = {
|
|
350
|
+
project: reservation.project,
|
|
339
351
|
eventId: reservation.reservationFor.id,
|
|
340
352
|
startDate: eventStartDate,
|
|
353
|
+
hasTicketedSeat: false,
|
|
341
354
|
offer: {
|
|
342
355
|
itemOffered: { serviceOutput: { id: reservation.id } },
|
|
343
356
|
seatNumber: '',
|
|
344
357
|
seatSection: ''
|
|
345
|
-
}
|
|
358
|
+
},
|
|
359
|
+
holder: params.expectedHolder
|
|
346
360
|
};
|
|
347
361
|
let holder = yield repos.stockHolder.getHolder(lockKey);
|
|
348
362
|
if (holder === params.expectedHolder) {
|
|
@@ -352,12 +366,15 @@ function processUnlockSeat(params) {
|
|
|
352
366
|
const ticketedSeat = reservation.reservedTicket.ticketedSeat;
|
|
353
367
|
if (ticketedSeat !== undefined) {
|
|
354
368
|
lockKey = {
|
|
369
|
+
project: reservation.project,
|
|
355
370
|
eventId: reservation.reservationFor.id,
|
|
356
371
|
startDate: eventStartDate,
|
|
372
|
+
hasTicketedSeat: true,
|
|
357
373
|
offer: {
|
|
358
374
|
seatNumber: ticketedSeat.seatNumber,
|
|
359
375
|
seatSection: ticketedSeat.seatSection
|
|
360
|
-
}
|
|
376
|
+
},
|
|
377
|
+
holder: params.expectedHolder
|
|
361
378
|
};
|
|
362
379
|
holder = yield repos.stockHolder.getHolder(lockKey);
|
|
363
380
|
if (holder === params.expectedHolder) {
|
|
@@ -373,12 +390,15 @@ function processUnlockSeat(params) {
|
|
|
373
390
|
const seatNumber4sub = (_d = (_c = subReservation.reservedTicket) === null || _c === void 0 ? void 0 : _c.ticketedSeat) === null || _d === void 0 ? void 0 : _d.seatNumber;
|
|
374
391
|
if (typeof seatSection4sub === 'string' && typeof seatNumber4sub === 'string') {
|
|
375
392
|
const lockKey4sub = {
|
|
393
|
+
project: reservation.project,
|
|
376
394
|
eventId: reservation.reservationFor.id,
|
|
377
395
|
startDate: eventStartDate,
|
|
396
|
+
hasTicketedSeat: true,
|
|
378
397
|
offer: {
|
|
379
398
|
seatNumber: seatNumber4sub,
|
|
380
399
|
seatSection: seatSection4sub
|
|
381
|
-
}
|
|
400
|
+
},
|
|
401
|
+
holder: params.expectedHolder
|
|
382
402
|
};
|
|
383
403
|
const holder4sub = yield repos.stockHolder.getHolder(lockKey4sub);
|
|
384
404
|
if (holder4sub === params.expectedHolder) {
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*/
|
|
1
|
+
import { MongoRepository as ActionRepo } from '../../repo/action';
|
|
2
|
+
import { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransaction';
|
|
4
3
|
import { MongoRepository as ReservationRepo } from '../../repo/reservation';
|
|
5
4
|
import { MongoRepository as TaskRepo } from '../../repo/task';
|
|
6
|
-
|
|
5
|
+
interface ICheckInReservationParams {
|
|
7
6
|
project: {
|
|
8
7
|
id: string;
|
|
9
8
|
};
|
|
@@ -23,7 +22,13 @@ export declare function checkInRerservation(params: {
|
|
|
23
22
|
ids?: string[];
|
|
24
23
|
};
|
|
25
24
|
};
|
|
25
|
+
}
|
|
26
|
+
export declare function checkInReservation(params: ICheckInReservationParams & {
|
|
27
|
+
reserveIfNotYet: boolean;
|
|
26
28
|
}): (repos: {
|
|
29
|
+
action: ActionRepo;
|
|
30
|
+
assetTransaction: AssetTransactionRepo;
|
|
27
31
|
reservation: ReservationRepo;
|
|
28
32
|
task: TaskRepo;
|
|
29
33
|
}) => Promise<void>;
|
|
34
|
+
export {};
|
|
@@ -9,18 +9,43 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.checkInReservation = void 0;
|
|
13
|
+
const createDebug = require("debug");
|
|
14
|
+
const factory = require("../../factory");
|
|
15
|
+
const confirmReservation_1 = require("./confirmReservation");
|
|
13
16
|
const onReservationCheckedIn_1 = require("./potentialActions/onReservationCheckedIn");
|
|
14
|
-
|
|
17
|
+
const debug = createDebug('chevre-domain:service:reserve:checkInReservation');
|
|
18
|
+
function checkInReservation(params) {
|
|
15
19
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
16
20
|
const now = new Date();
|
|
21
|
+
// confirmReservationが間に合わない可能性を考慮する(2023-06-01~)
|
|
22
|
+
debug('reserveIfNotYet?', params.reserveIfNotYet, 'ids:', params.object.ids, 'reservationNumbers:', params.object.reservationNumbers);
|
|
23
|
+
if (params.reserveIfNotYet === true) {
|
|
24
|
+
yield reserveIfNotYet(params)(repos);
|
|
25
|
+
}
|
|
17
26
|
// 発券処理(Array対応)
|
|
18
27
|
let checkedInReservationIds;
|
|
19
28
|
if (Array.isArray(params.object.ids) && params.object.ids.length > 0) {
|
|
29
|
+
const existingReservationCount = yield repos.reservation.count({
|
|
30
|
+
id: { $in: params.object.ids },
|
|
31
|
+
typeOf: factory.reservationType.EventReservation
|
|
32
|
+
});
|
|
33
|
+
if (existingReservationCount !== params.object.ids.length) {
|
|
34
|
+
throw new factory.errors.NotFound(factory.reservationType.EventReservation, `Some reservations dot not exist. ${params.object.ids.join(',')}`);
|
|
35
|
+
}
|
|
20
36
|
yield repos.reservation.checkInIfNot({ id: { $in: params.object.ids }, now });
|
|
21
37
|
checkedInReservationIds = params.object.ids;
|
|
22
38
|
}
|
|
23
39
|
if (Array.isArray(params.object.reservationNumbers) && params.object.reservationNumbers.length > 0) {
|
|
40
|
+
for (const reservationNumber of params.object.reservationNumbers) {
|
|
41
|
+
const existingReservationCount = yield repos.reservation.count({
|
|
42
|
+
reservationNumber: { $eq: reservationNumber },
|
|
43
|
+
typeOf: factory.reservationType.EventReservation
|
|
44
|
+
});
|
|
45
|
+
if (existingReservationCount === 0) {
|
|
46
|
+
throw new factory.errors.NotFound(factory.reservationType.EventReservation, `Some reservations dot not exist. ${params.object.reservationNumbers.join(',')}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
24
49
|
yield repos.reservation.checkInIfNot({ reservationNumber: { $in: params.object.reservationNumbers }, now });
|
|
25
50
|
// 予約番号リストを予約IDリストに変換
|
|
26
51
|
checkedInReservationIds = yield repos.reservation.searchIdsByReservationNumber({
|
|
@@ -37,4 +62,53 @@ function checkInRerservation(params) {
|
|
|
37
62
|
})({ task: repos.task });
|
|
38
63
|
});
|
|
39
64
|
}
|
|
40
|
-
exports.
|
|
65
|
+
exports.checkInReservation = checkInReservation;
|
|
66
|
+
function reserveIfNotYet(params) {
|
|
67
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
let reserveTransactions = [];
|
|
69
|
+
if (Array.isArray(params.object.ids) && params.object.ids.length > 0) {
|
|
70
|
+
reserveTransactions = yield repos.assetTransaction.search({
|
|
71
|
+
typeOf: factory.assetTransactionType.Reserve,
|
|
72
|
+
object: {
|
|
73
|
+
reservations: { id: { $in: params.object.ids } }
|
|
74
|
+
},
|
|
75
|
+
statuses: [factory.transactionStatusType.Confirmed]
|
|
76
|
+
}, ['_id', 'transactionNumber', 'object', 'project', 'typeOf']);
|
|
77
|
+
debug(reserveTransactions.length, 'reserveTransactions found in reserveIfNotYet. ids:', params.object.ids);
|
|
78
|
+
}
|
|
79
|
+
if (Array.isArray(params.object.reservationNumbers) && params.object.reservationNumbers.length > 0) {
|
|
80
|
+
reserveTransactions = yield repos.assetTransaction.search({
|
|
81
|
+
typeOf: factory.assetTransactionType.Reserve,
|
|
82
|
+
object: {
|
|
83
|
+
reservationNumber: { $in: params.object.reservationNumbers }
|
|
84
|
+
},
|
|
85
|
+
statuses: [factory.transactionStatusType.Confirmed]
|
|
86
|
+
}, ['_id', 'transactionNumber', 'object', 'project', 'typeOf']);
|
|
87
|
+
debug(reserveTransactions.length, 'reserveTransactions found in reserveIfNotYet. reservationNumbers:', params.object.reservationNumbers);
|
|
88
|
+
}
|
|
89
|
+
yield Promise.all(reserveTransactions.map((reserveTransaction) => __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
var _a;
|
|
91
|
+
if (typeof ((_a = reserveTransaction.object.reservationFor) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') {
|
|
92
|
+
yield (0, confirmReservation_1.confirmReservation)({
|
|
93
|
+
actionAttributesList: [{
|
|
94
|
+
project: reserveTransaction.project,
|
|
95
|
+
typeOf: factory.actionType.ReserveAction,
|
|
96
|
+
object: {
|
|
97
|
+
typeOf: reserveTransaction.object.typeOf,
|
|
98
|
+
reservationNumber: reserveTransaction.object.reservationNumber,
|
|
99
|
+
reservationStatus: (typeof reserveTransaction.object.reservationStatus === 'string')
|
|
100
|
+
? reserveTransaction.object.reservationStatus
|
|
101
|
+
: factory.reservationStatusType.ReservationPending,
|
|
102
|
+
reservationFor: reserveTransaction.object.reservationFor
|
|
103
|
+
},
|
|
104
|
+
agent: reserveTransaction.project,
|
|
105
|
+
purpose: { typeOf: reserveTransaction.typeOf, id: reserveTransaction.id }
|
|
106
|
+
}],
|
|
107
|
+
useOnReservationConfirmed: false,
|
|
108
|
+
byTask: false
|
|
109
|
+
})(repos);
|
|
110
|
+
debug('confirmReservation processed in reserveIfNotYet. reservationNumber:', reserveTransaction.object.reservationNumber);
|
|
111
|
+
}
|
|
112
|
+
})));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 予約サービス
|
|
3
|
-
*/
|
|
4
1
|
import * as factory from '../../factory';
|
|
5
2
|
import { MongoRepository as ActionRepo } from '../../repo/action';
|
|
3
|
+
import { MongoRepository as AssetTrasactionRepo } from '../../repo/assetTransaction';
|
|
6
4
|
import { MongoRepository as ReservationRepo } from '../../repo/reservation';
|
|
7
5
|
import { MongoRepository as TaskRepo } from '../../repo/task';
|
|
8
6
|
/**
|
|
9
7
|
* 予約を確定する
|
|
10
8
|
*/
|
|
11
|
-
export declare function confirmReservation(
|
|
9
|
+
export declare function confirmReservation(params: {
|
|
10
|
+
actionAttributesList: factory.action.reserve.IAttributes[];
|
|
11
|
+
useOnReservationConfirmed: boolean;
|
|
12
|
+
byTask: boolean;
|
|
13
|
+
}): (repos: {
|
|
12
14
|
action: ActionRepo;
|
|
15
|
+
assetTransaction: AssetTrasactionRepo;
|
|
13
16
|
reservation: ReservationRepo;
|
|
14
17
|
task: TaskRepo;
|
|
15
18
|
}) => Promise<void>;
|