@chevre/domain
Version:
Chevre Domain Library for Node.js
86 lines (85 loc) • 5.99 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.NUM_TRY_INFORM_RESERVATION = void 0;
exports.optimizeUnderName4inform = optimizeUnderName4inform;
exports.createMoneyTransferActions = createMoneyTransferActions;
exports.createCancelPendingReservationAction = createCancelPendingReservationAction;
const factory = require("../../factory");
function optimizeUnderName4inform(params) {
return { id: params.underName.id, typeOf: params.underName.typeOf };
}
exports.NUM_TRY_INFORM_RESERVATION = 10;
function createMoneyTransferActions(params) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
const pointAward = (_b = (_a = params.acceptedOffer) === null || _a === void 0 ? void 0 : _a.itemOffered) === null || _b === void 0 ? void 0 : _b.pointAward;
const moneyTransfer = [];
// ポイント特典があれば適用
const pointAwardToLocationIdentifier = (_c = pointAward === null || pointAward === void 0 ? void 0 : pointAward.toLocation) === null || _c === void 0 ? void 0 : _c.identifier;
const pointAwardToLocationTypeOf = (_d = pointAward === null || pointAward === void 0 ? void 0 : pointAward.toLocation) === null || _d === void 0 ? void 0 : _d.typeOf;
if (typeof ((_e = pointAward === null || pointAward === void 0 ? void 0 : pointAward.amount) === null || _e === void 0 ? void 0 : _e.value) === 'number'
&& typeof pointAwardToLocationIdentifier === 'string'
&& typeof pointAwardToLocationTypeOf === 'string') {
const fromLocation = {
typeOf: (typeof ((_f = params.reservation.reservedTicket.issuedBy) === null || _f === void 0 ? void 0 : _f.typeOf) === 'string')
? params.reservation.reservedTicket.issuedBy.typeOf
: params.transaction.typeOf,
name: (typeof ((_g = params.reservation.reservedTicket.issuedBy) === null || _g === void 0 ? void 0 : _g.name) === 'string')
? params.reservation.reservedTicket.issuedBy.name
: params.transaction.id
};
const toLocation = {
identifier: pointAwardToLocationIdentifier,
typeOf: factory.permit.PermitType.Permit,
issuedThrough: { id: String((_j = (_h = pointAward.toLocation) === null || _h === void 0 ? void 0 : _h.issuedThrough) === null || _j === void 0 ? void 0 : _j.id) }
};
const recipient = {
typeOf: (typeof ((_k = params.underName) === null || _k === void 0 ? void 0 : _k.typeOf) === 'string')
? (_l = params.underName) === null || _l === void 0 ? void 0 : _l.typeOf
: factory.personType.Person,
id: (typeof ((_m = params.underName) === null || _m === void 0 ? void 0 : _m.id) === 'string')
? (_o = params.underName) === null || _o === void 0 ? void 0 : _o.id
: '',
name: String((_p = params.underName) === null || _p === void 0 ? void 0 : _p.name)
};
moneyTransfer.push(Object.assign(Object.assign({ project: params.transaction.project, typeOf: factory.actionType.MoneyTransfer, agent: params.transaction.project, recipient, object: {
typeOf: factory.account.transactionType.Deposit
}, purpose: Object.assign({ typeOf: params.transaction.typeOf, id: params.transaction.id }, (typeof ((_q = pointAward.purpose) === null || _q === void 0 ? void 0 : _q.identifier) === 'string') ? { identifier: pointAward.purpose.identifier } : undefined), amount: {
typeOf: 'MonetaryAmount',
value: (_r = pointAward.amount) === null || _r === void 0 ? void 0 : _r.value,
currency: (_s = pointAward.amount) === null || _s === void 0 ? void 0 : _s.currency
}, fromLocation: fromLocation, toLocation: toLocation }, (typeof pointAward.description === 'string') ? { description: pointAward.description } : undefined), (pointAward.recipient !== undefined) ? { recipient: pointAward.recipient } : undefined));
}
return moneyTransfer;
}
function createCancelPendingReservationAction(params) {
const transaction = params.transaction;
const pendingReservations = (Array.isArray(transaction.object.subReservation)) ? transaction.object.subReservation : [];
let cancelActionAttributes;
if (pendingReservations.length > 0) {
const reservationFor = transaction.object.reservationFor;
if (reservationFor === undefined) {
throw new factory.errors.NotFound('transaction.object.reservationFor');
}
// ReservationPackageに対応(2022-12-23~)
const reservationPackage = {
typeOf: factory.reservationType.ReservationPackage,
reservationNumber: transaction.transactionNumber,
reservationFor: { typeOf: reservationFor.typeOf, id: String(reservationFor.id) },
reservationStatus: (typeof params.transaction.object.reservationStatus === 'string')
? params.transaction.object.reservationStatus
: factory.reservationStatusType.ReservationPending
};
let placeOrderAsInstrument;
if (Array.isArray(params.transaction.instrument)) {
for (const eachInstrument of params.transaction.instrument) {
if (eachInstrument.typeOf === factory.transactionType.PlaceOrder && typeof eachInstrument.id === 'string') {
placeOrderAsInstrument = { id: eachInstrument.id, typeOf: factory.transactionType.PlaceOrder };
break;
}
}
}
cancelActionAttributes = Object.assign({ project: transaction.project, typeOf: factory.actionType.CancelAction, purpose: { typeOf: transaction.typeOf, id: transaction.id }, agent: transaction.project, object: reservationPackage }, (placeOrderAsInstrument !== undefined) ? { instrument: [placeOrderAsInstrument] } : undefined // add about(2025-02-19~)
);
}
return cancelActionAttributes;
}
;