@chevre/domain
Version:
Chevre Domain Library for Node.js
100 lines (99 loc) • 5 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.coaTicket2offer = coaTicket2offer;
const COA = require("@motionpicture/coa-service");
const util_1 = require("util");
const factory = require("../../../../factory");
// tslint:disable-next-line:max-func-body-length
function coaTicket2offer(params) {
// discontinue eligibleMonetaryAmount(2025-01-03~)
// 適用通貨区分
// const eligibleMonetaryAmount: [factory.offer.IEligibleMonetaryAmount] | undefined
// = (typeof params.ticketResult.usePoint === 'number' && params.ticketResult.usePoint > 0
// && typeof params.defaultCurrencyType?.typeOf === 'string')
// ? [{
// typeOf: 'MonetaryAmount',
// currency: params.defaultCurrencyType.codeValue,
// value: Number(params.ticketResult.usePoint)
// }]
// : undefined;
// 決済カード条件へ変更(2025-01-03~)
// 適用メンバーシップ区分
// const eligibleMembershipType: [factory.offer.IEligibleCategoryCode] | undefined
// = (params.ticketResult.flgMember === COA.factory.master.FlgMember.Member
// && typeof params.defaultMembershipType?.typeOf === 'string')
// ? [{
// typeOf: params.defaultMembershipType.typeOf,
// id: params.defaultMembershipType.id,
// codeValue: params.defaultMembershipType.codeValue,
// inCodeSet: params.defaultMembershipType.inCodeSet
// }]
// : undefined;
const appliesToMovieTicket = (params.ticketResult.flgMember === COA.factory.master.FlgMember.Member
&& typeof params.paymentMethodType4membershipCoupon === 'string' && params.paymentMethodType4membershipCoupon.length > 0)
? [{
typeOf: factory.service.paymentService.PaymentServiceType.MovieTicket,
/**
* チケットコードを決済カード区分と定義する
*/
serviceType: params.ticketResult.ticketCode, // ticketCode
serviceOutput: {
/**
* 決済方法区分
*/
typeOf: params.paymentMethodType4membershipCoupon // from interface settings
}
}]
: undefined;
const unitPriceSpec = Object.assign({ typeOf: factory.priceSpecificationType.UnitPriceSpecification, price: 0, priceCurrency: factory.priceCurrency.JPY, valueAddedTaxIncluded: true, referenceQuantity: {
typeOf: 'QuantitativeValue',
unitCode: factory.unitCode.C62,
value: 1
} }, (Array.isArray(appliesToMovieTicket)) ? { appliesToMovieTicket } : undefined);
const identifier = (0, util_1.format)('%s-%s-%s', factory.service.webAPI.Identifier.COA, params.theaterCode, params.ticketResult.ticketCode);
const offerName = {
ja: params.ticketResult.ticketName,
en: (typeof params.ticketResult.ticketNameEng === 'string')
? params.ticketResult.ticketNameEng
: ''
};
return {
typeOf: factory.offerType.Offer,
priceCurrency: factory.priceCurrency.JPY,
// id: '',
identifier: identifier,
name: offerName,
description: {
ja: '',
en: ''
},
alternateName: {
ja: params.ticketResult.ticketName,
en: (typeof params.ticketResult.ticketNameEng === 'string')
? params.ticketResult.ticketNameEng
: ''
},
availability: factory.itemAvailability.InStock,
itemOffered: {
typeOf: factory.product.ProductType.EventService
},
priceSpecification: unitPriceSpec,
// ...(Array.isArray(eligibleMembershipType)) ? { eligibleMembershipType } : undefined, // 決済カード条件へ変更(2025-01-03~)
// ...(Array.isArray(eligibleMonetaryAmount)) ? { eligibleMonetaryAmount } : undefined, // discontinue(2025-01-03~)
additionalProperty: [
{ name: 'theaterCode', value: params.theaterCode },
{ name: 'ticketCode', value: String(params.ticketResult.ticketCode) },
{ name: 'ticketName', value: String(params.ticketResult.ticketName) },
{ name: 'ticketNameEng', value: String(params.ticketResult.ticketNameEng) },
{ name: 'ticketNameKana', value: String(params.ticketResult.ticketNameKana) },
{ name: 'usePoint', value: String(params.ticketResult.usePoint) },
...(params.ticketResult.flgMember !== undefined)
? [{ name: 'flgMember', value: String(params.ticketResult.flgMember) }]
: []
// ...Object.keys(params.ticketResult)
// .map((key) => {
// return { name: String(key), value: String((<any>params.ticketResult)[key]) };
// })
]
};
}
;