@sellout/models 0.0.352 → 0.0.353

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.
@@ -142,7 +142,7 @@ export default {
142
142
 
143
143
  // return doorsAt - 600;
144
144
 
145
- return startsAt - 28800;
145
+ return startsAt - 28800
146
146
  },
147
147
  shouldSendOrderReceipt(event): boolean {
148
148
  const now = Time.now();
@@ -235,10 +235,12 @@ export default {
235
235
  },
236
236
 
237
237
  /****************************************************************************************
238
- * Tickets Hold
239
- ****************************************************************************************/
238
+ * Tickets Hold
239
+ ****************************************************************************************/
240
240
  ticketHold(event, ticketHoldId): any {
241
- return event?.holds.find((ticketHold) => ticketHold._id === ticketHoldId);
241
+ return event?.holds.find(
242
+ (ticketHold) => ticketHold._id === ticketHoldId
243
+ );
242
244
  },
243
245
 
244
246
  /****************************************************************************************
@@ -335,7 +337,7 @@ export default {
335
337
  isUpgradeForSpecificTickets(event: IEvent, upgrade: IEventUpgrade): boolean {
336
338
  return Boolean(
337
339
  event?.ticketTypes?.map((t) => t._id).sort() ===
338
- upgrade?.ticketTypeIds?.sort()
340
+ upgrade?.ticketTypeIds?.sort()
339
341
  );
340
342
  },
341
343
  /****************************************************************************************
@@ -559,8 +561,8 @@ export default {
559
561
  },
560
562
 
561
563
  /****************************************************************************************
562
- * Ticket Hold validate
563
- ****************************************************************************************/
564
+ * Ticket Hold validate
565
+ ****************************************************************************************/
564
566
  validateTicketHold(ticketHold: ITicketHold): any {
565
567
  let ticketHoldSchema: any;
566
568
  let used = ticketHold?.ticketRemaining as number;
@@ -571,12 +573,9 @@ export default {
571
573
  name: Joi.string()
572
574
  .required()
573
575
  .messages({ "string.empty": '"Block name" is a required field' }),
574
- ticketType: Joi.string()
575
- .required()
576
+ ticketType: Joi.string().required()
576
577
  .messages({ "string.empty": '"Ticket Type" is a required field' }),
577
- qty: Joi.number()
578
- .required()
579
- .min(1)
578
+ qty: Joi.number().required().min(1)
580
579
  .custom((value, helpers) => {
581
580
  if (value > 0 && value > used) {
582
581
  return helpers.error("totalqty.invalid");
@@ -644,75 +643,27 @@ export default {
644
643
  .messages({
645
644
  "array.min": "Ticket must have selected atleast one day.",
646
645
  }),
647
- tiers: Joi.array()
648
- .items(
649
- Joi.object()
650
- .keys({
651
- name: Joi.string().required().messages({
652
- "string.empty": '"Tier name" is a required field',
653
- "any.required": '"Tier name" must be provided',
654
- }),
655
- price: Joi.number().required(),
656
- remainingQty: Joi.number().required(),
657
- totalQty: Joi.number()
658
- .custom((value, helpers) => {
659
- if (value > 0 && value < used) {
660
- return helpers.error("totalqty.invalid");
661
- }
662
- return value;
663
- })
664
- .messages({
665
- "totalqty.invalid":
666
- '"Total qty." must be greater than or equal to number of ticket sold',
667
- })
668
- .required(),
669
- startsAt: Joi.date().allow(null),
670
- endsAt: Joi.date().allow(null),
671
- })
672
- .unknown(true)
673
- )
674
- .custom((tiers, helpers) => {
675
- for (let i = 0; i < tiers.length; i++) {
676
- const tier = tiers[i];
677
- if (tier.startsAt && tier.endsAt) {
678
- const start = new Date(tier.startsAt);
679
- const end = new Date(tier.endsAt);
680
- if (isNaN(start.getTime()) || isNaN(end.getTime())) {
681
- return helpers.error("tiers.invalidDate", { index: i + 1 });
682
- }
683
- if (end.getTime() <= start.getTime()) {
684
- const tierLabel =
685
- tier.name && tier.name.trim() !== ""
686
- ? ` "${tier.name}"`
687
- : ` #${i + 1}`;
688
-
689
- return helpers.error("tiers.endsAtBeforeStartsAt", {
690
- tierLabel,
691
- });
692
- }
693
- }
694
- }
695
- for (let i = 1; i < tiers.length; i++) {
696
- const prevTier = tiers[i - 1];
697
- const currentTier = tiers[i];
698
- const prevEndsAt = new Date(prevTier.endsAt).getTime();
699
- const currStartsAt = new Date(currentTier.startsAt).getTime();
700
- if (currStartsAt !== prevEndsAt) {
701
- // TODO Return custom error
702
- return helpers.error("tiers.startsAtMismatch", {
703
- index: i + 1,
704
- });
705
- }
706
- }
707
-
708
- return tiers;
709
- })
710
- .messages({
711
- "tiers.startsAtMismatch":
712
- "Start date/time of Tier {#index} must match end date/time of previous tier.",
713
- "tiers.endsAtBeforeStartsAt":
714
- "End date/time of Tier{#tierLabel} must be after start date/time.",
715
- }),
646
+ tiers: Joi.array().items(
647
+ Joi.object()
648
+ .keys({
649
+ name: Joi.string().required(),
650
+ price: Joi.number().required(),
651
+ remainingQty: Joi.number().required(),
652
+ totalQty: Joi.number()
653
+ .custom((value, helpers) => {
654
+ if (value > 0 && value < used) {
655
+ return helpers.error("totalqty.invalid");
656
+ }
657
+ return value;
658
+ })
659
+ .messages({
660
+ "totalqty.invalid":
661
+ '"Total qty." must be greater than or equal to number of ticket sold',
662
+ })
663
+ .required(),
664
+ })
665
+ .unknown(true)
666
+ ),
716
667
  })
717
668
  .unknown(true);
718
669
  return ticketSchema.validate(ticket);
@@ -822,39 +773,38 @@ export default {
822
773
  ****************************************************************************************/
823
774
  ValidateEventEmailSubjectFields(emailPreviewFields: IEmailHolders): any {
824
775
  const isEmptyHTML = (value: string) => {
825
- return (
826
- !value ||
827
- value.trim() === "" ||
828
- value.trim() === "<p></p>" ||
829
- value.trim() === "<p><br></p>"
830
- );
776
+ return !value || value.trim() === "" || value.trim() === "<p></p>" || value.trim() === "<p><br></p>";
831
777
  };
832
-
778
+
833
779
  let validateEmailPreviewFields = Joi.object()
834
780
  .options({ abortEarly: false })
835
781
  .keys({
836
- eventEmailSubject: Joi.string().required().messages({
837
- "string.empty": "Email Subject cannot be empty",
838
- "any.required": "Email Subject is required",
839
- }),
840
-
782
+ eventEmailSubject: Joi.string()
783
+ .required()
784
+ .messages({
785
+ "string.empty": 'Email Subject cannot be empty',
786
+ "any.required": 'Email Subject is required'
787
+ }),
788
+
841
789
  eventEmailBody: Joi.string()
842
790
  .custom((value, helpers) => {
843
791
  if (isEmptyHTML(value)) {
844
- return helpers.error("string.empty");
792
+ return helpers.error("string.empty");
845
793
  }
846
794
  return value;
847
795
  })
848
796
  .required()
849
797
  .messages({
850
- "string.empty": "Email Body cannot be empty",
851
- "any.required": "Email Body is required",
798
+ "string.empty": 'Email Body cannot be empty',
799
+ "any.required": 'Email Body is required'
852
800
  }),
853
801
  })
854
802
  .unknown(true);
855
-
803
+
856
804
  return validateEmailPreviewFields.validate(emailPreviewFields);
857
805
  },
806
+
807
+
858
808
 
859
809
  /****************************************************************************************
860
810
  * CustomField validate
@@ -909,9 +859,9 @@ export default {
909
859
  event?.totalDays?.length === 0
910
860
  ? (event?.schedule?.endsAt as number)
911
861
  : (performance?.schedule &&
912
- (performance?.schedule[performance?.schedule?.length - 1]
913
- ?.endsAt as number)) ||
914
- 0;
862
+ (performance?.schedule[performance?.schedule?.length - 1]
863
+ ?.endsAt as number)) ||
864
+ 0;
915
865
  /* Actions */
916
866
  let message = "" as string;
917
867
 
@@ -920,8 +870,8 @@ export default {
920
870
  message =
921
871
  performance?.schedule && performance?.schedule?.length > 1
922
872
  ? "Doors Open should be less than or equal to Event Begins on day " +
923
- (i + 1) +
924
- "."
873
+ (i + 1) +
874
+ "."
925
875
  : "Doors Open should be less than or equal to Event Begins.";
926
876
  return message;
927
877
  } else if (
@@ -933,17 +883,17 @@ export default {
933
883
  message =
934
884
  performance?.schedule && performance?.schedule?.length > 1
935
885
  ? "Event Ends should be greater than Event Begins on day " +
936
- (i + 1) +
937
- "."
886
+ (i + 1) +
887
+ "."
938
888
  : "Event Ends should be greater than Event Begins.";
939
889
  return message;
940
890
  } else if (performance?.schedule && performance?.schedule?.length > 1) {
941
891
  const aa =
942
892
  performance?.schedule?.[i + 1]?.startsAt &&
943
893
  performance?.schedule?.[i + 1]?.startsAt >
944
- (event?.totalDays?.length === 0
945
- ? (event?.schedule?.endsAt as number)
946
- : a.endsAt);
894
+ (event?.totalDays?.length === 0
895
+ ? (event?.schedule?.endsAt as number)
896
+ : a.endsAt);
947
897
  if (!aa && aa !== undefined) {
948
898
  message =
949
899
  "Day " +
@@ -735,107 +735,6 @@ class PaymentUtil {
735
735
  ? guestFees + (guestFees * stripeFeesValue) / 100
736
736
  : 0;
737
737
  }
738
- getApplicableFees({
739
- price,
740
- fees,
741
- isTicketType = false,
742
- isUpgradeType = false,
743
- }: {
744
- price: number;
745
- fees: any[];
746
- isTicketType?: boolean;
747
- isUpgradeType?: boolean;
748
- }): { label: string; amount: number }[] {
749
- if (!fees || fees.length === 0) return [];
750
-
751
- const filteredFees = fees.filter((fee) => {
752
- const min = fee.minAppliedToPrice;
753
- const max = fee.maxAppliedToPrice;
754
- const baseCondition =
755
- !fee.disabled &&
756
- ((min === 0 && max === 0) || (price >= min && price <= max));
757
-
758
- if (!baseCondition) return false;
759
-
760
- const feeSeatedFilter = FeeFiltersEnum.Seated;
761
- const guestFilter = FeeFiltersEnum.GuestTicket;
762
- const feeCardEntryFilter = FeeFiltersEnum.CardEntry;
763
- const feeCardReaderWifiFilter = FeeFiltersEnum.CardReader;
764
- const feeCardReaderBluetoothFilter = FeeFiltersEnum.CardReaderBluetooth;
765
-
766
- const excludedFilters = [
767
- feeSeatedFilter,
768
- guestFilter,
769
- feeCardEntryFilter,
770
- feeCardReaderWifiFilter,
771
- feeCardReaderBluetoothFilter,
772
- ];
773
-
774
- const hasExcludedFilter =
775
- fee.filters &&
776
- fee.filters.some((filter: string) =>
777
- excludedFilters.includes(filter as FeeFiltersEnum)
778
- );
779
- if (hasExcludedFilter) return false;
780
-
781
- if (isTicketType) {
782
- return fee.appliedTo === FeeAppliedToEnum.Ticket &&
783
- (fee.appliedBy === FeeAppliedByEnum.Sellout);
784
- }
785
-
786
- if (isUpgradeType) {
787
- return fee.appliedTo === FeeAppliedToEnum.Upgrade &&
788
- (fee.appliedBy === FeeAppliedByEnum.Sellout);
789
- }
790
-
791
- return false;
792
- });
793
-
794
- //TODO Group by label and sum the amount
795
- const feeMap = new Map<string, number>();
796
-
797
- // filteredFees?.forEach((fee) => {
798
- // const amount =
799
- // fee?.type === FeeTypeEnum.Flat
800
- // ? fee.value
801
- // : (fee.value / 100) * price;
802
-
803
- // const label =
804
- // fee?.appliedBy === FeeAppliedByEnum.Sellout
805
- // ? "Sellout service fees"
806
- // : fee.name;
807
-
808
- // const current = feeMap.get(label) || 0;
809
- // feeMap.set(label, current + amount);
810
- // });
811
- filteredFees.forEach((fee) => {
812
- const amount =
813
- fee.type === FeeTypeEnum.Flat
814
- ? fee.value
815
- : (fee.value / 100) * price;
816
-
817
- const label =
818
- fee.appliedBy === FeeAppliedByEnum.Sellout ||
819
- fee.appliedBy === FeeAppliedByEnum.Organization
820
- ? "Sellout service fees"
821
- : fee.name;
822
-
823
- const current = feeMap.get(label) || 0;
824
- feeMap.set(label, current + amount);
825
- });
826
- const result: { label: string; amount: number }[] = [];
827
- feeMap.forEach((amount, label) => {
828
- result.push({
829
- label,
830
- amount: parseFloat((amount / 100).toFixed(2)),
831
- });
832
- });
833
-
834
- return result;
835
- }
836
-
837
-
838
-
839
738
  }
840
739
 
841
740
  export default new PaymentUtil();
@@ -1,9 +0,0 @@
1
- import {gql} from "@apollo/client";
2
-
3
- const query = gql`
4
- query queryOrgDeletable($orgId: String!) {
5
- queryOrgDeletable(orgId: $orgId)
6
- }
7
- `;
8
-
9
- export default query;