UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

95 lines (94 loc) 5.14 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.confirmPayTransaction = confirmPayTransaction; const factory = require("../../factory"); const PayTransactionService = require("../assetTransaction/pay"); function confirmPayTransaction(data, options) { return (repos) => __awaiter(this, void 0, void 0, function* () { var _a, _b; // アクション開始 const action = yield repos.action.start(data); try { for (const confirmingTransaction of data.object) { yield PayTransactionService.confirm(Object.assign({ transactionNumber: confirmingTransaction.transactionNumber, potentialActions: { pay: { purpose: { typeOf: data.purpose.typeOf, confirmationNumber: data.purpose.confirmationNumber, orderNumber: data.purpose.orderNumber } } }, options }, (typeof ((_b = (_a = confirmingTransaction.object) === null || _a === void 0 ? void 0 : _a.paymentMethod) === null || _b === void 0 ? void 0 : _b.identifier) === 'string') ? { object: { paymentMethod: { identifier: confirmingTransaction.object.paymentMethod.identifier } } } : undefined))({ acceptedOffer: repos.acceptedOffer, action: repos.action, accountingReport: repos.accountingReport, assetTransaction: repos.assetTransaction, event: repos.event, order: repos.order, // project: repos.project, task: repos.task }); } } catch (error) { try { yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error }); } catch (__) { // 失敗したら仕方ない } throw error; } // アクション完了 const actionResult = {}; yield repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: actionResult }); // processOrder連携(2023-08-23~) yield onConfirmed(data)({ task: repos.task }); }); } function onConfirmed(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { var _a, _b; if (params.processOrder === true) { for (const confirmingTransaction of params.object) { // タスク冪等作成 const onAssetTransactionStatusChangedTaskData = { project: { id: params.project.id, typeOf: factory.organizationType.Project }, object: Object.assign({ typeOf: factory.assetTransactionType.Pay, transactionNumber: confirmingTransaction.transactionNumber, status: factory.transactionStatusType.Confirmed }, (typeof ((_b = (_a = confirmingTransaction.object) === null || _a === void 0 ? void 0 : _a.paymentMethod) === null || _b === void 0 ? void 0 : _b.identifier) === 'string') ? { object: { paymentMethod: { identifier: confirmingTransaction.object.paymentMethod.identifier } } } : undefined), purpose: { confirmationNumber: params.purpose.confirmationNumber, orderNumber: params.purpose.orderNumber, typeOf: factory.order.OrderType.Order }, useOnOrderStatusChanged: params.useOnOrderStatusChanged === true }; const onAssetTransactionStatusChangedTask = { project: { id: params.project.id, typeOf: factory.organizationType.Project }, name: factory.taskName.OnAssetTransactionStatusChanged, status: factory.taskStatus.Ready, runsAt: new Date(), remainingNumberOfTries: 10, numberOfTried: 0, executionResults: [], data: onAssetTransactionStatusChangedTaskData }; yield repos.task.createOnAssetTransactionStatusChangedTaskIfNotExist(onAssetTransactionStatusChangedTask, { emitImmediately: true }); } } }); }