UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

96 lines (95 loc) 5.44 kB
"use strict"; 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.searchOfferAppliesToMovieTicket = searchOfferAppliesToMovieTicket; const factory = require("../../../factory"); function getUnacceptedPaymentMethodByEvent(params) { var _a; let unacceptedPaymentMethod = []; const unacceptedPaymentMethodByEvent = (_a = params.event.offers) === null || _a === void 0 ? void 0 : _a.unacceptedPaymentMethod; // 施設コンテンツを参照する必要はない(2022-10-31~) if (Array.isArray(unacceptedPaymentMethodByEvent)) { unacceptedPaymentMethod = unacceptedPaymentMethodByEvent; } return unacceptedPaymentMethod; } /** * オファーで利用可能な適用決済カード条件を検索する * プロダクトのひとつめのカタログのみ検索対象なので注意 * また、サブカタログによるカタログが設定されている場合、カタログのひとつめのサブカタログのみが検索対象 */ function searchOfferAppliesToMovieTicket(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d; // optimize(2024-07-18~) const event = yield repos.event.projectEventFieldsById({ id: params.event.id }, ['project', 'startDate', 'typeOf', 'superEvent.id', 'offers.itemOffered.id', 'offers.unacceptedPaymentMethod']); // let soundFormatTypes: string[] = []; let videoFormatTypes = []; if (event.typeOf === factory.eventType.ScreeningEvent) { const superEvents = yield repos.eventSeries.projectEventSeriesFields({ limit: 1, page: 1, id: { $eq: event.superEvent.id } // typeOf: factory.eventType.ScreeningEventSeries }, ['soundFormat', 'videoFormat']); const superEvent = superEvents.shift(); if (superEvent === undefined) { throw new factory.errors.NotFound(factory.eventType.ScreeningEventSeries); } // soundFormatTypes = (Array.isArray(superEvent.soundFormat)) ? superEvent.soundFormat.map((f) => f.typeOf) : []; videoFormatTypes = (Array.isArray(superEvent.videoFormat)) ? superEvent.videoFormat.map((f) => f.typeOf) : []; } const unacceptedPaymentMethod = getUnacceptedPaymentMethodByEvent({ event }); // 上映方式がなければMovieTicket除外 const excludeAppliesToMovieTicket = videoFormatTypes.length === 0; // 興行設定があれば興行のカタログを参照する const eventOffers = event.offers; let catalogId; if (typeof ((_a = eventOffers.itemOffered) === null || _a === void 0 ? void 0 : _a.id) === 'string') { const eventService = (yield repos.product.projectFields({ limit: 1, page: 1, id: { $eq: eventOffers.itemOffered.id } }, ['hasOfferCatalog'] // [] )).shift(); if (eventService === undefined) { throw new factory.errors.NotFound(factory.product.ProductType.EventService); } // const firstCatalogIdOfProduct = eventService.hasOfferCatalog?.id; // migrate to itemListElement(2024-09-30~) const firstCatalogIdOfProduct = (_c = (_b = eventService.hasOfferCatalog) === null || _b === void 0 ? void 0 : _b.itemListElement.at(0)) === null || _c === void 0 ? void 0 : _c.id; if (typeof firstCatalogIdOfProduct === 'string') { catalogId = firstCatalogIdOfProduct; } } if (typeof catalogId !== 'string') { throw new factory.errors.NotFound('itemOffered.hasOfferCatalog'); } // サブカタログIDを決定 let subOfferCatalogId = catalogId; let isOfferCatalogItem = false; const offerCatalogFirstElement = yield repos.offerCatalog.findFirstItemListElementById({ id: catalogId }); if (offerCatalogFirstElement.typeOf === 'OfferCatalog') { subOfferCatalogId = offerCatalogFirstElement.id; isOfferCatalogItem = true; } return repos.offer.searchAvaialbleAppliesToMovieTicketByOfferCatalogId({ subOfferCatalog: { id: subOfferCatalogId, isOfferCatalogItem }, availableAtOrFrom: { id: (_d = params.store) === null || _d === void 0 ? void 0 : _d.id }, unacceptedPaymentMethod: unacceptedPaymentMethod, excludeAppliesToMovieTicket: excludeAppliesToMovieTicket, onlyValid: params.onlyValid === true, limit: params.limit, page: params.page, useIncludeInDataCatalog: params.options.useIncludeInDataCatalog }); }); }