@chevre/domain
Version:
Chevre Domain Library for Node.js
107 lines (106 loc) • 5.03 kB
JavaScript
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 });
});
}
;