@chevre/domain
Version:
Chevre Domain Library for Node.js
152 lines (151 loc) • 6.49 kB
JavaScript
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)
};
}
;