@chevre/domain
Version:
Chevre Domain Library for Node.js
58 lines (57 loc) • 3.14 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.findByCode = findByCode;
const factory = require("../../factory");
function findByCode(params) {
return (repos) => __awaiter(this, void 0, void 0, function* () {
var _a;
if (typeof params.id !== 'string' || params.id.length === 0) {
throw new factory.errors.ArgumentNull('id');
}
if (typeof params.code !== 'string' || params.code.length === 0) {
throw new factory.errors.ArgumentNull('code');
}
const reservationId = String(params.id);
const authorization = yield repos.authorization.findValidOneByCode({
project: { id: params.project.id },
code: params.code
});
switch (authorization.object.typeOf) {
case factory.order.OrderType.Order:
const { orderNumber } = authorization.object;
if (typeof orderNumber === 'string' && orderNumber.length > 0) {
// reservationIdを含む注文の存在を確認するだけでよい
yield repos.order.findByOrderNumberAndReservationId({
project: { id: params.project.id },
orderNumber,
reservationId,
seller: params.seller
});
}
break;
default:
throw new factory.errors.NotImplemented(`authorization object typeOf: ${authorization.object.typeOf} not implemented`);
}
const reservationFromRepo = yield repos.reservation.projectFieldsById({
id: reservationId,
inclusion: ['additionalTicketText', 'checkedIn', 'reservationStatus', 'reservedTicket']
});
const { id, additionalTicketText, checkedIn, reservationStatus, reservedTicket } = reservationFromRepo;
const reservation = Object.assign(Object.assign({ id, reservationStatus, reservedTicket: {
ticketType: {
identifier: reservedTicket.ticketType.identifier,
name: { ja: (_a = reservedTicket.ticketType.name) === null || _a === void 0 ? void 0 : _a.ja }
}
} }, (typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined), (typeof checkedIn === 'boolean') ? { checkedIn } : undefined);
return { reservation };
});
}
;