UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

70 lines (69 loc) 3.51 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.findEventOffers = findEventOffers; const factory = require("../../../factory"); /** * 興行オファー検索 * NotFoundエラーをハンドリングする */ function findEventOffers(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { var _a, _b, _c; let availableOffers = []; try { // 興行設定があれば興行のカタログを参照する const eventOffers = params.event.offers; if (typeof ((_a = eventOffers === null || eventOffers === void 0 ? void 0 : 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 offerCatalogId = eventService.hasOfferCatalog?.id; // migrate to itemListElement(2024-09-30~) const offerCatalogId = (_c = (_b = eventService.hasOfferCatalog) === null || _b === void 0 ? void 0 : _b.itemListElement.at(0)) === null || _c === void 0 ? void 0 : _c.id; if (typeof offerCatalogId === 'string') { // サブカタログIDを決定 let subOfferCatalogId = offerCatalogId; let isOfferCatalogItem = false; const offerCatalogFirstElement = yield repos.offerCatalog.findFirstItemListElementById({ id: offerCatalogId }); if (offerCatalogFirstElement.typeOf === 'OfferCatalog') { subOfferCatalogId = offerCatalogFirstElement.id; isOfferCatalogItem = true; } const { offers } = yield repos.offer.searchAllByOfferCatalogId({ subOfferCatalog: { id: subOfferCatalogId, isOfferCatalogItem } }); availableOffers = offers; } } else { throw new factory.errors.NotFound('event.offers.itemOffered.id'); } } catch (error) { let throwsError = true; // 万が一カタログが見つからない場合に対応 if (error instanceof factory.errors.NotFound) { throwsError = false; } if (throwsError) { throw error; } } return availableOffers; }); }