UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

92 lines (91 loc) 4.6 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.confirm = confirm; const factory = require("../../../factory"); const confirmReservation_1 = require("../../reserve/confirmReservation"); const factory_1 = require("./confirm/factory"); /** * 取引確定 */ function confirm(params) { return (repos // settings: Settings ) => __awaiter(this, void 0, void 0, function* () { let transaction; // 取引存在確認 if (typeof params.id === 'string') { transaction = yield repos.assetTransaction.findById({ typeOf: factory.assetTransactionType.Reserve, id: params.id }, ['project', 'transactionNumber'] // projection(2024-07-01~) ); } else if (typeof params.transactionNumber === 'string') { transaction = yield repos.assetTransaction.findByTransactionNumber({ typeOf: factory.assetTransactionType.Reserve, transactionNumber: params.transactionNumber }, ['project', 'transactionNumber'] // projection(2024-07-01~) ); } else { throw new factory.errors.ArgumentNull('Transaction ID or Transaction Number'); } const order = yield fixOrderAsPurpose(params, transaction)(repos); const { potentialActions, underName } = (0, factory_1.createPotentialActions)({ // ...params, // transaction, order }); // 取引確定 const result = {}; yield repos.assetTransaction.confirm(Object.assign({ typeOf: factory.assetTransactionType.Reserve, id: transaction.id, result: result, // potentialActions: (USE_ASSET_TRANSACTION_SYNC_PROCESSING) // ? { reserve: [] } // : potentialActions, // discontinue(2024-07-01~) potentialActions }, (typeof (underName === null || underName === void 0 ? void 0 : underName.typeOf) === 'string') ? { object: { underName } } : undefined)); // sync対応(2023-01-13~) yield (0, confirmReservation_1.confirmReservation)({ // optimize(2024-07-01~) // actionAttributesList: potentialActions.reserve, potentialReserveAction: { object: { reservationNumber: transaction.transactionNumber } }, useOnReservationConfirmed: true, byTask: true })(repos); }); } function fixOrderAsPurpose(params, transaction) { return (repos) => __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d, _e, _f; let order; const payPurposeConfirmationNumber = (_c = (_b = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.reserve) === null || _b === void 0 ? void 0 : _b.purpose) === null || _c === void 0 ? void 0 : _c.confirmationNumber; const payPurposeOrderNumber = (_f = (_e = (_d = params.potentialActions) === null || _d === void 0 ? void 0 : _d.reserve) === null || _e === void 0 ? void 0 : _e.purpose) === null || _f === void 0 ? void 0 : _f.orderNumber; if (typeof payPurposeConfirmationNumber === 'string' && payPurposeConfirmationNumber.length > 0 && typeof payPurposeOrderNumber === 'string' && payPurposeOrderNumber.length > 0) { const orders = yield repos.order.projectFields({ limit: 1, page: 1, project: { id: { $eq: transaction.project.id } }, confirmationNumbers: [payPurposeConfirmationNumber], orderNumbers: [payPurposeOrderNumber] }, { inclusion: ['customer', 'orderNumber', 'typeOf'] }); order = orders.shift(); if (order === undefined) { throw new factory.errors.NotFound('Order as purpose'); } } return order; }); }