UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

85 lines (84 loc) 3.98 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.onPaymentStatusChanged = onPaymentStatusChanged; const factory = require("../../../factory"); const onPaid_1 = require("./onPaymentStatusChanged/onPaid"); const onRefunded_1 = require("./onPaymentStatusChanged/onRefunded"); /** * 決済ステータス変更イベント */ function onPaymentStatusChanged(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { // アクションリポジトリから実アクションを参照する // そうすることで、通知する情報は最低限で済む const action = yield repos.action.findById({ id: params.id, typeOf: params.typeOf }); const optimizedAction = optimizeAction4report(action); switch (optimizedAction.typeOf) { case factory.actionType.PayAction: yield (0, onPaid_1.onPaid)(optimizedAction, { id: action.project.id })(repos); break; case factory.actionType.RefundAction: yield (0, onRefunded_1.onRefunded)(optimizedAction, { id: action.project.id })(repos); break; default: // no op } }); } /** * 経理レポート連携対象としてのアクションを最適化 */ function optimizeAction4report(action) { let optimizedAction; // 現時点で経理レポートで使用されているのは、typeOf,object,purpose,startDate const actionTypeOf = action.typeOf; switch (actionTypeOf) { case factory.actionType.PayAction: const optimizedPayActionObject = action.object.map((o) => { return { id: o.id, paymentMethod: o.paymentMethod, typeOf: o.typeOf }; }); const optimizedPayAction = { actionStatus: action.actionStatus, endDate: action.endDate, id: action.id, object: optimizedPayActionObject, // 最適化(2023-06-30~) // project: action.project, purpose: action.purpose, startDate: action.startDate, typeOf: action.typeOf }; optimizedAction = optimizedPayAction; break; case factory.actionType.RefundAction: const optimizedRefundActionObject = action.object.map((o) => { return { id: o.id, paymentMethod: o.paymentMethod, typeOf: o.typeOf }; }); const optimizedRefundAction = Object.assign({ actionStatus: action.actionStatus, endDate: action.endDate, id: action.id, object: optimizedRefundActionObject, // 最適化(2023-06-30~) // project: action.project, purpose: action.purpose, startDate: action.startDate, typeOf: action.typeOf }, (action.error !== undefined) ? { error: action.error } : undefined); optimizedAction = optimizedRefundAction; break; default: throw new factory.errors.NotImplemented(`action type '${actionTypeOf}' not implemented`); } return optimizedAction; }