UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

107 lines (106 loc) 5.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTasks = createTasks; const moment = require("moment"); const factory = require("../../../../factory"); // import { Settings } from '../../../../settings'; /** * 取引のタスクを作成する */ // tslint:disable-next-line:max-func-body-length function createTasks(params, setting // settings: Settings ) { var _a, _b; const taskAttributes = []; const transaction = params.transaction; const taskRunsAt = params.runsAt; const confirmedStoragePeriodInDays = (_a = setting === null || setting === void 0 ? void 0 : setting.storage) === null || _a === void 0 ? void 0 : _a.transactionConfirmedInDays; const canceledStoragePeriodInDays = (_b = setting === null || setting === void 0 ? void 0 : setting.storage) === null || _b === void 0 ? void 0 : _b.transactionCanceledInDays; if (typeof confirmedStoragePeriodInDays !== 'number') { throw new factory.errors.NotFound('setting.storage.confirmedStoragePeriodInDays'); } if (typeof canceledStoragePeriodInDays !== 'number') { throw new factory.errors.NotFound('setting.storage.canceledStoragePeriodInDays'); } // 取引削除タスクを作成(取引ステータスによってrunsAtを調整) // let deleteAt = moment(transaction.endDate) // .add(settings.transaction.confirmedStoragePeriodInDays, 'days') // .toDate(); let deleteAt = moment(transaction.endDate) .add(confirmedStoragePeriodInDays, 'days') .toDate(); switch (transaction.status) { case factory.transactionStatusType.Confirmed: break; case factory.transactionStatusType.Canceled: case factory.transactionStatusType.Expired: // deleteAt = moment(transaction.endDate) // .add(settings.transaction.canceledStoragePeriodInDays, 'days') // .toDate(); deleteAt = moment(transaction.endDate) .add(canceledStoragePeriodInDays, 'days') .toDate(); break; default: } const deleteTransactionTask = { project: transaction.project, name: factory.taskName.DeleteTransaction, status: factory.taskStatus.Ready, runsAt: deleteAt, remainingNumberOfTries: 3, numberOfTried: 0, executionResults: [], data: { object: Object.assign({ specifyingMethod: factory.task.deleteTransaction.SpecifyingMethod.Id, id: transaction.id, object: Object.assign({}, (transaction.object.pendingTransaction !== undefined) ? { pendingTransaction: transaction.object.pendingTransaction } : undefined), project: transaction.project, startDate: transaction.startDate, typeOf: transaction.typeOf }, (transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined) } }; taskAttributes.push(deleteTransactionTask); switch (transaction.status) { case factory.transactionStatusType.Confirmed: // tslint:disable-next-line:no-single-line-block-comment /* istanbul ignore else */ if (transaction.potentialActions !== undefined) { // tslint:disable-next-line:no-single-line-block-comment /* istanbul ignore else */ if (transaction.potentialActions.moneyTransfer !== undefined) { taskAttributes.push(...transaction.potentialActions.moneyTransfer.map((a) => { return { project: transaction.project, name: factory.taskName.ConfirmMoneyTransfer, status: factory.taskStatus.Ready, runsAt: taskRunsAt, remainingNumberOfTries: 10, numberOfTried: 0, executionResults: [], data: a }; })); } } break; case factory.transactionStatusType.Canceled: case factory.transactionStatusType.Expired: const voidMoneyTransferTaskAttributes = { project: { typeOf: transaction.project.typeOf, id: transaction.project.id }, name: factory.taskName.VoidMoneyTransferTransaction, status: factory.taskStatus.Ready, runsAt: taskRunsAt, remainingNumberOfTries: 10, numberOfTried: 0, executionResults: [], data: { project: { typeOf: transaction.project.typeOf, id: transaction.project.id }, purpose: { typeOf: transaction.typeOf, id: transaction.id } } }; taskAttributes.push(voidMoneyTransferTaskAttributes); break; default: throw new factory.errors.NotImplemented(`Transaction status "${transaction.status}" not implemented.`); } return taskAttributes; }