@chevre/domain
Version:
Chevre Domain Library for Node.js
90 lines (89 loc) • 4.36 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.call = call;
const factory = require("../../factory");
const acceptedOffer_1 = require("../../repo/acceptedOffer");
const action_1 = require("../../repo/action");
const assetTransaction_1 = require("../../repo/assetTransaction");
const authorization_1 = require("../../repo/authorization");
const order_1 = require("../../repo/order");
const ownershipInfo_1 = require("../../repo/ownershipInfo");
const reservation_1 = require("../../repo/reservation");
const setting_1 = require("../../repo/setting");
const task_1 = require("../../repo/task");
const reserve_1 = require("../reserve");
/**
* タスク実行関数
*/
function call(params) {
return (_a) => __awaiter(this, [_a], void 0, function* ({ connection }) {
yield onAuthorizationCreated(params)({
acceptedOffer: new acceptedOffer_1.AcceptedOfferRepo(connection),
action: new action_1.ActionRepo(connection),
assetTransaction: new assetTransaction_1.AssetTransactionRepo(connection),
code: new authorization_1.AuthorizationRepo(connection),
order: new order_1.OrderRepo(connection),
ownershipInfo: new ownershipInfo_1.OwnershipInfoRepo(connection),
reservation: new reservation_1.ReservationRepo(connection),
setting: new setting_1.SettingRepo(connection),
task: new task_1.TaskRepo(connection)
});
});
}
// tslint:disable-next-line:max-func-body-length
function onAuthorizationCreated(params) {
return (repos) => __awaiter(this, void 0, void 0, function* () {
// 発券対象予約ID
let reservationIds = [];
// 発券対象予約番号
let reservationNumbers = [];
let orderNumber;
const authorization = yield repos.code.findValidOneByCode({
code: params.data.code,
project: { id: params.project.id }
});
switch (authorization.object.typeOf) {
case factory.order.OrderType.Order:
// 注文検索
orderNumber = authorization.object.orderNumber;
if (typeof orderNumber === 'string' && orderNumber.length > 0) {
reservationNumbers = yield repos.acceptedOffer.distinctValues({
orderNumber: { $in: [orderNumber] }
}, 'acceptedOffers.itemOffered.reservationNumber');
// reservationForIds = await repos.acceptedOffer.distinctValues(
// {
// orderNumber: { $in: [orderNumber] }
// },
// 'acceptedOffers.itemOffered.reservationFor.id'
// );
}
break;
case 'OwnershipInfo':
// 所有権に対する承認はいったん廃止したので、所有権のケースは処理不要(2024-08-21~)
reservationIds = [];
break;
default:
// no op
}
yield (0, reserve_1.checkInReservation)({
project: { id: params.project.id },
object: {
ids: reservationIds,
reservationNumbers: reservationNumbers
// reservationFor: { ids: reservationForIds }
},
purpose: { code: params.data.code },
instrument: Object.assign({}, (typeof orderNumber === 'string') ? { orderNumber } : undefined),
options: { retryOnReservationNotFound: params.data.retryOnReservationNotFound === true } // add(2025-03-15~)
})(repos);
});
}
;