@sellout/models 0.0.148 → 0.0.150

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.
Files changed (75) hide show
  1. package/.dist/graphql/fragments/event.fragment.js +2 -0
  2. package/.dist/graphql/fragments/event.fragment.js.map +1 -1
  3. package/.dist/graphql/fragments/order.fragment.js +2 -0
  4. package/.dist/graphql/fragments/order.fragment.js.map +1 -1
  5. package/.dist/graphql/mutations/breakApartOrder.js +1 -0
  6. package/.dist/graphql/mutations/breakApartOrder.js.map +1 -1
  7. package/.dist/graphql/mutations/createEvent.mutation.js +2 -0
  8. package/.dist/graphql/mutations/createEvent.mutation.js.map +1 -1
  9. package/.dist/graphql/mutations/publishEvent.mutation.js +2 -0
  10. package/.dist/graphql/mutations/publishEvent.mutation.js.map +1 -1
  11. package/.dist/graphql/mutations/sendUserPhoneAuthentication.mutation.js +2 -2
  12. package/.dist/graphql/mutations/updateEvent.mutation.js +2 -0
  13. package/.dist/graphql/mutations/updateEvent.mutation.js.map +1 -1
  14. package/.dist/graphql/queries/event.query.js +2 -0
  15. package/.dist/graphql/queries/event.query.js.map +1 -1
  16. package/.dist/graphql/queries/events.query.js +2 -0
  17. package/.dist/graphql/queries/events.query.js.map +1 -1
  18. package/.dist/graphql/queries/order.query.js +2 -0
  19. package/.dist/graphql/queries/order.query.js.map +1 -1
  20. package/.dist/graphql/queries/orders.query.js +1 -0
  21. package/.dist/graphql/queries/orders.query.js.map +1 -1
  22. package/.dist/graphql/queries/promoCodeVerify.query.js +1 -0
  23. package/.dist/graphql/queries/promoCodeVerify.query.js.map +1 -1
  24. package/.dist/graphql/queries/publicEvent.query.js +2 -0
  25. package/.dist/graphql/queries/publicEvent.query.js.map +1 -1
  26. package/.dist/interfaces/ICreateOrderParams.d.ts +3 -0
  27. package/.dist/interfaces/IEvent.d.ts +2 -0
  28. package/.dist/interfaces/IEvent.js.map +1 -1
  29. package/.dist/interfaces/IOrderSummary.d.ts +1 -0
  30. package/.dist/interfaces/IOrderTicket.d.ts +2 -1
  31. package/.dist/interfaces/IOrderTicket.js.map +1 -1
  32. package/.dist/interfaces/IPerformance.d.ts +2 -1
  33. package/.dist/interfaces/IScan.d.ts +1 -0
  34. package/.dist/interfaces/ITicketType.d.ts +3 -0
  35. package/.dist/schemas/Event.d.ts +33 -2
  36. package/.dist/schemas/Event.js +33 -11
  37. package/.dist/schemas/Event.js.map +1 -1
  38. package/.dist/schemas/Order.d.ts +15 -1
  39. package/.dist/schemas/Order.js +12 -3
  40. package/.dist/schemas/Order.js.map +1 -1
  41. package/.dist/sellout-proto.js +957 -36
  42. package/.dist/utils/EventUtil.d.ts +2 -1
  43. package/.dist/utils/EventUtil.js +87 -7
  44. package/.dist/utils/EventUtil.js.map +1 -1
  45. package/.dist/utils/OrderUtil.js +3 -1
  46. package/.dist/utils/OrderUtil.js.map +1 -1
  47. package/package.json +3 -3
  48. package/src/graphql/fragments/event.fragment.ts +2 -0
  49. package/src/graphql/fragments/order.fragment.ts +2 -0
  50. package/src/graphql/mutations/breakApartOrder.ts +1 -0
  51. package/src/graphql/mutations/createEvent.mutation.ts +2 -0
  52. package/src/graphql/mutations/publishEvent.mutation.ts +2 -0
  53. package/src/graphql/mutations/sendUserPhoneAuthentication.mutation.ts +2 -2
  54. package/src/graphql/mutations/updateEvent.mutation.ts +2 -0
  55. package/src/graphql/queries/event.query.ts +2 -0
  56. package/src/graphql/queries/events.query.ts +2 -0
  57. package/src/graphql/queries/order.query.ts +2 -0
  58. package/src/graphql/queries/orders.query.ts +1 -0
  59. package/src/graphql/queries/promoCodeVerify.query.ts +1 -0
  60. package/src/graphql/queries/publicEvent.query.ts +2 -0
  61. package/src/interfaces/ICreateOrderParams.ts +4 -0
  62. package/src/interfaces/IEvent.ts +4 -2
  63. package/src/interfaces/IOrderSummary.ts +1 -0
  64. package/src/interfaces/IOrderTicket.ts +2 -1
  65. package/src/interfaces/IPerformance.ts +2 -1
  66. package/src/interfaces/IScan.ts +1 -0
  67. package/src/interfaces/ITicketType.ts +4 -1
  68. package/src/proto/email.proto +21 -0
  69. package/src/proto/event.proto +5 -1
  70. package/src/proto/order.proto +4 -1
  71. package/src/proto/user.proto +1 -0
  72. package/src/schemas/Event.ts +25 -3
  73. package/src/schemas/Order.ts +12 -3
  74. package/src/utils/EventUtil.ts +113 -23
  75. package/src/utils/OrderUtil.ts +96 -94
@@ -50,12 +50,14 @@ message OrderSummaryItem {
50
50
  string seats = 3;
51
51
  string description = 4;
52
52
  string type = 5;
53
+ string days = 6;
53
54
  }
54
55
 
55
56
  message OrderRefundItem {
56
57
  string name = 0;
57
58
  string refundedAmount = 1;
58
59
  string description = 2;
60
+ string days = 3;
59
61
  }
60
62
 
61
63
  message orderSheetEmailRequest {
@@ -63,6 +65,11 @@ message orderSheetEmailRequest {
63
65
  string orgName = 1;
64
66
  string url = 2;
65
67
  }
68
+ message dayIdsTimeObj {
69
+ int32 startsAt = 0;
70
+ int32 endsAt = 1;
71
+ int32 doorsAt = 2;
72
+ }
66
73
 
67
74
  message QueueOrderReceiptEmailRequest {
68
75
  string spanContext = 0;
@@ -96,6 +103,9 @@ message QueueOrderReceiptEmailRequest {
96
103
  int32 eventStart = 29;
97
104
  int32 eventEnd = 30;
98
105
  string timezone = 31;
106
+ repeated string dayIds = 32;
107
+ repeated dayIdsTimeObj dayIdsTime = 33;
108
+ repeated dayIdsTimeObj dayIdsTimeCalendar = 34;
99
109
  }
100
110
 
101
111
  message QueueOrderQRCodeEmailRequest {
@@ -131,6 +141,9 @@ message QueueOrderQRCodeEmailRequest {
131
141
  int32 eventStart = 29;
132
142
  int32 eventEnd = 30;
133
143
  string timezone = 31;
144
+ repeated dayIdsTimeObj dayIdsTime = 32;
145
+ repeated dayIdsTimeObj dayIdsTimeCalendar = 34;
146
+
134
147
  }
135
148
 
136
149
  message QueueOrderRefundEmailRequest {
@@ -162,6 +175,10 @@ message QueueOrderRefundEmailRequest {
162
175
  string orderFeesRefunded = 25;
163
176
  string orderTotalRefunded = 26;
164
177
  string refundReason = 27;
178
+ repeated dayIdsTimeObj dayIdsTime = 28;
179
+ repeated dayIdsTimeObj dayIdsTimeCalendar = 29;
180
+
181
+
165
182
  }
166
183
 
167
184
  message QueueOrderCanceledEmailRequest {
@@ -193,6 +210,10 @@ message QueueOrderCanceledEmailRequest {
193
210
  string orderFeesRefunded = 25;
194
211
  string orderTotalRefunded = 26;
195
212
  string refundReason = 27;
213
+ repeated dayIdsTimeObj dayIdsTime = 28;
214
+ repeated dayIdsTimeObj dayIdsTimeCalendar = 29;
215
+
216
+
196
217
  }
197
218
 
198
219
  service EmailService {
@@ -36,6 +36,8 @@ message Event {
36
36
  bool salesBeginImmediately = 28;
37
37
  bool cancel = 29;
38
38
  bool taxDeduction = 30;
39
+ bool isMultipleDays = 31;
40
+ string totalDays = 32;
39
41
  }
40
42
 
41
43
  message PublicEvent {
@@ -109,6 +111,7 @@ message EventSchedule {
109
111
  message PerformanceSchedule {
110
112
  int32 doorsAt = 1;
111
113
  int32 startsAt = 2;
114
+ int32 endsAt = 3;
112
115
  }
113
116
 
114
117
  message Performance {
@@ -121,7 +124,7 @@ message Performance {
121
124
  string posterImageUrl = 7;
122
125
  string videoLink = 8;
123
126
  string songLink = 9;
124
- PerformanceSchedule schedule = 10;
127
+ repeated PerformanceSchedule schedule = 10;
125
128
  }
126
129
 
127
130
  message TicketType {
@@ -137,6 +140,7 @@ message TicketType {
137
140
  bool rollFees = 10;
138
141
  string promo = 11;
139
142
  string values = 12;
143
+ repeated string dayIds = 13;
140
144
  }
141
145
 
142
146
  message TicketTier {
@@ -52,11 +52,12 @@ message OrderTicket {
52
52
  string paymentId = 6;
53
53
  string seat = 7;
54
54
  Refund refund = 8;
55
- Scan scan = 9;
55
+ repeated Scan scan = 9;
56
56
  string state = 10;
57
57
  string qrCodeUrl = 11;
58
58
  string values=12;
59
59
  string description = 13;
60
+ repeated string dayIds = 14;
60
61
  }
61
62
 
62
63
  message OrderUpgrade {
@@ -78,6 +79,7 @@ message Scan {
78
79
  bool scanned = 0;
79
80
  int32 scannedAt = 1;
80
81
  string scannedBy = 2;
82
+ int32 startsAt = 3;
81
83
  }
82
84
 
83
85
  message Refund {
@@ -140,6 +142,7 @@ message CreateOrderTicketParams {
140
142
  string values = 6;
141
143
  string description = 7;
142
144
  string type = 8;
145
+ repeated string dayIds = 9;
143
146
 
144
147
  }
145
148
 
@@ -125,6 +125,7 @@ message UserPhoneAuthenticationRequest {
125
125
  string spanContext = 0;
126
126
  string email = 1;
127
127
  string phoneNumber = 2;
128
+ bool isLogin = 3;
128
129
  }
129
130
 
130
131
  message UserPhoneAuthenticationResponse {
@@ -228,7 +228,12 @@ const EventUpgrade = {
228
228
  },
229
229
  };
230
230
 
231
- export const PerformanceSchedule = {
231
+ export const PerformanceSchedule = [{
232
+ _id: {
233
+ type: String,
234
+ required: false,
235
+ default: shortid.generate,
236
+ },
232
237
  doorsAt: {
233
238
  type: Number,
234
239
  required: false,
@@ -237,7 +242,11 @@ export const PerformanceSchedule = {
237
242
  type: Number,
238
243
  required: false,
239
244
  },
240
- };
245
+ endsAt: {
246
+ type: Number,
247
+ required: false,
248
+ },
249
+ }];
241
250
 
242
251
  const Performance = {
243
252
  _id: {
@@ -397,7 +406,12 @@ const TicketType = {
397
406
  type: String,
398
407
  required: false,
399
408
  default: "0",
400
- },
409
+ },dayIds: [
410
+ {
411
+ type: String,
412
+ required: false
413
+ }
414
+ ]
401
415
  };
402
416
 
403
417
 
@@ -447,10 +461,18 @@ export default {
447
461
  type: String,
448
462
  required: false,
449
463
  },
464
+ isMultipleDays: {
465
+ type: Boolean,
466
+ required: true,
467
+ default: false
468
+ },
450
469
  age: {
451
470
  type: String,
452
471
  required: true,
453
472
  default: EventAgeEnum.AllAges
473
+ }, totalDays: {
474
+ type: String,
475
+ required: true,
454
476
  },
455
477
  active: {
456
478
  type: Boolean,
@@ -27,6 +27,7 @@ const Refund = {
27
27
  };
28
28
 
29
29
  const Scan = {
30
+ _id: false,
30
31
  scanned: {
31
32
  type: Boolean,
32
33
  required: true,
@@ -40,7 +41,10 @@ const Scan = {
40
41
  type: String,
41
42
  required: false,
42
43
  default: '',
43
- },
44
+ },startsAt:{
45
+ type: Number,
46
+ required: false,
47
+ }
44
48
  };
45
49
 
46
50
  const OrderTicket = {
@@ -80,7 +84,7 @@ const OrderTicket = {
80
84
  required: false,
81
85
  default: '',
82
86
  },
83
- scan: Scan,
87
+ scan: [Scan],
84
88
  refund: Refund,
85
89
  state: {
86
90
  type: String,
@@ -97,7 +101,12 @@ const OrderTicket = {
97
101
  },description:{
98
102
  type: String,
99
103
  required: false
100
- }
104
+ },dayIds:[
105
+ {
106
+ type: String,
107
+ required: false
108
+ }
109
+ ]
101
110
  };
102
111
 
103
112
  const OrderUpgrade = {
@@ -13,7 +13,9 @@ import ITicketType from "../interfaces/ITicketType";
13
13
  import IEventPromotion from "../interfaces/IEventPromotion";
14
14
  import { EventPromotionTypeEnum } from "../interfaces/IEventPromotion";
15
15
  import { DropDownEnum } from "../enums/DropDownEnum";
16
- import { SendQRCodeEnum} from "../interfaces/IEvent";
16
+ import { SendQRCodeEnum } from "../interfaces/IEvent";
17
+ import IEventSchedule from "src/interfaces/IEventSchedule";
18
+
17
19
  export default {
18
20
  /****************************************************************************************
19
21
  * Schedule
@@ -58,10 +60,10 @@ export default {
58
60
  },
59
61
  hasEnded(event): boolean {
60
62
  const {
61
- schedule: { endsAt }
63
+ schedule: { endsAt },
62
64
  } = event;
63
65
  const now = Time.now();
64
- return endsAt < now ;
66
+ return endsAt < now;
65
67
  },
66
68
  isUnavailable(event: IEvent): boolean {
67
69
  if (!event.published) return true;
@@ -75,14 +77,16 @@ export default {
75
77
  const ticketTypeCount = event.ticketTypes?.length;
76
78
  const promotionCodeTicketCount = [
77
79
  ...new Set(
78
- event.promotions?.filter((a)=>a.type==="Unlock").reduce((cur: string[], promotion) => {
79
- // (this.isOnSale(event) ? promotion.type === "Unlock" : (promotion.type === "Presale" || promotion.type === "Unlock"))
80
- // if(2!==2)
81
- return [...cur, ...promotion.ticketTypeIds];
82
- }, [])
80
+ event.promotions
81
+ ?.filter((a) => a.type === "Unlock")
82
+ .reduce((cur: string[], promotion) => {
83
+ // (this.isOnSale(event) ? promotion.type === "Unlock" : (promotion.type === "Presale" || promotion.type === "Unlock"))
84
+ // if(2!==2)
85
+ return [...cur, ...promotion.ticketTypeIds];
86
+ }, [])
83
87
  ),
84
88
  ].length;
85
-
89
+
86
90
  return ticketTypeCount === promotionCodeTicketCount;
87
91
  },
88
92
  /****************************************************************************************
@@ -92,22 +96,39 @@ export default {
92
96
  const {
93
97
  performances: [performance],
94
98
  } = event;
95
- const { schedule: { doorsAt, startsAt },
99
+ const { schedule } = performance;
100
+ let doorsAt = schedule[0].doorsAt;
101
+ let startsAt = schedule[0].startsAt;
102
+ /*const {
103
+ schedule: { doorsAt, startsAt },
96
104
  } = performance;
97
- /*
105
+ console.log
98
106
  changing to lower case
99
107
  becuse previosly it is stored with different values
100
108
  like Upon Order, Upon order
101
- */
102
- if(event.sendQRCode.toLowerCase() === SendQRCodeEnum.UponOrder.toLowerCase()){
103
- return Time.now();
109
+ */
110
+ if (
111
+ event.sendQRCode.toLowerCase() === SendQRCodeEnum.UponOrder.toLowerCase()
112
+ ) {
113
+ return Time.now();
104
114
  }
105
115
 
106
- if (event.sendQRCode.toLowerCase() === SendQRCodeEnum.TwoWeeksBefore.toLowerCase()) {
116
+ if (
117
+ event.sendQRCode.toLowerCase() ===
118
+ SendQRCodeEnum.TwoWeeksBefore.toLowerCase()
119
+ ) {
107
120
  const TWO_WEEKS = 14 * 24 * 60 * 60;
108
121
  return startsAt - TWO_WEEKS;
109
122
  }
110
123
 
124
+ // if (
125
+ // event.sendQRCode.toLowerCase() ===
126
+ // SendQRCodeEnum.DayOfShow.toLowerCase()
127
+ // ) {
128
+ // const TWO_WEEKS = 14 * 24 * 60 * 60;
129
+ // return startsAt - TWO_WEEKS;
130
+ // }
131
+
111
132
  /* if (event.sendQRCode === "Upon Order") {
112
133
  return Time.now();
113
134
  }
@@ -125,8 +146,10 @@ export default {
125
146
 
126
147
  // Never send a receipt if we are
127
148
  // send a qr code upon order
128
- if(event.sendQRCode.toLowerCase() === SendQRCodeEnum.UponOrder.toLowerCase()){
129
- return false;
149
+ if (
150
+ event.sendQRCode.toLowerCase() === SendQRCodeEnum.UponOrder.toLowerCase()
151
+ ) {
152
+ return false;
130
153
  }
131
154
  // if (event.sendQRCode === "Upon Order") {
132
155
  // return false;
@@ -263,8 +286,8 @@ export default {
263
286
  (event?.upgrades ?? [])
264
287
  // must be active
265
288
  .filter((upgrade) => upgrade.visible)
266
- // must have remaining qty
267
- //.filter((upgrade) => upgrade.remainingQty > 0)
289
+ // must have remaining qty
290
+ //.filter((upgrade) => upgrade.remainingQty > 0)
268
291
  );
269
292
  },
270
293
  activeNonComplimentaryUpgrades(event: IEvent): IEventUpgrade[] {
@@ -300,7 +323,7 @@ export default {
300
323
  isUpgradeForSpecificTickets(event: IEvent, upgrade: IEventUpgrade): boolean {
301
324
  return Boolean(
302
325
  event?.ticketTypes?.map((t) => t._id).sort() ===
303
- upgrade?.ticketTypeIds?.sort()
326
+ upgrade?.ticketTypeIds?.sort()
304
327
  );
305
328
  },
306
329
  /****************************************************************************************
@@ -383,7 +406,10 @@ export default {
383
406
 
384
407
  if (
385
408
  !required &&
386
- (value === undefined || value === "NaN" || value === "" || value === DropDownEnum.Select)
409
+ (value === undefined ||
410
+ value === "NaN" ||
411
+ value === "" ||
412
+ value === DropDownEnum.Select)
387
413
  ) {
388
414
  return true;
389
415
  }
@@ -522,10 +548,10 @@ export default {
522
548
  /****************************************************************************************
523
549
  * Ticket validate
524
550
  ****************************************************************************************/
525
- validateTicket(ticket: ITicketType, isPaid: Boolean): any {
551
+ validateTicket(ticket: ITicketType, isPaid: Boolean, isMultipleDays: boolean): any {
526
552
  let ticketSchema;
527
553
  let limit = isPaid ? "Purchase limit" : "RSVP limit";
528
-
554
+
529
555
  let used = ticket.totalQty - ticket.remainingQty;
530
556
  ticketSchema = Joi.object()
531
557
  .options({ abortEarly: false })
@@ -546,6 +572,7 @@ export default {
546
572
  "number.min": `"${limit}" must be greater than 0`,
547
573
  "number.base": `"${limit}" must be a number`,
548
574
  }),
575
+ dayIds: Joi.array().min(isMultipleDays ? 1 : 0).items(Joi.string()).default([]).messages({ "array.min": "Ticket must have selected atleast one day." }),
549
576
  tiers: Joi.array().items(
550
577
  Joi.object()
551
578
  .keys({
@@ -709,4 +736,67 @@ export default {
709
736
  .unknown(true);
710
737
  return refundFieldSchema.validate(refundField);
711
738
  },
739
+ validateEventDates(event: IEvent): any {
740
+ const schedule: IEventSchedule = event?.schedule as IEventSchedule;
741
+ const announceAt = schedule?.announceAt as number;
742
+ const ticketsAt = schedule?.ticketsAt as number;
743
+ const ticketsEndAt = schedule?.ticketsEndAt as number;
744
+ const performance = event?.performances?.[0];
745
+ const startsAt =
746
+ (performance?.schedule &&
747
+ (performance?.schedule[0]?.startsAt as number)) ||
748
+ 0;
749
+ const endsAt = event?.totalDays?.length === 0 ? (event?.schedule?.endsAt as number) :
750
+ (performance?.schedule &&
751
+ (performance?.schedule[performance?.schedule?.length - 1]
752
+ ?.endsAt as number)) ||
753
+ 0;
754
+ /* Actions */
755
+ let message = "" as string;
756
+
757
+ performance?.schedule?.some((a, i) => {
758
+ if (a.startsAt < a.doorsAt) {
759
+ message =
760
+ performance?.schedule && performance?.schedule?.length > 1
761
+ ? "Doors Open should be less than or equal to Event Begins on day " +
762
+ (i + 1) +
763
+ "."
764
+ : "Doors Open should be less than or equal to Event Begins.";
765
+ return message;
766
+ } else if (a.startsAt >(event?.totalDays?.length === 0 ? (event?.schedule?.endsAt as number) : a.endsAt)) {
767
+ message =
768
+ performance?.schedule && performance?.schedule?.length > 1
769
+ ? "Event Ends should be greater than Event Begins on day " +
770
+ (i + 1) +
771
+ "."
772
+ : "Event Ends should be greater than Event Begins.";
773
+ return message;
774
+ } else if (performance?.schedule && performance?.schedule?.length > 1) {
775
+ const aa =
776
+ performance?.schedule?.[i + 1]?.startsAt &&
777
+ performance?.schedule?.[i + 1]?.startsAt > (event?.totalDays?.length === 0 ? (event?.schedule?.endsAt as number) : a.endsAt);
778
+ if (!aa && aa !== undefined) {
779
+ message=(
780
+ "Day " +
781
+ (i + 2) +
782
+ " Event Begins should be greater than day " +
783
+ (i + 1) +
784
+ " Event Ends."
785
+ );
786
+ return message;
787
+ }
788
+ }
789
+ });
790
+ if (announceAt > startsAt) {
791
+ message = "Announcement Date should be less than Event Begins.";
792
+ return message;
793
+ } else if (ticketsAt < announceAt || ticketsAt > ticketsEndAt) {
794
+ message = "Sales Begin should be greater than or equal to Announcement Date and less than Sales End.";
795
+ return message;
796
+ } else if (ticketsEndAt > endsAt) {
797
+ message = "Sales End should be less than or equal to Event Ends.";
798
+ return message;
799
+ }
800
+ return message;
801
+ },
712
802
  };