@chevre/domain
Version:
Chevre Domain Library for Node.js
85 lines (84 loc) • 3.98 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.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;
}
;