UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

107 lines (106 loc) 5.03 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.startAndConfirm = exports.start = void 0; exports.confirm = confirm; exports.exportTasksById = exportTasksById; /** * 予約取消取引サービス */ const factory = require("../../factory"); const factory_1 = require("./cancelReservation/factory"); const start_1 = require("./cancelReservation/start"); Object.defineProperty(exports, "start", { enumerable: true, get: function () { return start_1.start; } }); const startAndConfirm_1 = require("./cancelReservation/startAndConfirm"); Object.defineProperty(exports, "startAndConfirm", { enumerable: true, get: function () { return startAndConfirm_1.startAndConfirm; } }); /** * 取引確定 */ function confirm(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { // 取引存在確認 const transaction = yield repos.assetTransaction.findById({ typeOf: factory.assetTransactionType.CancelReservation, id: params.id }); const potentialActions = (0, factory_1.createPotentialActions)({ transaction: transaction // confirmParams: params }); // 取引確定 const result = {}; yield repos.assetTransaction.confirm({ typeOf: factory.assetTransactionType.CancelReservation, id: transaction.id, result: result, potentialActions: potentialActions }); }); } /** * 取引タスク出力 */ function exportTasksById(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { const transaction = yield repos.assetTransaction.findById({ typeOf: factory.assetTransactionType.CancelReservation, id: params.id }); const potentialActions = transaction.potentialActions; const taskAttributes = []; switch (transaction.status) { case factory.transactionStatusType.Confirmed: // tslint:disable-next-line:no-single-line-block-comment /* istanbul ignore else */ if (potentialActions !== undefined) { // tslint:disable-next-line:no-single-line-block-comment /* istanbul ignore else */ if (potentialActions.cancelReservation !== undefined) { const cancelReservationTasks = potentialActions.cancelReservation.map((a) => { return { project: transaction.project, name: factory.taskName.CancelReservation, status: factory.taskStatus.Ready, runsAt: new Date(), // なるはやで実行 remainingNumberOfTries: 10, numberOfTried: 0, executionResults: [], data: { actionAttributes: [a] } }; }); taskAttributes.push(...cancelReservationTasks); } } break; case factory.transactionStatusType.Canceled: case factory.transactionStatusType.Expired: // const cancelMoneyTransferTask: factory.task.cancelMoneyTransfer.IAttributes = { // name: factory.taskName.CancelMoneyTransfer, // status: factory.taskStatus.Ready, // runsAt: new Date(), // なるはやで実行 // remainingNumberOfTries: 10, // lastTriedAt: null, // numberOfTried: 0, // executionResults: [], // data: { // transaction: { typeOf: transaction.typeOf, id: transaction.id } // } // }; // taskAttributes.push(cancelMoneyTransferTask); break; default: throw new factory.errors.NotImplemented(`Transaction status "${transaction.status}" not implemented.`); } return repos.task.saveMany(taskAttributes, { emitImmediately: true }); }); }