@chevre/domain 28.0.0-alpha.4 → 28.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/chevre/emailMessageBuilder.js +1 -1
- package/lib/chevre/factory/event.d.ts +1 -1
- package/lib/chevre/factory/event.js +1 -5
- package/lib/chevre/repo/acceptedOffer.d.ts +6 -5
- package/lib/chevre/repo/acceptedOffer.js +14 -9
- package/lib/chevre/repo/acceptedOfferInReserve.d.ts +6 -8
- package/lib/chevre/repo/acceptedOfferInReserve.js +13 -7
- package/lib/chevre/repo/adminAcceptedOffer.d.ts +25 -12
- package/lib/chevre/repo/adminAcceptedOffer.js +20 -10
- package/lib/chevre/repo/adminAccountTitle.d.ts +49 -0
- package/lib/chevre/repo/adminAccountTitle.js +212 -0
- package/lib/chevre/repo/adminAccountTitleCategory.d.ts +37 -0
- package/lib/chevre/repo/adminAccountTitleCategory.js +127 -0
- package/lib/chevre/repo/adminAccountTitleSet.d.ts +42 -0
- package/lib/chevre/repo/adminAccountTitleSet.js +149 -0
- package/lib/chevre/repo/adminEvent.d.ts +1 -7
- package/lib/chevre/repo/adminEvent.js +3 -9
- package/lib/chevre/repo/adminEventSeries.d.ts +67 -0
- package/lib/chevre/repo/adminEventSeries.js +178 -0
- package/lib/chevre/repo/{paymentServiceChannel.d.ts → adminPaymentServiceChannel.d.ts} +13 -11
- package/lib/chevre/repo/{paymentServiceChannel.js → adminPaymentServiceChannel.js} +20 -19
- package/lib/chevre/repo/adminTask.d.ts +2 -2
- package/lib/chevre/repo/adminTransaction.d.ts +20 -30
- package/lib/chevre/repo/aggregateEvent.js +0 -1
- package/lib/chevre/repo/categoryCode.js +0 -21
- package/lib/chevre/repo/event.d.ts +2 -2
- package/lib/chevre/repo/event.js +71 -110
- package/lib/chevre/repo/eventSeries.d.ts +5 -84
- package/lib/chevre/repo/eventSeries.js +21 -212
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +1 -1
- package/lib/chevre/repo/issuer.d.ts +2 -6
- package/lib/chevre/repo/memberProgram.d.ts +1 -38
- package/lib/chevre/repo/memberProgram.js +1 -62
- package/lib/chevre/repo/mongoose/schemas/accountTitle.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/accountTitle.js +21 -25
- package/lib/chevre/repo/mongoose/schemas/civicStructure.d.ts +1 -0
- package/lib/chevre/repo/mongoose/schemas/event.js +0 -13
- package/lib/chevre/repo/mongoose/schemas/eventSeries.js +1 -18
- package/lib/chevre/repo/mongoose/schemas/issuer.d.ts +1 -3
- package/lib/chevre/repo/mongoose/schemas/issuer.js +0 -10
- package/lib/chevre/repo/mongoose/schemas/offerCatalog.d.ts +0 -1
- package/lib/chevre/repo/mongoose/schemas/offerCatalog.js +3 -12
- package/lib/chevre/repo/mongoose/schemas/offerCatalogItem.d.ts +1 -2
- package/lib/chevre/repo/mongoose/schemas/offerCatalogItem.js +6 -15
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +22 -1
- package/lib/chevre/repo/mongoose/schemas/paymentServiceChannel.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/place.js +0 -9
- package/lib/chevre/repo/mongoose/schemas/project.d.ts +1 -2
- package/lib/chevre/repo/mongoose/schemas/project.js +1 -1
- package/lib/chevre/repo/mongoose/schemas/seller.d.ts +3 -1
- package/lib/chevre/repo/mongoose/schemas/seller.js +0 -2
- package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/transaction.js +51 -52
- package/lib/chevre/repo/offerCatalog.d.ts +0 -2
- package/lib/chevre/repo/offerCatalogItem.d.ts +13 -20
- package/lib/chevre/repo/offerCatalogItem.js +8 -86
- package/lib/chevre/repo/order.d.ts +2 -2
- package/lib/chevre/repo/order.js +0 -31
- package/lib/chevre/repo/orderInTransaction.d.ts +5 -25
- package/lib/chevre/repo/place/movieTheater.d.ts +3 -1
- package/lib/chevre/repo/place/movieTheater.js +3 -1
- package/lib/chevre/repo/place/{hasPOS.d.ts → pos.d.ts} +13 -20
- package/lib/chevre/repo/place/{hasPOS.js → pos.js} +66 -29
- package/lib/chevre/repo/place/screeningRoom.d.ts +24 -3
- package/lib/chevre/repo/place/screeningRoom.js +28 -17
- package/lib/chevre/repo/priceSpecification.d.ts +8 -8
- package/lib/chevre/repo/project.d.ts +2 -8
- package/lib/chevre/repo/project.js +0 -12
- package/lib/chevre/repo/projectMakesOffer.js +2 -2
- package/lib/chevre/repo/role.d.ts +1 -1
- package/lib/chevre/repo/role.js +1 -30
- package/lib/chevre/repo/seller.d.ts +11 -4
- package/lib/chevre/repo/seller.js +31 -58
- package/lib/chevre/repo/sellerPaymentAccepted.d.ts +14 -21
- package/lib/chevre/repo/sellerPaymentAccepted.js +65 -38
- package/lib/chevre/repo/task.d.ts +3 -3
- package/lib/chevre/repo/transaction/placeOrder.d.ts +2 -3
- package/lib/chevre/repo/transaction/placeOrder.js +15 -36
- package/lib/chevre/repository.d.ts +30 -15
- package/lib/chevre/repository.js +63 -30
- package/lib/chevre/service/aggregation/event/aggregateOffers.js +1 -2
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +2 -2
- package/lib/chevre/service/aggregation.d.ts +0 -2
- package/lib/chevre/service/aggregation.js +1 -3
- package/lib/chevre/service/assetTransaction/pay/start/preStart/validateAcceptedPaymentMethodIfNeeded.js +1 -2
- package/lib/chevre/service/assetTransaction/pay/start/preStart/validateSeller.js +2 -2
- package/lib/chevre/service/assetTransaction/reserve/start.js +2 -1
- package/lib/chevre/service/delivery/reservation/factory.d.ts +1 -1
- package/lib/chevre/service/event/saveScreeningEventSeries.d.ts +2 -2
- package/lib/chevre/service/event/saveScreeningEventSeries.js +2 -3
- package/lib/chevre/service/event/saveScreeningEvents.d.ts +2 -0
- package/lib/chevre/service/event/saveScreeningEvents.js +4 -4
- package/lib/chevre/service/event.d.ts +2 -0
- package/lib/chevre/service/event.js +0 -1
- package/lib/chevre/service/notification/sendEmailMessage.d.ts +2 -0
- package/lib/chevre/service/notification/sendEmailMessage.js +23 -6
- package/lib/chevre/service/offer/any.d.ts +1 -1
- package/lib/chevre/service/offer/event/authorize/factory.d.ts +3 -3
- package/lib/chevre/service/offer/event/authorize/factory.js +1 -8
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +1 -1
- package/lib/chevre/service/offer/event/issueEventOfferTicket.js +0 -11
- package/lib/chevre/service/offer/event/searchEventTicketOffers.js +4 -10
- package/lib/chevre/service/offer/event/searchOfferAppliesToMovieTicket.js +2 -8
- package/lib/chevre/service/offer/event/searchOfferCatalogItems.js +2 -2
- package/lib/chevre/service/offer/event/searchOffersByIds.js +3 -9
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +0 -1
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -1
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.js +0 -7
- package/lib/chevre/service/offer/onEventChanged.js +9 -21
- package/lib/chevre/service/offer.js +1 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +4 -6
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.js +23 -4
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/factory/orderedItem.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
- package/lib/chevre/service/order/sendOrder.js +2 -14
- package/lib/chevre/service/payment/creditCard/getGMOInfoFromSeller.js +1 -1
- package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.d.ts +3 -3
- package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +1 -1
- package/lib/chevre/service/payment/movieTicket/payMovieTicket/payActionParams2seatInfoSyncIn.js +1 -1
- package/lib/chevre/service/payment/movieTicket/validation.js +1 -1
- package/lib/chevre/service/project.d.ts +3 -3
- package/lib/chevre/service/project.js +1 -1
- package/lib/chevre/service/task/importEventsFromCOA.js +2 -0
- package/lib/chevre/service/task/onResourceDeleted.js +8 -8
- package/lib/chevre/service/task/onResourceUpdated/onHasPOSUpdated.d.ts +7 -3
- package/lib/chevre/service/task/onResourceUpdated/onHasPOSUpdated.js +51 -50
- package/lib/chevre/service/task/onResourceUpdated/onOfferCatalogUpdated.js +1 -1
- package/lib/chevre/service/task/onResourceUpdated/syncOfferCatalog.js +1 -1
- package/lib/chevre/service/task/onResourceUpdated.js +10 -47
- package/lib/chevre/service/task/sendEmailMessage.js +3 -1
- package/lib/chevre/service/task/syncResourcesFromCOA.js +5 -3
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.d.ts +1 -2
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +0 -5
- package/lib/chevre/service/transaction/placeOrder/confirm/prepareUnitPriceOfferConditions.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateMovieTicket.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrder/confirm/validation.d.ts +2 -2
- package/lib/chevre/service/transaction/placeOrder/confirm.js +0 -5
- package/lib/chevre/service/transaction/returnOrder/preStart/factory.d.ts +1 -1
- package/lib/chevre/service/transaction/returnOrder/preStart.js +1 -2
- package/package.json +2 -2
- package/lib/chevre/repo/accountTitle.d.ts +0 -28
- package/lib/chevre/repo/accountTitle.js +0 -30
- package/lib/chevre/service/aggregation/project.d.ts +0 -17
- package/lib/chevre/service/aggregation/project.js +0 -98
- package/lib/chevre/service/delivery/factory.d.ts +0 -16
- package/lib/chevre/service/delivery/factory.js +0 -124
|
@@ -28,7 +28,7 @@ class OfferCatalogItemRepo {
|
|
|
28
28
|
}
|
|
29
29
|
static CREATE_MONGO_CONDITIONS(params) {
|
|
30
30
|
// MongoDB検索条件
|
|
31
|
-
const andConditions = [];
|
|
31
|
+
const andConditions = [];
|
|
32
32
|
const projectIdEq = params.project?.id?.$eq;
|
|
33
33
|
if (typeof projectIdEq === 'string') {
|
|
34
34
|
andConditions.push({ 'project.id': { $eq: projectIdEq } });
|
|
@@ -247,7 +247,7 @@ class OfferCatalogItemRepo {
|
|
|
247
247
|
})
|
|
248
248
|
.exec();
|
|
249
249
|
}
|
|
250
|
-
async
|
|
250
|
+
async countOfferCatalogItems(params) {
|
|
251
251
|
const conditions = OfferCatalogItemRepo.CREATE_MONGO_CONDITIONS(params);
|
|
252
252
|
const matchStages = conditions.map((condition) => {
|
|
253
253
|
return { $match: condition };
|
|
@@ -261,18 +261,15 @@ class OfferCatalogItemRepo {
|
|
|
261
261
|
.exec();
|
|
262
262
|
return (result.length > 0) ? result[0].numItems : 0;
|
|
263
263
|
}
|
|
264
|
-
async
|
|
264
|
+
async findOfferCatalogItems(params, inclusion) {
|
|
265
265
|
const conditions = OfferCatalogItemRepo.CREATE_MONGO_CONDITIONS(params);
|
|
266
266
|
const matchStages = conditions.map((condition) => {
|
|
267
267
|
return { $match: condition };
|
|
268
268
|
});
|
|
269
269
|
let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
|
|
270
|
-
if (Array.isArray(inclusion)
|
|
270
|
+
if (Array.isArray(inclusion)) {
|
|
271
271
|
positiveProjectionFields = inclusion.filter((key) => AVAILABLE_PROJECT_FIELDS.includes(key));
|
|
272
272
|
}
|
|
273
|
-
else {
|
|
274
|
-
// throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
|
|
275
|
-
}
|
|
276
273
|
const projection = {
|
|
277
274
|
_id: 0,
|
|
278
275
|
id: { $toString: '$_id' },
|
|
@@ -297,49 +294,6 @@ class OfferCatalogItemRepo {
|
|
|
297
294
|
return [key, value];
|
|
298
295
|
}))
|
|
299
296
|
};
|
|
300
|
-
// let projectStage: { [field: string]: AnyExpression } = {
|
|
301
|
-
// _id: 0,
|
|
302
|
-
// name: '$name',
|
|
303
|
-
// description: '$description',
|
|
304
|
-
// project: '$project',
|
|
305
|
-
// typeOf: '$typeOf',
|
|
306
|
-
// id: { $toString: '$_id' },
|
|
307
|
-
// identifier: '$identifier',
|
|
308
|
-
// itemOffered: '$itemOffered',
|
|
309
|
-
// additionalProperty: '$additionalProperty',
|
|
310
|
-
// relatedOffer: '$relatedOffer',
|
|
311
|
-
// numberOfItems: {
|
|
312
|
-
// $cond: {
|
|
313
|
-
// if: { $isArray: '$itemListElement' },
|
|
314
|
-
// then: { $size: '$itemListElement' },
|
|
315
|
-
// else: 0
|
|
316
|
-
// }
|
|
317
|
-
// },
|
|
318
|
-
// itemListElementTypeOf: { $first: '$itemListElement.typeOf' },
|
|
319
|
-
// dateSynced: '$dateSynced'
|
|
320
|
-
// };
|
|
321
|
-
// const positiveProjectionFields: string[] = Object.keys(projection)
|
|
322
|
-
// .filter((key) => projection[<KeyOfOfferCatalogItem>key] !== 0);
|
|
323
|
-
// const negativeProjectionFields: string[] = Object.keys(projection)
|
|
324
|
-
// .filter((key) => projection[<KeyOfOfferCatalogItem>key] === 0);
|
|
325
|
-
// if (positiveProjectionFields.length > 0) {
|
|
326
|
-
// projectStage = {
|
|
327
|
-
// _id: 0,
|
|
328
|
-
// id: { $toString: '$_id' }
|
|
329
|
-
// };
|
|
330
|
-
// positiveProjectionFields.forEach((field) => {
|
|
331
|
-
// if (field !== '_id' && field !== 'id') {
|
|
332
|
-
// projectStage[field] = `$${field}`;
|
|
333
|
-
// }
|
|
334
|
-
// });
|
|
335
|
-
// } else if (negativeProjectionFields.length > 0) {
|
|
336
|
-
// negativeProjectionFields.forEach((field) => {
|
|
337
|
-
// if (projectStage[field] !== undefined && projectStage[field] !== null) {
|
|
338
|
-
// // tslint:disable-next-line:no-dynamic-delete
|
|
339
|
-
// delete projectStage[field];
|
|
340
|
-
// }
|
|
341
|
-
// });
|
|
342
|
-
// }
|
|
343
297
|
const aggregate = this.offerCatalogItemModel.aggregate([
|
|
344
298
|
...(params.sort?.identifier !== undefined) ? [{ $sort: { identifier: params.sort.identifier } }] : [],
|
|
345
299
|
...matchStages,
|
|
@@ -347,8 +301,10 @@ class OfferCatalogItemRepo {
|
|
|
347
301
|
]);
|
|
348
302
|
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
349
303
|
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
350
|
-
aggregate.limit(params.limit * page)
|
|
351
|
-
|
|
304
|
+
// aggregate.limit(params.limit * page)
|
|
305
|
+
// .skip(params.limit * (page - 1));
|
|
306
|
+
aggregate.skip(params.limit * (page - 1))
|
|
307
|
+
.limit(params.limit);
|
|
352
308
|
}
|
|
353
309
|
return aggregate.exec();
|
|
354
310
|
}
|
|
@@ -413,39 +369,5 @@ class OfferCatalogItemRepo {
|
|
|
413
369
|
return this.offerCatalogItemModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
|
|
414
370
|
.exec();
|
|
415
371
|
}
|
|
416
|
-
async aggregateItemList(params) {
|
|
417
|
-
const matchConditions = {
|
|
418
|
-
'itemListElement.typeOf': { $eq: params.itemListElement.typeOf.$eq }
|
|
419
|
-
};
|
|
420
|
-
const aggregations = await this.offerCatalogItemModel.aggregate([
|
|
421
|
-
{ $match: matchConditions },
|
|
422
|
-
{
|
|
423
|
-
$project: {
|
|
424
|
-
numItemListElement: { $size: '$itemListElement' }
|
|
425
|
-
}
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
$group: {
|
|
429
|
-
_id: '$typeOf',
|
|
430
|
-
maxNumItemListElement: { $max: '$numItemListElement' },
|
|
431
|
-
minNumItemListElement: { $min: '$numItemListElement' }
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
|
-
{
|
|
435
|
-
$project: {
|
|
436
|
-
_id: 0,
|
|
437
|
-
maxNumItemListElement: '$maxNumItemListElement',
|
|
438
|
-
minNumItemListElement: '$minNumItemListElement'
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
])
|
|
442
|
-
.exec();
|
|
443
|
-
if (aggregations.length === 0) {
|
|
444
|
-
return {
|
|
445
|
-
aggregation: {}
|
|
446
|
-
};
|
|
447
|
-
}
|
|
448
|
-
return { aggregation: aggregations[0] };
|
|
449
|
-
}
|
|
450
372
|
}
|
|
451
373
|
exports.OfferCatalogItemRepo = OfferCatalogItemRepo;
|
|
@@ -133,7 +133,7 @@ export declare class OrderRepo {
|
|
|
133
133
|
id: string;
|
|
134
134
|
})[]>;
|
|
135
135
|
getCursor(conditions: any, projection: any): import("mongoose").Cursor<import("mongoose").Document<unknown, Record<string, never>, IDocType, import("./mongoose/virtuals").IVirtuals, {}> & Omit<factory.order.IOrder, "id"> & {
|
|
136
|
-
acceptedOffers?:
|
|
136
|
+
acceptedOffers?: import("./mongoose/schemas/order").IAcceptedOfferInDoc[];
|
|
137
137
|
identifier?: string;
|
|
138
138
|
paymentMethodId?: string;
|
|
139
139
|
} & {
|
|
@@ -141,7 +141,7 @@ export declare class OrderRepo {
|
|
|
141
141
|
} & {
|
|
142
142
|
__v: number;
|
|
143
143
|
}, import("mongoose").QueryOptions<IDocType>, (import("mongoose").Document<unknown, Record<string, never>, IDocType, import("./mongoose/virtuals").IVirtuals, {}> & Omit<factory.order.IOrder, "id"> & {
|
|
144
|
-
acceptedOffers?:
|
|
144
|
+
acceptedOffers?: import("./mongoose/schemas/order").IAcceptedOfferInDoc[];
|
|
145
145
|
identifier?: string;
|
|
146
146
|
paymentMethodId?: string;
|
|
147
147
|
} & {
|
package/lib/chevre/repo/order.js
CHANGED
|
@@ -487,37 +487,6 @@ class OrderRepo {
|
|
|
487
487
|
}
|
|
488
488
|
return andConditions;
|
|
489
489
|
}
|
|
490
|
-
// OrderInTransactionリポジトリにて注文ドキュメントが生成されるように変更したのでもう不要
|
|
491
|
-
// /**
|
|
492
|
-
// * なければ作成する
|
|
493
|
-
// */
|
|
494
|
-
// public async createIfNotExist(order: IOrderWithoutAcceptedOffers & {
|
|
495
|
-
// acceptedOffers: factory.order.IAcceptedOffer[];
|
|
496
|
-
// }): Promise<void> {
|
|
497
|
-
// try {
|
|
498
|
-
// // 存在しなければ上書き
|
|
499
|
-
// // updateOneに変更(2024-01-14~)
|
|
500
|
-
// // await this.orderModel.findOneAndUpdate(
|
|
501
|
-
// await this.orderModel.updateOne(
|
|
502
|
-
// { orderNumber: order.orderNumber },
|
|
503
|
-
// { $setOnInsert: order },
|
|
504
|
-
// {
|
|
505
|
-
// // new: true,
|
|
506
|
-
// upsert: true
|
|
507
|
-
// }
|
|
508
|
-
// )
|
|
509
|
-
// .exec();
|
|
510
|
-
// } catch (error) {
|
|
511
|
-
// let throwsError = true;
|
|
512
|
-
// if (await isMongoDuplicateError(error)) {
|
|
513
|
-
// // すでにorderNumberが存在する場合ok
|
|
514
|
-
// throwsError = false;
|
|
515
|
-
// }
|
|
516
|
-
// if (throwsError) {
|
|
517
|
-
// throw error;
|
|
518
|
-
// }
|
|
519
|
-
// }
|
|
520
|
-
// }
|
|
521
490
|
/**
|
|
522
491
|
* 注文ステータスを変更する
|
|
523
492
|
*/
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Connection } from 'mongoose';
|
|
2
2
|
import { factory } from '../factory';
|
|
3
|
+
import { IMinimizedAcceptedOffer, IMinimizedReservationFor, IMinimizedItemOffered } from './mongoose/schemas/order';
|
|
3
4
|
import { AcceptedOfferInReserveRepo } from './acceptedOfferInReserve';
|
|
5
|
+
export { IMinimizedAcceptedOffer, IMinimizedReservationFor, IMinimizedItemOffered };
|
|
4
6
|
export type IOrderInTransaction = Pick<factory.order.IOrder, 'orderNumber' | 'project' | 'broker'> & {
|
|
5
7
|
typeOf: factory.transactionType.PlaceOrder;
|
|
6
8
|
orderDate: Date;
|
|
@@ -8,7 +10,7 @@ export type IOrderInTransaction = Pick<factory.order.IOrder, 'orderNumber' | 'pr
|
|
|
8
10
|
* 注文取引IDとして再定義(2026-06-22~)
|
|
9
11
|
*/
|
|
10
12
|
identifier: string;
|
|
11
|
-
acceptedOffers: factory.
|
|
13
|
+
acceptedOffers: IMinimizedAcceptedOffer[] | factory.acceptedOffer.ICOAAcceptedOffer[];
|
|
12
14
|
customer?: factory.order.ICustomer;
|
|
13
15
|
seller?: factory.order.ISeller;
|
|
14
16
|
confirmationNumber?: string;
|
|
@@ -47,26 +49,6 @@ export type IPlacingOrder = Pick<factory.order.IOrder, 'orderDate' | 'orderStatu
|
|
|
47
49
|
*/
|
|
48
50
|
seller?: never;
|
|
49
51
|
};
|
|
50
|
-
export type IMinimizedReservationFor = Pick<factory.order.IEventAsReservationFor, 'endDate' | 'id' | 'startDate' | 'typeOf'> & {
|
|
51
|
-
location: Pick<factory.order.IEventAsReservationFor['location'], 'branchCode' | 'typeOf'>;
|
|
52
|
-
superEvent: Pick<factory.order.ISuperEvent, 'id' | 'typeOf'> & {
|
|
53
|
-
location: Pick<factory.order.ISuperEvent['location'], 'branchCode' | 'typeOf'>;
|
|
54
|
-
workPerformed: Pick<factory.order.ISuperEvent['workPerformed'], 'identifier' | 'typeOf'>;
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
export type IMinimizedItemOffered = Pick<factory.order.IEventReservation, 'id' | 'reservationNumber' | 'typeOf'> & {
|
|
58
|
-
/**
|
|
59
|
-
* 予約番号ごとに、ひとつめのオファーのみreservationForを含むように変更するのでoptionalに
|
|
60
|
-
* 2026-06-04~
|
|
61
|
-
*/
|
|
62
|
-
reservationFor?: IMinimizedReservationFor;
|
|
63
|
-
reservedTicket?: never;
|
|
64
|
-
};
|
|
65
|
-
export type IMinimizedAcceptedOffer = Pick<factory.order.IOptimizedAcceptedOffer, 'id' | 'offeredThrough' | 'serialNumber' | 'typeOf'> & {
|
|
66
|
-
itemOffered: IMinimizedItemOffered;
|
|
67
|
-
priceSpecification?: never;
|
|
68
|
-
name?: never;
|
|
69
|
-
};
|
|
70
52
|
export interface IPaymentMethodByPaymentUrl {
|
|
71
53
|
/**
|
|
72
54
|
* 決済採用時に発行済の決済方法ID
|
|
@@ -117,9 +99,7 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
|
117
99
|
* 注文取引タイプのドキュメントのみを参照対象にするかどうか
|
|
118
100
|
*/
|
|
119
101
|
onlyPlaceOrder: boolean;
|
|
120
|
-
}): Promise<
|
|
121
|
-
priceSpecification?: factory.order.ITicketPriceSpecification;
|
|
122
|
-
})[]>;
|
|
102
|
+
}): Promise<Pick<factory.acceptedOffer.IAcceptedOffer, 'id' | 'itemOffered' | 'offeredThrough' | 'serialNumber' | 'typeOf' | 'priceSpecification'>[]>;
|
|
123
103
|
/**
|
|
124
104
|
* 注文を受注する
|
|
125
105
|
* typeOf: PlaceOrder -> typeOf: Order
|
|
@@ -132,7 +112,7 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
|
132
112
|
* このメソッドでdocumentが初めて生成される(typeOf:PlaceOrderとして)
|
|
133
113
|
*/
|
|
134
114
|
acceptOfferByIdentifier(params: Pick<IOrderInTransaction, 'project' | 'identifier'> & {
|
|
135
|
-
acceptedOffers: IMinimizedAcceptedOffer[] | factory.
|
|
115
|
+
acceptedOffers: IMinimizedAcceptedOffer[] | factory.acceptedOffer.ICOAAcceptedOffer[];
|
|
136
116
|
}): Promise<import("mongoose").UpdateWriteOpResult | undefined>;
|
|
137
117
|
/**
|
|
138
118
|
* serialNumberからオファーを除外する
|
|
@@ -32,7 +32,7 @@ export declare class MovieTheaterRepo {
|
|
|
32
32
|
/**
|
|
33
33
|
* 施設を保管する
|
|
34
34
|
*/
|
|
35
|
-
saveMovieTheater(params: Pick<factory.place.movieTheater.IPlace, 'additionalProperty' | 'branchCode' | '
|
|
35
|
+
saveMovieTheater(params: Pick<factory.place.movieTheater.IPlace, 'additionalProperty' | 'branchCode' | 'id' | 'kanaName' | 'name' | 'offers' | 'parentOrganization' | 'project' | 'typeOf' | 'url'> & {
|
|
36
36
|
hasEntranceGate?: never;
|
|
37
37
|
}): Promise<{
|
|
38
38
|
id: string;
|
|
@@ -96,12 +96,14 @@ export declare class MovieTheaterRepo {
|
|
|
96
96
|
}): Promise<void>;
|
|
97
97
|
getCursor(conditions: FilterQuery<any>, projection: any): import("mongoose").Cursor<import("mongoose").Document<unknown, Record<string, never>, IDocType, import("../mongoose/virtuals").IVirtuals, {}> & Omit<import("@chevre/factory/lib/chevre/place/movieTheater").IPlace, "id"> & {
|
|
98
98
|
hasPOS?: factory.place.movieTheater.IPOS[];
|
|
99
|
+
hasEntranceGate?: factory.place.movieTheater.IEntranceGate[];
|
|
99
100
|
} & {
|
|
100
101
|
_id: import("mongoose").Types.ObjectId;
|
|
101
102
|
} & {
|
|
102
103
|
__v: number;
|
|
103
104
|
}, import("mongoose").QueryOptions<IDocType>, (import("mongoose").Document<unknown, Record<string, never>, IDocType, import("../mongoose/virtuals").IVirtuals, {}> & Omit<import("@chevre/factory/lib/chevre/place/movieTheater").IPlace, "id"> & {
|
|
104
105
|
hasPOS?: factory.place.movieTheater.IPOS[];
|
|
106
|
+
hasEntranceGate?: factory.place.movieTheater.IEntranceGate[];
|
|
105
107
|
} & {
|
|
106
108
|
_id: import("mongoose").Types.ObjectId;
|
|
107
109
|
} & {
|
|
@@ -5,7 +5,9 @@ const factory_1 = require("../../factory");
|
|
|
5
5
|
const settings_1 = require("../../settings");
|
|
6
6
|
const civicStructure_1 = require("../mongoose/schemas/civicStructure");
|
|
7
7
|
const AVAILABLE_PROJECT_FIELDS = [
|
|
8
|
-
'additionalProperty', 'branchCode',
|
|
8
|
+
'additionalProperty', 'branchCode',
|
|
9
|
+
// 'hasEntranceGate',
|
|
10
|
+
'kanaName', 'name',
|
|
9
11
|
'offers', 'parentOrganization', 'project', 'telephone', 'typeOf', 'url',
|
|
10
12
|
'offers.typeOf',
|
|
11
13
|
'offers.eligibleQuantity',
|
|
@@ -12,43 +12,36 @@ interface IOperator {
|
|
|
12
12
|
/**
|
|
13
13
|
* 施設のPOSリポジトリ
|
|
14
14
|
*/
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class POSRepo {
|
|
16
16
|
readonly operator: IOperator;
|
|
17
17
|
private readonly civicStructureModel;
|
|
18
18
|
constructor(connection: Connection, operater: IOperator);
|
|
19
|
-
|
|
19
|
+
findPOS(params: {
|
|
20
|
+
projectId: string;
|
|
20
21
|
limit?: number;
|
|
21
22
|
page?: number;
|
|
22
23
|
branchCode?: {
|
|
23
24
|
$eq?: string;
|
|
24
25
|
$regex?: string;
|
|
25
26
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
}): Promise<Pick<factory.place.movieTheater.IPOS, 'branchCode' | 'name' | 'id'>[]>;
|
|
32
|
-
createByBranchCode(params: Pick<factory.place.movieTheater.IPOS, 'branchCode' | 'name'> & {
|
|
27
|
+
}): Promise<Pick<factory.place.movieTheater.IPOS, 'branchCode' | 'name'>[]>;
|
|
28
|
+
private countPOS;
|
|
29
|
+
addPOSByBranchCode(params: Pick<factory.place.movieTheater.IPOS, 'branchCode' | 'name'> & {
|
|
33
30
|
project: {
|
|
34
31
|
id: string;
|
|
35
32
|
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}>;
|
|
39
|
-
|
|
33
|
+
}, options: {
|
|
34
|
+
maxNumPOS: number;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
updatePOSByBranchCode(params: Pick<factory.place.movieTheater.IPOS, 'branchCode' | 'name'> & {
|
|
40
37
|
project: {
|
|
41
38
|
id: string;
|
|
42
39
|
};
|
|
43
|
-
}): Promise<
|
|
44
|
-
|
|
45
|
-
}>;
|
|
46
|
-
deleteByBranchCode(params: Pick<factory.place.movieTheater.IPOS, 'branchCode'> & {
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
deletePOSByBranchCode(params: Pick<factory.place.movieTheater.IPOS, 'branchCode'> & {
|
|
47
42
|
project: {
|
|
48
43
|
id: string;
|
|
49
44
|
};
|
|
50
|
-
}): Promise<
|
|
51
|
-
id: string;
|
|
52
|
-
}>;
|
|
45
|
+
}): Promise<void>;
|
|
53
46
|
}
|
|
54
47
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.POSRepo = void 0;
|
|
4
4
|
const mongoose_1 = require("mongoose");
|
|
5
5
|
const factory_1 = require("../../factory");
|
|
6
6
|
const settings_1 = require("../../settings");
|
|
@@ -8,21 +8,15 @@ const civicStructure_1 = require("../mongoose/schemas/civicStructure");
|
|
|
8
8
|
/**
|
|
9
9
|
* 施設のPOSリポジトリ
|
|
10
10
|
*/
|
|
11
|
-
class
|
|
11
|
+
class POSRepo {
|
|
12
12
|
operator;
|
|
13
13
|
civicStructureModel;
|
|
14
14
|
constructor(connection, operater) {
|
|
15
15
|
this.civicStructureModel = connection.model(civicStructure_1.modelName, (0, civicStructure_1.createSchema)());
|
|
16
16
|
this.operator = operater;
|
|
17
17
|
}
|
|
18
|
-
async
|
|
19
|
-
const matchStages = [
|
|
20
|
-
{ $match: { _id: { $eq: new mongoose_1.Types.ObjectId(this.operator.id) } } }
|
|
21
|
-
];
|
|
22
|
-
const projectIdEq = params.project?.id?.$eq;
|
|
23
|
-
if (typeof projectIdEq === 'string') {
|
|
24
|
-
matchStages.push({ $match: { 'project.id': { $eq: projectIdEq } } });
|
|
25
|
-
}
|
|
18
|
+
async findPOS(params) {
|
|
19
|
+
const matchStages = [];
|
|
26
20
|
const branchCodeEq = params.branchCode?.$eq;
|
|
27
21
|
if (typeof branchCodeEq === 'string') {
|
|
28
22
|
matchStages.push({ $match: { 'hasPOS.branchCode': { $eq: branchCodeEq } } });
|
|
@@ -32,6 +26,13 @@ class HasPOSRepo {
|
|
|
32
26
|
matchStages.push({ $match: { 'hasPOS.branchCode': { $regex: new RegExp(branchCodeRegex) } } });
|
|
33
27
|
}
|
|
34
28
|
const aggregate = this.civicStructureModel.aggregate([
|
|
29
|
+
// まず施設ドキュメントで絞る
|
|
30
|
+
{
|
|
31
|
+
$match: {
|
|
32
|
+
_id: { $eq: new mongoose_1.Types.ObjectId(this.operator.id) },
|
|
33
|
+
'project.id': { $eq: params.projectId }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
35
36
|
{
|
|
36
37
|
$unwind: {
|
|
37
38
|
path: '$hasPOS'
|
|
@@ -42,54 +43,90 @@ class HasPOSRepo {
|
|
|
42
43
|
{
|
|
43
44
|
$project: {
|
|
44
45
|
_id: 0,
|
|
45
|
-
id: '$hasPOS.branchCode',
|
|
46
46
|
branchCode: '$hasPOS.branchCode',
|
|
47
|
-
name: '$hasPOS.name'
|
|
47
|
+
name: '$hasPOS.name',
|
|
48
|
+
// ...((!excludePOSId) && { id: '$hasPOS.branchCode' }) // discontinue(2026-09-22~)
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
]);
|
|
51
52
|
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
52
53
|
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
53
|
-
aggregate.
|
|
54
|
-
.
|
|
54
|
+
aggregate.skip(params.limit * (page - 1))
|
|
55
|
+
.limit(params.limit);
|
|
55
56
|
}
|
|
56
57
|
return aggregate.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
57
58
|
.exec();
|
|
58
59
|
}
|
|
59
|
-
async
|
|
60
|
+
async countPOS() {
|
|
61
|
+
const posCount = (await this.civicStructureModel.aggregate([
|
|
62
|
+
{
|
|
63
|
+
$match: {
|
|
64
|
+
_id: { $eq: new mongoose_1.Types.ObjectId(this.operator.id) },
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
$project: {
|
|
69
|
+
posCount: {
|
|
70
|
+
$cond: {
|
|
71
|
+
if: { $isArray: '$hasPOS' },
|
|
72
|
+
then: { $size: '$hasPOS' },
|
|
73
|
+
else: 0
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]).option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
79
|
+
.exec()).at(0)?.posCount;
|
|
80
|
+
if (typeof posCount !== 'number') {
|
|
81
|
+
throw new factory_1.factory.errors.NotFound(factory_1.factory.placeType.MovieTheater);
|
|
82
|
+
}
|
|
83
|
+
return { posCount };
|
|
84
|
+
}
|
|
85
|
+
async addPOSByBranchCode(params, options) {
|
|
60
86
|
// 施設存在確認
|
|
61
|
-
|
|
87
|
+
const movieTheaterDoc = await this.civicStructureModel.findOne({
|
|
62
88
|
'project.id': { $eq: params.project.id },
|
|
63
89
|
_id: { $eq: this.operator.id }
|
|
64
|
-
}, { _id: 1
|
|
90
|
+
}, { _id: 1 })
|
|
91
|
+
.lean()
|
|
65
92
|
.exec();
|
|
66
|
-
if (
|
|
93
|
+
if (movieTheaterDoc === null) {
|
|
67
94
|
throw new factory_1.factory.errors.NotFound(factory_1.factory.placeType.MovieTheater);
|
|
68
95
|
}
|
|
96
|
+
// 最大数検証(2026-09-20~)
|
|
97
|
+
const { maxNumPOS } = options;
|
|
69
98
|
const creatingPOS = {
|
|
70
|
-
// 互換性維持対応としてidを保管
|
|
71
|
-
id: params.branchCode, //
|
|
99
|
+
// // 互換性維持対応としてidを保管
|
|
100
|
+
// id: params.branchCode as any, // discontinue(2026-09-22~)
|
|
72
101
|
branchCode: params.branchCode,
|
|
73
102
|
name: params.name
|
|
74
103
|
};
|
|
75
|
-
doc = await this.civicStructureModel.findOneAndUpdate({
|
|
104
|
+
const doc = await this.civicStructureModel.findOneAndUpdate({
|
|
76
105
|
'project.id': { $eq: params.project.id },
|
|
77
106
|
_id: { $eq: this.operator.id },
|
|
78
|
-
'hasPOS.branchCode': { $ne: params.branchCode }
|
|
107
|
+
'hasPOS.branchCode': { $ne: params.branchCode },
|
|
108
|
+
// 配列の長さが上限未満であることをアトミックに確認
|
|
109
|
+
$expr: {
|
|
110
|
+
$lt: [{ $size: { $ifNull: ['$hasPOS', []] } }, maxNumPOS] // 最大数担保(2026-09-20~)
|
|
111
|
+
}
|
|
79
112
|
}, {
|
|
80
113
|
$push: { hasPOS: creatingPOS }
|
|
81
114
|
}, {
|
|
82
|
-
new: true,
|
|
83
115
|
projection: { _id: 1 }
|
|
84
116
|
})
|
|
117
|
+
.lean()
|
|
85
118
|
.exec();
|
|
86
119
|
// 存在しなければID重複
|
|
87
120
|
if (doc === null) {
|
|
121
|
+
const { posCount } = await this.countPOS();
|
|
122
|
+
if (posCount >= maxNumPOS) {
|
|
123
|
+
throw new factory_1.factory.errors.Argument('operator.id', 'maxNumPOS exceeded');
|
|
124
|
+
}
|
|
125
|
+
// 上限以下で追加できない場合は「すでに登録済み」
|
|
88
126
|
throw new factory_1.factory.errors.AlreadyInUse('hasPOS', ['id']);
|
|
89
127
|
}
|
|
90
|
-
return doc.toObject({ virtuals: true });
|
|
91
128
|
}
|
|
92
|
-
async
|
|
129
|
+
async updatePOSByBranchCode(params) {
|
|
93
130
|
const doc = await this.civicStructureModel.findOneAndUpdate({
|
|
94
131
|
'project.id': { $eq: params.project.id },
|
|
95
132
|
_id: { $eq: this.operator.id },
|
|
@@ -107,13 +144,13 @@ class HasPOSRepo {
|
|
|
107
144
|
],
|
|
108
145
|
projection: { _id: 1 }
|
|
109
146
|
})
|
|
147
|
+
.lean()
|
|
110
148
|
.exec();
|
|
111
149
|
if (doc === null) {
|
|
112
150
|
throw new factory_1.factory.errors.NotFound('hasPOS');
|
|
113
151
|
}
|
|
114
|
-
return doc.toObject({ virtuals: true });
|
|
115
152
|
}
|
|
116
|
-
async
|
|
153
|
+
async deletePOSByBranchCode(params) {
|
|
117
154
|
const doc = await this.civicStructureModel.findOneAndUpdate({
|
|
118
155
|
'project.id': { $eq: params.project.id },
|
|
119
156
|
_id: { $eq: this.operator.id },
|
|
@@ -123,11 +160,11 @@ class HasPOSRepo {
|
|
|
123
160
|
}, {
|
|
124
161
|
projection: { _id: 1 }
|
|
125
162
|
})
|
|
163
|
+
.lean()
|
|
126
164
|
.exec();
|
|
127
165
|
if (doc === null) {
|
|
128
166
|
throw new factory_1.factory.errors.NotFound('hasPOS');
|
|
129
167
|
}
|
|
130
|
-
return doc.toObject({ virtuals: true });
|
|
131
168
|
}
|
|
132
169
|
}
|
|
133
|
-
exports.
|
|
170
|
+
exports.POSRepo = POSRepo;
|
|
@@ -84,7 +84,28 @@ export declare class ScreeningRoomRepo {
|
|
|
84
84
|
id: string;
|
|
85
85
|
};
|
|
86
86
|
}): Promise<mongo.DeleteResult>;
|
|
87
|
-
|
|
87
|
+
/**
|
|
88
|
+
* ルーム検索
|
|
89
|
+
* sectionCount,seatCountのprojectが可能
|
|
90
|
+
* sortはbranchCode: factory.sortType.Ascendingで固定
|
|
91
|
+
*/
|
|
92
|
+
projectRoomFields(params: Pick<factory.place.screeningRoom.ISearchConditions, '$projection' | 'branchCode' | 'containedInPlace' | 'parentOrganization'> & {
|
|
93
|
+
/**
|
|
94
|
+
* プロジェクト指定は必須
|
|
95
|
+
*/
|
|
96
|
+
project: {
|
|
97
|
+
id: {
|
|
98
|
+
$eq: string;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
limit: number;
|
|
102
|
+
page: number;
|
|
103
|
+
}, options: {
|
|
104
|
+
/**
|
|
105
|
+
* 将来的にcontainedInPlace最小化のためオプション採用(2026-09-17~)
|
|
106
|
+
*/
|
|
107
|
+
minimizeContainedInPlace: boolean;
|
|
108
|
+
}): Promise<Pick<factory.place.screeningRoom.IPlace, 'additionalProperty' | 'address' | 'branchCode' | 'containedInPlace' | 'maximumAttendeeCapacity' | 'name' | 'openSeatingAllowed' | 'typeOf' | 'seatCount' | 'sectionCount'>[]>;
|
|
88
109
|
findRooms(params: Omit<factory.place.screeningRoom.ISearchConditions, '$projection'>): Promise<Pick<factory.place.screeningRoom.IPlace, 'additionalProperty' | 'address' | 'branchCode' | 'name' | 'openSeatingAllowed' | 'maximumAttendeeCapacity'>[]>;
|
|
89
110
|
/**
|
|
90
111
|
* セクションと座席も含めたひとつのルームを取得する
|
|
@@ -128,7 +149,7 @@ export declare class ScreeningRoomRepo {
|
|
|
128
149
|
description?: any;
|
|
129
150
|
openingHoursSpecification?: any;
|
|
130
151
|
smokingAllowed?: boolean;
|
|
131
|
-
containsPlace: (Pick<import("@chevre/factory/lib/chevre/place/screeningRoomSection").IPlace, "name" | "typeOf" | "
|
|
152
|
+
containsPlace: (Pick<import("@chevre/factory/lib/chevre/place/screeningRoomSection").IPlace, "name" | "typeOf" | "branchCode" | "additionalProperty"> & {
|
|
132
153
|
containsPlace?: factory.place.seat.IPlace[];
|
|
133
154
|
})[];
|
|
134
155
|
} & {
|
|
@@ -139,7 +160,7 @@ export declare class ScreeningRoomRepo {
|
|
|
139
160
|
description?: any;
|
|
140
161
|
openingHoursSpecification?: any;
|
|
141
162
|
smokingAllowed?: boolean;
|
|
142
|
-
containsPlace: (Pick<import("@chevre/factory/lib/chevre/place/screeningRoomSection").IPlace, "name" | "typeOf" | "
|
|
163
|
+
containsPlace: (Pick<import("@chevre/factory/lib/chevre/place/screeningRoomSection").IPlace, "name" | "typeOf" | "branchCode" | "additionalProperty"> & {
|
|
143
164
|
containsPlace?: factory.place.seat.IPlace[];
|
|
144
165
|
})[];
|
|
145
166
|
} & {
|