@chevre/domain 24.0.0-alpha.43 → 24.0.0-alpha.45
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/repo/place/seat.d.ts +17 -11
- package/lib/chevre/repo/place/seat.js +12 -0
- package/lib/chevre/repo/place/section.js +6 -0
- package/lib/chevre/repo/reservation.d.ts +1 -1
- package/lib/chevre/repo/reservation.js +1 -1
- package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.d.ts +2 -5
- package/lib/chevre/service/assetTransaction/reserve/start/factory/price.d.ts +1 -1
- package/lib/chevre/service/reserve/cancelReservation.d.ts +1 -1
- package/lib/chevre/service/reserve/cancelReservation.js +2 -2
- package/lib/chevre/service/reserve/findByCode.d.ts +3 -1
- package/lib/chevre/service/reserve/findByCode.js +38 -6
- package/lib/chevre/service/reserve/useReservation.js +6 -5
- package/package.json +3 -3
|
@@ -128,23 +128,29 @@ export declare class SeatRepo {
|
|
|
128
128
|
/**
|
|
129
129
|
* 座席コード
|
|
130
130
|
*/
|
|
131
|
-
branchCode
|
|
132
|
-
$in
|
|
131
|
+
branchCode: {
|
|
132
|
+
$in: string[];
|
|
133
133
|
};
|
|
134
|
-
containedInPlace
|
|
134
|
+
containedInPlace: {
|
|
135
135
|
/**
|
|
136
136
|
* セクションコード
|
|
137
137
|
*/
|
|
138
|
-
branchCode
|
|
139
|
-
$in
|
|
138
|
+
branchCode: {
|
|
139
|
+
$in: string[];
|
|
140
140
|
};
|
|
141
|
-
containedInPlace
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
containedInPlace: {
|
|
142
|
+
/**
|
|
143
|
+
* ルームコード
|
|
144
|
+
*/
|
|
145
|
+
branchCode: {
|
|
146
|
+
$eq: string;
|
|
144
147
|
};
|
|
145
|
-
containedInPlace
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
containedInPlace: {
|
|
149
|
+
/**
|
|
150
|
+
* 施設コード
|
|
151
|
+
*/
|
|
152
|
+
branchCode: {
|
|
153
|
+
$eq: string;
|
|
148
154
|
};
|
|
149
155
|
};
|
|
150
156
|
};
|
|
@@ -542,6 +542,12 @@ class SeatRepo {
|
|
|
542
542
|
// ルーム指定の座席検索として再定義(2025-04-28~)
|
|
543
543
|
async projectSeatsByScreeningRoom(params) {
|
|
544
544
|
const { limit, page, project, containedInPlace, screeningRoom, $projection, ...searchSeatsConditions } = params;
|
|
545
|
+
if (typeof screeningRoom.branchCode.$eq !== 'string' || screeningRoom.branchCode.$eq === '') {
|
|
546
|
+
throw new factory.errors.ArgumentNull('screeningRoom.branchCode.$eq');
|
|
547
|
+
}
|
|
548
|
+
if (typeof screeningRoom.containedInPlace.branchCode.$eq !== 'string' || screeningRoom.containedInPlace.branchCode.$eq === '') {
|
|
549
|
+
throw new factory.errors.ArgumentNull('screeningRoom.containedInPlace.branchCode.$eq');
|
|
550
|
+
}
|
|
545
551
|
// まずルーム検索
|
|
546
552
|
const screeningRoomDoc = await this.placeModel.findOne({
|
|
547
553
|
typeOf: { $eq: factory.placeType.ScreeningRoom },
|
|
@@ -706,10 +712,16 @@ class SeatRepo {
|
|
|
706
712
|
matchStages.push({ $match: { 'project.id': { $eq: projectIdEq } } });
|
|
707
713
|
}
|
|
708
714
|
const branchCodeEq = params.containedInPlace?.containedInPlace?.branchCode?.$eq;
|
|
715
|
+
if (typeof branchCodeEq !== 'string' || branchCodeEq === '') {
|
|
716
|
+
throw new factory.errors.ArgumentNull('containedInPlace.containedInPlace.branchCode.$eq');
|
|
717
|
+
}
|
|
709
718
|
if (typeof branchCodeEq === 'string') {
|
|
710
719
|
matchStages.push({ $match: { branchCode: { $eq: branchCodeEq } } });
|
|
711
720
|
}
|
|
712
721
|
const containedInPlaceBranchCodeEq = params.containedInPlace?.containedInPlace?.containedInPlace?.branchCode?.$eq;
|
|
722
|
+
if (typeof containedInPlaceBranchCodeEq !== 'string' || containedInPlaceBranchCodeEq === '') {
|
|
723
|
+
throw new factory.errors.ArgumentNull('containedInPlace.containedInPlace.containedInPlace.branchCode.$eq');
|
|
724
|
+
}
|
|
713
725
|
if (typeof containedInPlaceBranchCodeEq === 'string') {
|
|
714
726
|
matchStages.push({
|
|
715
727
|
$match: { 'containedInPlace.branchCode': { $exists: true, $eq: containedInPlaceBranchCodeEq } }
|
|
@@ -520,6 +520,12 @@ class SectionRepo {
|
|
|
520
520
|
// >
|
|
521
521
|
) {
|
|
522
522
|
const { limit, page, projectId, sellerId, movieTheaterCode, roomCode } = params;
|
|
523
|
+
if (typeof movieTheaterCode !== 'string' || movieTheaterCode === '') {
|
|
524
|
+
throw new factory.errors.ArgumentNull('movieTheaterCode');
|
|
525
|
+
}
|
|
526
|
+
if (typeof roomCode !== 'string' || roomCode === '') {
|
|
527
|
+
throw new factory.errors.ArgumentNull('roomCode');
|
|
528
|
+
}
|
|
523
529
|
const matchStageBeforeUnwind = {
|
|
524
530
|
$match: {
|
|
525
531
|
'project.id': { $eq: projectId },
|
|
@@ -13,7 +13,7 @@ export type ICreatingReservation<T extends factory.reservationType> = T extends
|
|
|
13
13
|
type IKeyOfProjection = keyof factory.reservation.IReservation<factory.reservationType.EventReservation> | 'reservedTicket.dateUsed' | 'reservationFor.id' | 'reservationFor.typeOf';
|
|
14
14
|
export type IAttendedReservation = Pick<factory.reservation.IReservation<factory.reservationType.EventReservation>, 'id' | 'typeOf' | 'project' | 'modifiedTime'> & {
|
|
15
15
|
reservationFor: Pick<factory.reservation.IReservationFor<factory.reservationType.EventReservation>, 'id' | 'typeOf'>;
|
|
16
|
-
reservedTicket: Pick<factory.reservation.
|
|
16
|
+
reservedTicket: Pick<factory.reservation.eventReservation.IReservedTicket, 'dateUsed'>;
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* 予約リポジトリ
|
|
@@ -884,7 +884,7 @@ class ReservationRepo {
|
|
|
884
884
|
switch (subReservation.typeOf) {
|
|
885
885
|
case factory.reservationType.EventReservation:
|
|
886
886
|
setOnInsert = {
|
|
887
|
-
...subReservation,
|
|
887
|
+
...subReservation, // priceは廃止予定だが、互換性維持対応としてひとまず型を強制的に合わせる
|
|
888
888
|
_id: subReservation.id,
|
|
889
889
|
bookingTime: params.bookingTime,
|
|
890
890
|
checkedIn: false,
|
|
@@ -2,10 +2,7 @@ import * as factory from '../../../../../factory';
|
|
|
2
2
|
import { IMinimizedIndividualEvent } from '../../../../../factory/event';
|
|
3
3
|
import { IAcceptedAddOn } from './price';
|
|
4
4
|
type IObjectSubReservation = factory.assetTransaction.reserve.IObjectSubReservation;
|
|
5
|
-
|
|
6
|
-
* 確定時予約のITicket
|
|
7
|
-
*/
|
|
8
|
-
type IReservedTicket = Pick<factory.reservation.ITicket, 'identifier' | 'issuedBy' | 'ticketType' | 'ticketedSeat' | 'typeOf'>;
|
|
5
|
+
type IReservedTicket = Pick<factory.assetTransaction.reserve.ISubReservationReservedTicket, 'identifier' | 'issuedBy' | 'ticketType' | 'ticketedSeat' | 'typeOf'>;
|
|
9
6
|
declare function createReservedTicket(params: {
|
|
10
7
|
id: string;
|
|
11
8
|
acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
|
|
@@ -43,7 +40,7 @@ declare function createReservation(params: {
|
|
|
43
40
|
};
|
|
44
41
|
id: string;
|
|
45
42
|
reservationFor: IMinimizedIndividualEvent;
|
|
46
|
-
reservedTicket:
|
|
43
|
+
reservedTicket: factory.assetTransaction.reserve.ISubReservationReservedTicket;
|
|
47
44
|
additionalProperty?: factory.propertyValue.IPropertyValue<string>[];
|
|
48
45
|
additionalTicketText?: string;
|
|
49
46
|
ticketOffer: factory.product.ITicketOffer;
|
|
@@ -14,4 +14,4 @@ export declare function createPrice(params: {
|
|
|
14
14
|
seatPriceComponent: factory.place.seat.IPriceComponent[];
|
|
15
15
|
acceptedAddOns: IAcceptedAddOn[];
|
|
16
16
|
appliesToMovieTicket?: factory.assetTransaction.reserve.IAcceptedAppliesToMovieTicket;
|
|
17
|
-
}): factory.reservation.
|
|
17
|
+
}): factory.reservation.eventReservation.IPrice;
|
|
@@ -36,7 +36,7 @@ declare function processUnlockOfferRateLimit(params: {
|
|
|
36
36
|
};
|
|
37
37
|
reservation: {
|
|
38
38
|
reservationNumber: string;
|
|
39
|
-
reservedTicket: factory.reservation.
|
|
39
|
+
reservedTicket: factory.reservation.eventReservation.IReservedTicket;
|
|
40
40
|
};
|
|
41
41
|
reservationFor: factory.assetTransaction.reserve.IReservationFor;
|
|
42
42
|
}): (repos: {
|
|
@@ -421,8 +421,8 @@ function processUnlockSeat(params) {
|
|
|
421
421
|
function processUnlockOfferRateLimit(params) {
|
|
422
422
|
return async (repos) => {
|
|
423
423
|
const reservation = params.reservation;
|
|
424
|
-
const scope = reservation.reservedTicket.ticketType
|
|
425
|
-
const unitInSeconds = reservation.reservedTicket.ticketType
|
|
424
|
+
const scope = reservation.reservedTicket.ticketType?.validRateLimit?.scope;
|
|
425
|
+
const unitInSeconds = reservation.reservedTicket.ticketType?.validRateLimit?.unitInSeconds;
|
|
426
426
|
if (typeof scope === 'string' && typeof unitInSeconds === 'number') {
|
|
427
427
|
const rateLimitKey = {
|
|
428
428
|
project: { id: params.project.id },
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as factory from '../../factory';
|
|
2
|
+
import type { AcceptedOfferRepo } from '../../repo/acceptedOffer';
|
|
2
3
|
import type { AuthorizationRepo } from '../../repo/authorization';
|
|
3
4
|
import type { OrderRepo } from '../../repo/order';
|
|
4
5
|
import type { ReservationRepo } from '../../repo/reservation';
|
|
5
6
|
type AvailableReservationType = factory.reservationType.EventReservation;
|
|
6
7
|
type IReservationResult = Pick<factory.reservation.IReservation<AvailableReservationType>, 'id' | 'additionalTicketText' | 'checkedIn' | 'reservationStatus'> & {
|
|
7
8
|
reservedTicket: {
|
|
8
|
-
ticketType: Pick<factory.reservation.ITicketType
|
|
9
|
+
ticketType: Pick<factory.reservation.eventReservation.ITicketType, 'identifier'> & {
|
|
9
10
|
name: {
|
|
10
11
|
ja?: string;
|
|
11
12
|
};
|
|
@@ -28,6 +29,7 @@ declare function findByCode(params: {
|
|
|
28
29
|
id?: string;
|
|
29
30
|
};
|
|
30
31
|
}): (repos: {
|
|
32
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
31
33
|
authorization: AuthorizationRepo;
|
|
32
34
|
order: OrderRepo;
|
|
33
35
|
reservation: ReservationRepo;
|
|
@@ -38,6 +38,7 @@ function findByCode(params) {
|
|
|
38
38
|
project: { id: params.project.id },
|
|
39
39
|
code: params.code
|
|
40
40
|
});
|
|
41
|
+
let ticketType;
|
|
41
42
|
switch (authorization.object.typeOf) {
|
|
42
43
|
case factory.order.OrderType.Order: {
|
|
43
44
|
const { orderNumber } = authorization.object;
|
|
@@ -49,6 +50,32 @@ function findByCode(params) {
|
|
|
49
50
|
reservationId,
|
|
50
51
|
seller: params.seller
|
|
51
52
|
});
|
|
53
|
+
const acceptedOffer = (await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
54
|
+
limit: 1,
|
|
55
|
+
page: 1,
|
|
56
|
+
// $slice?: [number, number];
|
|
57
|
+
orderNumber: { $eq: orderNumber },
|
|
58
|
+
project: { id: { $eq: params.project.id } },
|
|
59
|
+
acceptedOffers: {
|
|
60
|
+
itemOffered: {
|
|
61
|
+
id: { $eq: reservationId }
|
|
62
|
+
// typeOf?: { $in?: factory.order.IItemOffered['typeOf'][] };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}, ['itemOffered'])).shift();
|
|
66
|
+
if (acceptedOffer === undefined) {
|
|
67
|
+
throw new factory.errors.NotFound('acceptedOffer');
|
|
68
|
+
}
|
|
69
|
+
if (acceptedOffer.itemOffered.typeOf !== factory.reservationType.EventReservation) {
|
|
70
|
+
throw new factory.errors.Argument('id', `itemOffered.typeOf must be ${factory.reservationType.EventReservation}`);
|
|
71
|
+
}
|
|
72
|
+
ticketType = {
|
|
73
|
+
identifier: acceptedOffer.itemOffered.reservedTicket.ticketType.identifier,
|
|
74
|
+
name: { ja: acceptedOffer.itemOffered.reservedTicket.ticketType.name?.ja }
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw new factory.errors.NotFound('orderNumber');
|
|
52
79
|
}
|
|
53
80
|
break;
|
|
54
81
|
}
|
|
@@ -57,16 +84,21 @@ function findByCode(params) {
|
|
|
57
84
|
}
|
|
58
85
|
const reservationFromRepo = await repos.reservation.projectFieldsById({
|
|
59
86
|
id: reservationId,
|
|
60
|
-
inclusion: [
|
|
87
|
+
inclusion: [
|
|
88
|
+
'additionalTicketText', 'checkedIn', 'reservationStatus',
|
|
89
|
+
// 'reservedTicket'
|
|
90
|
+
]
|
|
61
91
|
});
|
|
62
|
-
const { id, additionalTicketText, checkedIn, reservationStatus
|
|
92
|
+
const { id, additionalTicketText, checkedIn, reservationStatus } = reservationFromRepo;
|
|
63
93
|
const reservation = {
|
|
64
94
|
id, reservationStatus,
|
|
65
95
|
reservedTicket: {
|
|
66
|
-
ticketType
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
96
|
+
// ticketTypeは注文を参照する(2026-03-25~)
|
|
97
|
+
// ticketType: {
|
|
98
|
+
// identifier: reservedTicket.ticketType.identifier,
|
|
99
|
+
// name: { ja: reservedTicket.ticketType.name?.ja }
|
|
100
|
+
// },
|
|
101
|
+
ticketType
|
|
70
102
|
},
|
|
71
103
|
...(typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined,
|
|
72
104
|
...(typeof checkedIn === 'boolean') ? { checkedIn } : undefined
|
|
@@ -73,11 +73,12 @@ function useReservation(params) {
|
|
|
73
73
|
reservationFor: { id: reservation.reservationFor.id, typeOf: reservation.reservationFor.typeOf },
|
|
74
74
|
reservedTicket: {
|
|
75
75
|
typeOf: reservedTicket.typeOf,
|
|
76
|
-
ticketType
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
76
|
+
// discontinue ticketType(2026-03-25~)
|
|
77
|
+
// ticketType: {
|
|
78
|
+
// identifier: reservedTicket.ticketType.identifier,
|
|
79
|
+
// typeOf: reservedTicket.ticketType.typeOf,
|
|
80
|
+
// ...(typeof reservedTicket.ticketType.id === 'string') ? { id: reservedTicket.ticketType.id } : undefined
|
|
81
|
+
// },
|
|
81
82
|
...(typeof reservedTicket.identifier === 'string') ? { identifier: reservedTicket.identifier } : undefined,
|
|
82
83
|
...(typeof reservedTicket.ticketedSeat?.typeOf === 'string') ? { ticketedSeat: reservedTicket.ticketedSeat } : undefined
|
|
83
84
|
}
|
package/package.json
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-cognito-identity-provider": "3.600.0",
|
|
13
13
|
"@aws-sdk/credential-providers": "3.600.0",
|
|
14
|
-
"@chevre/factory": "6.0.0-alpha.
|
|
15
|
-
"@cinerino/sdk": "13.
|
|
14
|
+
"@chevre/factory": "6.0.0-alpha.8",
|
|
15
|
+
"@cinerino/sdk": "13.3.0",
|
|
16
16
|
"@motionpicture/coa-service": "9.6.0",
|
|
17
17
|
"@motionpicture/gmo-service": "5.4.0-alpha.1",
|
|
18
18
|
"@sendgrid/client": "8.1.4",
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"postversion": "git push origin --tags",
|
|
100
100
|
"prepublishOnly": "npm run clean && npm run build"
|
|
101
101
|
},
|
|
102
|
-
"version": "24.0.0-alpha.
|
|
102
|
+
"version": "24.0.0-alpha.45"
|
|
103
103
|
}
|