UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

78 lines (77 loc) 3.91 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.settleTransaction = settleTransaction; const factory = require("../../../factory"); const MoneyTransferAssetTransactionService = require("../../assetTransaction/moneyTransfer"); function settleTransaction(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { const action = yield repos.action.start(params); try { // 廃止(2024-01-30~) // if (typeof params.object.pendingTransaction.id === 'string' && params.object.pendingTransaction.id.length > 0) { // await MoneyTransferAssetTransactionService.confirm({ id: params.object.pendingTransaction.id })(repos); // } if (typeof params.object.transactionNumber === 'string' && params.object.transactionNumber.length > 0) { yield MoneyTransferAssetTransactionService.confirm({ transactionNumber: params.object.transactionNumber })(repos); } else { throw new factory.errors.ArgumentNull('object.transactionNumber'); } } catch (error) { try { yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error }); } catch (__) { // no op } throw error; } const actionResult = {}; yield repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: actionResult }); yield onConfirmed(params)({ task: repos.task }); }); } function onConfirmed(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { if (params.purpose.typeOf === factory.order.OrderType.Order) { // タスク冪等作成 const onAssetTransactionStatusChangedTaskData = { project: { id: params.project.id, typeOf: factory.organizationType.Project }, object: { typeOf: params.object.typeOf, transactionNumber: params.object.transactionNumber, status: factory.transactionStatusType.Confirmed }, purpose: { confirmationNumber: '', // OnAssetTransactionStatusChanged処理内で使用されないので空文字でok orderNumber: params.purpose.orderNumber, typeOf: factory.order.OrderType.Order }, 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 }); } }); }