UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

152 lines (151 loc) 6.49 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.importFromCOA = importFromCOA; exports.importCategoryCodesFromCOA = importCategoryCodesFromCOA; // import type { TaskRepo } from '../../../repo/task'; const factory = require("../../../factory"); const factory_1 = require("./importFromCOA/factory"); function importFromCOA(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { // 通貨区分検索 // const currencyTypes = await repos.categoryCode.projectFields( // { // limit: 1, // page: 1, // project: { id: { $eq: params.project.id } }, // inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.CurrencyType } } // }, // [] // ); // const defaultCurrencyType = currencyTypes.shift(); // メンバーシップ区分検索 // const membershipTypes = await repos.categoryCode.projectFields( // { // limit: 1, // page: 1, // project: { id: { $eq: params.project.id } }, // inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.MembershipType } } // }, // [] // ); // const defaultMembershipType = membershipTypes.shift(); try { const ticketResults = yield repos.masterService.ticket({ theaterCode: params.theaterCode }); const saveParams = ticketResults.map((ticketResult) => { const offer = (0, factory_1.coaTicket2offer)({ theaterCode: params.theaterCode, ticketResult: ticketResult, // defaultCurrencyType, // defaultMembershipType paymentMethodType4membershipCoupon: params.paymentMethodType4membershipCoupon }); return { attributes: offer, upsert: true, project: { id: params.project.id } }; }); yield repos.aggregateOffer.saveManyByIdentifier4sskts(saveParams); } catch (error) { let throwsError = true; if (error.name === 'AbortError') { throwsError = false; } if (error.name === 'COAServiceError') { if (error.message === 'ESOCKETTIMEDOUT') { throwsError = false; } } if (throwsError) { throw error; } } }); } /** * 区分をインポートする */ function importCategoryCodesFromCOA(params) { return (repos) => __awaiter(this, void 0, void 0, function* () { try { const joueihousikiKubuns = yield repos.masterService.kubunName({ theaterCode: params.theaterCode, kubunClass: '045' }); // const acousticKubuns = await repos.masterService.kubunName({ // theaterCode: params.theaterCode, // kubunClass: '046' // }); const seatKubuns = yield repos.masterService.kubunName({ theaterCode: params.theaterCode, kubunClass: '050' }); const saveParams = []; joueihousikiKubuns.forEach((kubun) => { saveParams.push({ attributes: kubun2categoryCode({ kubun, project: params.project, inCodeSet: { identifier: factory.categoryCode.CategorySetIdentifier.VideoFormatType } }), upsert: true }); }); // acousticKubuns.forEach((kubun) => { // saveParams.push({ // attributes: kubun2categoryCode({ // kubun, // project: params.project, // inCodeSet: { identifier: factory.categoryCode.CategorySetIdentifier.SoundFormatType } // }), // upsert: true // }); // }); seatKubuns.forEach((kubun) => { saveParams.push({ attributes: kubun2categoryCode({ kubun, project: params.project, inCodeSet: { identifier: factory.categoryCode.CategorySetIdentifier.SeatingType } }), upsert: true }); }); yield repos.categoryCode.saveManyByCodeValue(saveParams); } catch (error) { let throwsError = true; if (error.name === 'AbortError') { throwsError = false; } if (error.name === 'COAServiceError') { if (error.message === 'ESOCKETTIMEDOUT') { throwsError = false; } } if (throwsError) { throw error; } } }); } function kubun2categoryCode(params) { return { additionalProperty: [ ...(typeof params.kubun.kubunAddPrice === 'number') ? [{ name: 'kubunAddPrice', value: String(params.kubun.kubunAddPrice) }] : [] ], project: { id: params.project.id, typeOf: factory.organizationType.Project }, typeOf: 'CategoryCode', codeValue: params.kubun.kubunCode, inCodeSet: { identifier: params.inCodeSet.identifier, typeOf: 'CategoryCodeSet' }, name: Object.assign({ ja: String(params.kubun.kubunName) }, (typeof params.kubun.kubunNameEng === 'string') ? { en: params.kubun.kubunNameEng } : undefined) }; }