@chevre/domain 24.0.0-alpha.44 → 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.
@@ -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.ITicket, 'dateUsed'>;
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: IReservedTicket;
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.IPriceSpecification<factory.reservationType.EventReservation>;
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.ITicket;
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.validRateLimit?.scope;
425
- const unitInSeconds = reservation.reservedTicket.ticketType.validRateLimit?.unitInSeconds;
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<AvailableReservationType>, 'identifier'> & {
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: ['additionalTicketText', 'checkedIn', 'reservationStatus', 'reservedTicket']
87
+ inclusion: [
88
+ 'additionalTicketText', 'checkedIn', 'reservationStatus',
89
+ // 'reservedTicket'
90
+ ]
61
91
  });
62
- const { id, additionalTicketText, checkedIn, reservationStatus, reservedTicket } = reservationFromRepo;
92
+ const { id, additionalTicketText, checkedIn, reservationStatus } = reservationFromRepo;
63
93
  const reservation = {
64
94
  id, reservationStatus,
65
95
  reservedTicket: {
66
- ticketType: {
67
- identifier: reservedTicket.ticketType.identifier,
68
- name: { ja: reservedTicket.ticketType.name?.ja }
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
- identifier: reservedTicket.ticketType.identifier,
78
- typeOf: reservedTicket.ticketType.typeOf,
79
- ...(typeof reservedTicket.ticketType.id === 'string') ? { id: reservedTicket.ticketType.id } : undefined
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.5",
15
- "@cinerino/sdk": "13.2.0",
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.44"
102
+ "version": "24.0.0-alpha.45"
103
103
  }