UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

102 lines (101 loc) 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMoneyTransferActionAttributes = createMoneyTransferActionAttributes; /** * 取引ファクトリー */ const factory = require("../../factory"); /** * 転送アクション属性作成 */ function createMoneyTransferActionAttributes(params) { const transaction = params.transaction; let fromLocation = { typeOf: transaction.agent.typeOf, name: transaction.agent.name }; let toLocation = { typeOf: transaction.recipient.typeOf, name: transaction.recipient.name }; switch (transaction.typeOf) { case factory.account.transactionType.Deposit: toLocation = { typeOf: transaction.object.toLocation.typeOf, // 廃止(2023-02-16~) // accountType: transaction.object.toLocation.accountType, accountNumber: transaction.object.toLocation.accountNumber, name: transaction.recipient.name }; break; case factory.account.transactionType.Transfer: fromLocation = { typeOf: transaction.object.fromLocation.typeOf, // 廃止(2023-02-16~) // accountType: transaction.object.fromLocation.accountType, accountNumber: transaction.object.fromLocation.accountNumber, name: transaction.agent.name }; toLocation = { typeOf: transaction.object.toLocation.typeOf, // 廃止(2023-02-16~) // accountType: transaction.object.toLocation.accountType, accountNumber: transaction.object.toLocation.accountNumber, name: transaction.recipient.name }; break; case factory.account.transactionType.Withdraw: fromLocation = { typeOf: transaction.object.fromLocation.typeOf, // 廃止(2023-02-16~) // accountType: transaction.object.fromLocation.accountType, accountNumber: transaction.object.fromLocation.accountNumber, name: transaction.agent.name }; break; default: } // let accountType: string; // const transactionType = params.transaction.typeOf; // switch (transactionType) { // case factory.account.transactionType.Deposit: // accountType = params.transaction.object.toLocation.accountType; // break; // case factory.account.transactionType.Transfer: // accountType = params.transaction.object.fromLocation.accountType; // break; // case factory.account.transactionType.Withdraw: // accountType = params.transaction.object.fromLocation.accountType; // break; // default: // throw new factory.errors.NotImplemented(`transaction type ${transactionType} not implemented`); // } const purpose = { typeOf: transaction.typeOf, id: transaction.id, transactionNumber: transaction.transactionNumber // ...(typeof transaction.identifier === 'string') // ? { identifier: transaction.identifier } // : /* istanbul ignore next */ undefined }; return { project: transaction.project, typeOf: factory.actionType.MoneyTransfer, // identifier: `${factory.actionType.MoneyTransfer}-${transaction.typeOf}-${transaction.id}`, description: transaction.object.description, // object: {}, agent: transaction.agent, recipient: transaction.recipient, amount: { typeOf: 'MonetaryAmount', // 廃止(2023-02-16~) // currency: accountType, value: (typeof transaction.object.amount === 'number') ? transaction.object.amount : transaction.object.amount.value }, fromLocation: fromLocation, toLocation: toLocation, purpose }; }