UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

90 lines (89 loc) 4.36 kB
"use strict"; 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); }); }