@chevre/domain
Version:
Chevre Domain Library for Node.js
177 lines (176 loc) • 10.1 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MovieticketReserveRequestErrorMessage = void 0;
exports.createSeatInfoSyncIn = createSeatInfoSyncIn;
exports.createStartingPayAction = createStartingPayAction;
exports.processPurchaseNumberAuthResult2checkRecipe = processPurchaseNumberAuthResult2checkRecipe;
exports.processSeatInfoSyncResult2payRecipe = processSeatInfoSyncResult2payRecipe;
exports.processSeatInfoSyncResult2refundRecipe = processSeatInfoSyncResult2refundRecipe;
const surfrock = require("@surfrock/sdk");
const moment = require("moment-timezone");
const factory = require("../../../factory");
function createSeatInfoSyncIn(params) {
var _a, _b, _c;
const event = params.event;
const knyknrNoInfo = [];
params.movieTickets.forEach((movieTicket) => {
let knyknrNoInfoByKnyknrNoIndex = knyknrNoInfo.findIndex((i) => i.knyknrNo === movieTicket.identifier);
if (knyknrNoInfoByKnyknrNoIndex < 0) {
knyknrNoInfoByKnyknrNoIndex = knyknrNoInfo.push({
knyknrNo: movieTicket.identifier,
pinCd: String(movieTicket.accessCode),
knshInfo: []
}) - 1;
}
let knshInfoIndex = knyknrNoInfo[knyknrNoInfoByKnyknrNoIndex].knshInfo.findIndex((i) => i.knshTyp === movieTicket.serviceType);
if (knshInfoIndex < 0) {
knshInfoIndex = knyknrNoInfo[knyknrNoInfoByKnyknrNoIndex].knshInfo.push({
knshTyp: movieTicket.serviceType,
miNum: 0
}) - 1;
}
knyknrNoInfo[knyknrNoInfoByKnyknrNoIndex].knshInfo[knshInfoIndex].miNum += 1;
});
const seatNumbers = params.movieTickets.map((t) => t.serviceOutput.reservedTicket.ticketedSeat.seatNumber);
let skhnCd = event.superEvent.workPerformed.identifier;
// イベントインポート元がCOAの場合、作品コード連携方法が異なる
if (((_b = (_a = event.offers) === null || _a === void 0 ? void 0 : _a.offeredThrough) === null || _b === void 0 ? void 0 : _b.identifier) === factory.service.webAPI.Identifier.COA) {
const DIGITS = -2;
// coaInfo依存へ変更(2024-07-20~)
const { coaInfo } = event;
if (coaInfo === undefined) {
throw new factory.errors.NotFound('coaInfo', `coaInfo of event ${event.id} not found`);
}
const { titleBranchNum, titleCode } = coaInfo;
skhnCd = `${titleCode}${`00${titleBranchNum}`.slice(DIGITS)}`;
}
const kgygishCd = params.credentials.kgygishCd;
const stCd = params.credentials.stCd;
const confirmationNumber = (_c = params.purpose) === null || _c === void 0 ? void 0 : _c.confirmationNumber;
if (typeof confirmationNumber !== 'string' || confirmationNumber === '') {
throw new factory.errors.ArgumentNull('purpose.confirmationNumber');
}
return {
kgygishCd: kgygishCd,
yykDvcTyp: surfrock.factory.service.seat.seatInfoSync.ReserveDeviceType.EntertainerSitePC, // 予約デバイス区分
trkshFlg: surfrock.factory.service.seat.seatInfoSync.DeleteFlag.False, // 取消フラグ
kgygishSstmZskyykNo: params.paymentMethodId, // 興行会社システム座席予約番号
kgygishUsrZskyykNo: confirmationNumber, // fix(2025-02-12~)
// kgygishUsrZskyykNo: (typeof (<factory.action.trade.pay.IOrderAsPayPurpose>params.purpose)?.confirmationNumber === 'string')
// ? String((<factory.action.trade.pay.IOrderAsPayPurpose>params.purpose).confirmationNumber) // 注文の確認番号の場合
// : String((<factory.action.trade.pay.IPurposeAsAssetTransaction>params.purpose)?.transactionNumber), // 決済取引番号の場合
jeiDt: moment(event.startDate)
.tz('Asia/Tokyo')
.format('YYYY/MM/DD HH:mm:ss'), // 上映日時
kijYmd: moment(event.startDate)
.tz('Asia/Tokyo')
.format('YYYY/MM/DD'), // 計上年月日
stCd: stCd,
screnCd: event.location.branchCode, // スクリーンコード
knyknrNoInfo: knyknrNoInfo,
zskInfo: seatNumbers.map((seatNumber) => {
return { zskCd: seatNumber };
}),
skhnCd: skhnCd // 作品コード
};
}
function createStartingPayAction(params) {
const firstObject = params.object.shift();
if (firstObject === undefined) {
throw new factory.errors.ArgumentNull('object');
}
const movieTicketsWithMaskedAccessCode = (Array.isArray(firstObject.movieTickets))
? firstObject.movieTickets.map((movieTicket) => {
return Object.assign(Object.assign({}, movieTicket), { accessCode: '****' // accessCodeを隠蔽(2023-02-08~)
});
})
: [];
return Object.assign(Object.assign({}, params), { object: [Object.assign(Object.assign({}, firstObject), { movieTickets: movieTicketsWithMaskedAccessCode })] });
}
function processPurchaseNumberAuthResult2checkRecipe(params) {
const { processPurchaseNumberAuthResult, project } = params;
const { purchaseNumberAuthIn, purchaseNumberAuthResult } = processPurchaseNumberAuthResult;
return {
project: { id: project.id, typeOf: factory.organizationType.Project },
typeOf: 'Recipe',
recipeCategory: factory.recipe.RecipeCategory.checkMovieTicket,
step: [{
typeOf: 'HowToSection',
itemListElement: [
{
typeOf: 'HowToStep',
identifier: factory.recipe.StepIdentifier.purchaseNumberAuth,
itemListElement: [Object.assign(Object.assign({ typeOf: 'HowToDirection' }, (purchaseNumberAuthIn !== undefined) ? { beforeMedia: purchaseNumberAuthIn } : undefined), (purchaseNumberAuthResult !== undefined) ? { afterMedia: purchaseNumberAuthResult } : undefined)]
}
]
}]
};
}
function processSeatInfoSyncResult2payRecipe(params) {
const { processSeatInfoSyncResult, project } = params;
const { seatInfoSyncIn, seatInfoSyncResult } = processSeatInfoSyncResult;
return {
project: { id: project.id, typeOf: factory.organizationType.Project },
typeOf: 'Recipe',
recipeCategory: factory.recipe.RecipeCategory.payMovieTicket,
step: [{
typeOf: 'HowToSection',
itemListElement: [
{
typeOf: 'HowToStep',
identifier: factory.recipe.StepIdentifier.seatInfoSync,
itemListElement: [Object.assign(Object.assign({ typeOf: 'HowToDirection' }, (seatInfoSyncIn !== undefined) ? { beforeMedia: seatInfoSyncIn } : undefined), (seatInfoSyncResult !== undefined) ? { afterMedia: seatInfoSyncResult } : undefined)]
}
]
}]
};
}
function processSeatInfoSyncResult2refundRecipe(params) {
const { processSeatInfoSyncResult, processSeatInfoSyncCancelResult, project } = params;
if (processSeatInfoSyncResult !== undefined) {
const { seatInfoSyncIn, seatInfoSyncResult } = processSeatInfoSyncResult;
return {
project: { id: project.id, typeOf: factory.organizationType.Project },
typeOf: 'Recipe',
recipeCategory: factory.recipe.RecipeCategory.refundMovieTicket,
step: [{
typeOf: 'HowToSection',
itemListElement: [
{
typeOf: 'HowToStep',
identifier: factory.recipe.StepIdentifier.seatInfoSync,
itemListElement: [Object.assign(Object.assign({ typeOf: 'HowToDirection' }, (seatInfoSyncIn !== undefined) ? { beforeMedia: seatInfoSyncIn } : undefined), (seatInfoSyncResult !== undefined) ? { afterMedia: seatInfoSyncResult } : undefined)]
}
]
}]
};
}
else if (processSeatInfoSyncCancelResult !== undefined) {
const { seatInfoSyncCancelIn, seatInfoSyncCancelResult } = processSeatInfoSyncCancelResult;
return {
project: { id: project.id, typeOf: factory.organizationType.Project },
typeOf: 'Recipe',
recipeCategory: factory.recipe.RecipeCategory.refundMovieTicket,
step: [{
typeOf: 'HowToSection',
itemListElement: [
{
typeOf: 'HowToStep',
identifier: factory.recipe.StepIdentifier.seatInfoSyncCancel,
itemListElement: [Object.assign(Object.assign({ typeOf: 'HowToDirection' }, (seatInfoSyncCancelIn !== undefined) ? { beforeMedia: seatInfoSyncCancelIn } : undefined), (seatInfoSyncCancelResult !== undefined) ? { afterMedia: seatInfoSyncCancelResult } : undefined)]
}
]
}]
};
}
else {
throw new factory.errors.ArgumentNull('', 'processSeatInfoSyncResult or processSeatInfoSyncCancelResult required');
}
}
var MovieticketReserveRequestErrorMessage;
(function (MovieticketReserveRequestErrorMessage) {
MovieticketReserveRequestErrorMessage["AlreadyPaid"] = "\u65E2\u306B\u5B58\u5728\u3059\u308B\u8208\u884C\u30B7\u30B9\u30C6\u30E0\u5EA7\u5E2D\u4E88\u7D04\u756A\u53F7\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F\u3002";
MovieticketReserveRequestErrorMessage["NotFound"] = "\u5B58\u5728\u3057\u306A\u3044\u8208\u884C\u4F1A\u793E\u30B7\u30B9\u30C6\u30E0\u5EA7\u5E2D\u4E88\u7D04\u756A\u53F7\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F\u3002";
MovieticketReserveRequestErrorMessage["ReservationResult19"] = "ReservationResult 19";
MovieticketReserveRequestErrorMessage["CancellationPeriodPassed"] = "\u5EA7\u5E2D\u4E88\u7D04\u53D6\u6D88\u53EF\u80FD\u671F\u9593\u3092\u904E\u304E\u3066\u3044\u307E\u3059\u3002";
})(MovieticketReserveRequestErrorMessage || (exports.MovieticketReserveRequestErrorMessage = MovieticketReserveRequestErrorMessage = {}));
;