@sellout/models 0.0.104 → 0.0.107

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 (324) hide show
  1. package/.dist/enums/DropDownEnum.d.ts +3 -0
  2. package/.dist/enums/DropDownEnum.js +8 -0
  3. package/.dist/enums/DropDownEnum.js.map +1 -0
  4. package/.dist/graphql/fragments/event.fragment.js +15 -14
  5. package/.dist/graphql/fragments/event.fragment.js.map +1 -1
  6. package/.dist/graphql/fragments/order.fragment.js +4 -2
  7. package/.dist/graphql/fragments/order.fragment.js.map +1 -1
  8. package/.dist/graphql/mutations/acceptRole.mutation.js +1 -1
  9. package/.dist/graphql/mutations/acceptRole.mutation.js.map +1 -1
  10. package/.dist/graphql/mutations/applyPlatformFeesToAllOrganizations.mutation.js +1 -1
  11. package/.dist/graphql/mutations/applyPlatformFeesToAllOrganizations.mutation.js.map +1 -1
  12. package/.dist/graphql/mutations/attachStripePaymentMethod.mutation.js +1 -1
  13. package/.dist/graphql/mutations/attachStripePaymentMethod.mutation.js.map +1 -1
  14. package/.dist/graphql/mutations/breakApartOrder.js +1 -1
  15. package/.dist/graphql/mutations/breakApartOrder.js.map +1 -1
  16. package/.dist/graphql/mutations/createArtist.mutation.js +1 -1
  17. package/.dist/graphql/mutations/createArtist.mutation.js.map +1 -1
  18. package/.dist/graphql/mutations/createEvent.mutation.js +4 -1
  19. package/.dist/graphql/mutations/createEvent.mutation.js.map +1 -1
  20. package/.dist/graphql/mutations/createFee.mutation.js +1 -1
  21. package/.dist/graphql/mutations/createFee.mutation.js.map +1 -1
  22. package/.dist/graphql/mutations/createOrder.mutation.js +1 -1
  23. package/.dist/graphql/mutations/createOrder.mutation.js.map +1 -1
  24. package/.dist/graphql/mutations/createOrderPaymentIntent.mutation.js +1 -1
  25. package/.dist/graphql/mutations/createOrderPaymentIntent.mutation.js.map +1 -1
  26. package/.dist/graphql/mutations/createOrganizationFee.mutation.js +1 -1
  27. package/.dist/graphql/mutations/createOrganizationFee.mutation.js.map +1 -1
  28. package/.dist/graphql/mutations/createPlatformFee.mutation.js +1 -1
  29. package/.dist/graphql/mutations/createPlatformFee.mutation.js.map +1 -1
  30. package/.dist/graphql/mutations/createRole.mutation.js +1 -1
  31. package/.dist/graphql/mutations/createRole.mutation.js.map +1 -1
  32. package/.dist/graphql/mutations/createStripeSetupIntent.mutation.js +1 -1
  33. package/.dist/graphql/mutations/createStripeSetupIntent.mutation.js.map +1 -1
  34. package/.dist/graphql/mutations/createStripeTerminalConnectionToken.mutation.js +1 -1
  35. package/.dist/graphql/mutations/createStripeTerminalConnectionToken.mutation.js.map +1 -1
  36. package/.dist/graphql/mutations/createVenue.mutation.js +27 -26
  37. package/.dist/graphql/mutations/createVenue.mutation.js.map +1 -1
  38. package/.dist/graphql/mutations/createWebFlowSite.mutation.js +1 -1
  39. package/.dist/graphql/mutations/createWebFlowSite.mutation.js.map +1 -1
  40. package/.dist/graphql/mutations/deleteEvent.mutation.js +25 -0
  41. package/.dist/graphql/mutations/deleteEvent.mutation.js.map +1 -0
  42. package/.dist/graphql/mutations/deleteFee.mutation.js +1 -1
  43. package/.dist/graphql/mutations/deleteFee.mutation.js.map +1 -1
  44. package/.dist/graphql/mutations/deleteOrganizationFee.mutation.js +1 -1
  45. package/.dist/graphql/mutations/deleteOrganizationFee.mutation.js.map +1 -1
  46. package/.dist/graphql/mutations/deletePlatformFee.mutation.js +1 -1
  47. package/.dist/graphql/mutations/deletePlatformFee.mutation.js.map +1 -1
  48. package/.dist/graphql/mutations/deleteRole.mutation.js +1 -1
  49. package/.dist/graphql/mutations/deleteRole.mutation.js.map +1 -1
  50. package/.dist/graphql/mutations/deleteStripeTerminalReader.mutation.js +1 -1
  51. package/.dist/graphql/mutations/deleteStripeTerminalReader.mutation.js.map +1 -1
  52. package/.dist/graphql/mutations/deleteUnverifiedUser.mutation.js +1 -1
  53. package/.dist/graphql/mutations/deleteUnverifiedUser.mutation.js.map +1 -1
  54. package/.dist/graphql/mutations/forgotPassword.mutation.js +1 -1
  55. package/.dist/graphql/mutations/forgotPassword.mutation.js.map +1 -1
  56. package/.dist/graphql/mutations/generateOrderReport.mutation.js +1 -1
  57. package/.dist/graphql/mutations/generateOrderReport.mutation.js.map +1 -1
  58. package/.dist/graphql/mutations/generateUserProfileReport.mutation.js +1 -1
  59. package/.dist/graphql/mutations/generateUserProfileReport.mutation.js.map +1 -1
  60. package/.dist/graphql/mutations/login.mutation.js +1 -1
  61. package/.dist/graphql/mutations/login.mutation.js.map +1 -1
  62. package/.dist/graphql/mutations/publishEvent.mutation.js +4 -1
  63. package/.dist/graphql/mutations/publishEvent.mutation.js.map +1 -1
  64. package/.dist/graphql/mutations/refundOrder.mutation.js +130 -0
  65. package/.dist/graphql/mutations/refundOrder.mutation.js.map +1 -0
  66. package/.dist/graphql/mutations/register.mutation.js +1 -1
  67. package/.dist/graphql/mutations/register.mutation.js.map +1 -1
  68. package/.dist/graphql/mutations/registerStripeTerminalReader.mutation.js +1 -1
  69. package/.dist/graphql/mutations/registerStripeTerminalReader.mutation.js.map +1 -1
  70. package/.dist/graphql/mutations/remapWebFlowSite.mutation.js +1 -1
  71. package/.dist/graphql/mutations/remapWebFlowSite.mutation.js.map +1 -1
  72. package/.dist/graphql/mutations/resetUserPassword.mutation.js +1 -1
  73. package/.dist/graphql/mutations/resetUserPassword.mutation.js.map +1 -1
  74. package/.dist/graphql/mutations/resetUserPasswordInApp.mutation.js +1 -1
  75. package/.dist/graphql/mutations/resetUserPasswordInApp.mutation.js.map +1 -1
  76. package/.dist/graphql/mutations/{sendUserEmailVerification.js → sendOrderReceiptEmail.mutation.js} +4 -6
  77. package/.dist/graphql/mutations/sendOrderReceiptEmail.mutation.js.map +1 -0
  78. package/.dist/graphql/mutations/sendUserEmailVerification.mutation.js +1 -1
  79. package/.dist/graphql/mutations/sendUserEmailVerification.mutation.js.map +1 -1
  80. package/.dist/graphql/mutations/sendUserPhoneAuthentication.mutation.js +1 -1
  81. package/.dist/graphql/mutations/sendUserPhoneAuthentication.mutation.js.map +1 -1
  82. package/.dist/graphql/mutations/sendUserPhoneVerification.mutation.js +1 -1
  83. package/.dist/graphql/mutations/sendUserPhoneVerification.mutation.js.map +1 -1
  84. package/.dist/graphql/mutations/setUserOrgContextId.mutation.js +1 -1
  85. package/.dist/graphql/mutations/setUserOrgContextId.mutation.js.map +1 -1
  86. package/.dist/graphql/mutations/setUserPassword.mutation.js +1 -1
  87. package/.dist/graphql/mutations/setUserPassword.mutation.js.map +1 -1
  88. package/.dist/graphql/mutations/updateArtist.mutation.js +1 -1
  89. package/.dist/graphql/mutations/updateArtist.mutation.js.map +1 -1
  90. package/.dist/graphql/mutations/updateBasicUserInfo.mutation.js +1 -1
  91. package/.dist/graphql/mutations/updateBasicUserInfo.mutation.js.map +1 -1
  92. package/.dist/graphql/mutations/updateEvent.mutation.js +4 -1
  93. package/.dist/graphql/mutations/updateEvent.mutation.js.map +1 -1
  94. package/.dist/graphql/mutations/updateFee.mutation.js +1 -1
  95. package/.dist/graphql/mutations/updateFee.mutation.js.map +1 -1
  96. package/.dist/graphql/mutations/updateOrganization.mutation.js +1 -1
  97. package/.dist/graphql/mutations/updateOrganization.mutation.js.map +1 -1
  98. package/.dist/graphql/mutations/updateOrganizationFee.mutation.js +1 -1
  99. package/.dist/graphql/mutations/updateOrganizationFee.mutation.js.map +1 -1
  100. package/.dist/graphql/mutations/updatePlatformFee.mutation.js +1 -1
  101. package/.dist/graphql/mutations/updatePlatformFee.mutation.js.map +1 -1
  102. package/.dist/graphql/mutations/updateUserEmail.mutation.js +1 -1
  103. package/.dist/graphql/mutations/updateUserEmail.mutation.js.map +1 -1
  104. package/.dist/graphql/mutations/updateUserPhoneNumber.mutation.js +1 -1
  105. package/.dist/graphql/mutations/updateUserPhoneNumber.mutation.js.map +1 -1
  106. package/.dist/graphql/mutations/updateVenue.mutation.js +27 -26
  107. package/.dist/graphql/mutations/updateVenue.mutation.js.map +1 -1
  108. package/.dist/graphql/mutations/uploadFiles.mutation.js +1 -1
  109. package/.dist/graphql/mutations/uploadFiles.mutation.js.map +1 -1
  110. package/.dist/graphql/mutations/verifyUserEmail.mutation.js +1 -1
  111. package/.dist/graphql/mutations/verifyUserEmail.mutation.js.map +1 -1
  112. package/.dist/graphql/mutations/verifyUserPhoneAuthentication.mutation.js +1 -1
  113. package/.dist/graphql/mutations/verifyUserPhoneAuthentication.mutation.js.map +1 -1
  114. package/.dist/graphql/mutations/verifyUserPhoneNumber.mutation.js +1 -1
  115. package/.dist/graphql/mutations/verifyUserPhoneNumber.mutation.js.map +1 -1
  116. package/.dist/graphql/queries/analytics.query.js +1 -1
  117. package/.dist/graphql/queries/analytics.query.js.map +1 -1
  118. package/.dist/graphql/queries/artist.query.js +1 -1
  119. package/.dist/graphql/queries/artist.query.js.map +1 -1
  120. package/.dist/graphql/queries/artists.query.js +1 -1
  121. package/.dist/graphql/queries/artists.query.js.map +1 -1
  122. package/.dist/graphql/queries/context.query.js +1 -1
  123. package/.dist/graphql/queries/context.query.js.map +1 -1
  124. package/.dist/graphql/queries/customerOrders.query.js +1 -1
  125. package/.dist/graphql/queries/customerOrders.query.js.map +1 -1
  126. package/.dist/graphql/queries/customerProfile.query.js +1 -1
  127. package/.dist/graphql/queries/customerProfile.query.js.map +1 -1
  128. package/.dist/graphql/queries/event.query.js +5 -1
  129. package/.dist/graphql/queries/event.query.js.map +1 -1
  130. package/.dist/graphql/queries/events.query.js +5 -1
  131. package/.dist/graphql/queries/events.query.js.map +1 -1
  132. package/.dist/graphql/queries/fee.query.js +1 -1
  133. package/.dist/graphql/queries/fee.query.js.map +1 -1
  134. package/.dist/graphql/queries/fees.query.js +30 -0
  135. package/.dist/graphql/queries/fees.query.js.map +1 -0
  136. package/.dist/graphql/queries/isSuperUser.query.js +1 -1
  137. package/.dist/graphql/queries/isSuperUser.query.js.map +1 -1
  138. package/.dist/graphql/queries/listStripeTerminalReaders.query.js +1 -1
  139. package/.dist/graphql/queries/listStripeTerminalReaders.query.js.map +1 -1
  140. package/.dist/graphql/queries/order.query.js +17 -1
  141. package/.dist/graphql/queries/order.query.js.map +1 -1
  142. package/.dist/graphql/queries/orders.query.js +1 -1
  143. package/.dist/graphql/queries/orders.query.js.map +1 -1
  144. package/.dist/graphql/queries/organizationFees.query.js +1 -1
  145. package/.dist/graphql/queries/organizationFees.query.js.map +1 -1
  146. package/.dist/graphql/queries/organizations.query.js +1 -1
  147. package/.dist/graphql/queries/organizations.query.js.map +1 -1
  148. package/.dist/graphql/queries/platformFees.query.js +1 -1
  149. package/.dist/graphql/queries/platformFees.query.js.map +1 -1
  150. package/.dist/graphql/queries/profile.query.js +1 -1
  151. package/.dist/graphql/queries/profile.query.js.map +1 -1
  152. package/.dist/graphql/queries/profiles.query.js +1 -1
  153. package/.dist/graphql/queries/profiles.query.js.map +1 -1
  154. package/.dist/graphql/queries/publicEvent.query.js +5 -1
  155. package/.dist/graphql/queries/publicEvent.query.js.map +1 -1
  156. package/.dist/graphql/queries/role.query.js +1 -1
  157. package/.dist/graphql/queries/role.query.js.map +1 -1
  158. package/.dist/graphql/queries/roles.query.js +1 -1
  159. package/.dist/graphql/queries/roles.query.js.map +1 -1
  160. package/.dist/graphql/queries/seating.query.js +1 -1
  161. package/.dist/graphql/queries/seating.query.js.map +1 -1
  162. package/.dist/graphql/queries/userExists.query.js +1 -1
  163. package/.dist/graphql/queries/userExists.query.js.map +1 -1
  164. package/.dist/graphql/queries/userProfile.query.js +1 -1
  165. package/.dist/graphql/queries/userProfile.query.js.map +1 -1
  166. package/.dist/graphql/queries/userRoles.query.js +1 -1
  167. package/.dist/graphql/queries/userRoles.query.js.map +1 -1
  168. package/.dist/graphql/queries/venue.query.js +27 -26
  169. package/.dist/graphql/queries/venue.query.js.map +1 -1
  170. package/.dist/graphql/queries/venues.query.js +27 -26
  171. package/.dist/graphql/queries/venues.query.js.map +1 -1
  172. package/.dist/graphql/queries/webFlowSites.query.js +1 -1
  173. package/.dist/graphql/queries/webFlowSites.query.js.map +1 -1
  174. package/.dist/graphql/queries/webflow.query.js +1 -1
  175. package/.dist/graphql/queries/webflow.query.js.map +1 -1
  176. package/.dist/interfaces/IAddress.d.ts +1 -0
  177. package/.dist/interfaces/IEvent.d.ts +2 -0
  178. package/.dist/interfaces/IEventQuery.d.ts +1 -0
  179. package/.dist/interfaces/IOrder.d.ts +2 -0
  180. package/.dist/interfaces/IOrder.js.map +1 -1
  181. package/.dist/interfaces/IOrderQuery.d.ts +1 -0
  182. package/.dist/interfaces/IOrderState.d.ts +2 -1
  183. package/.dist/interfaces/IOrderState.js +1 -0
  184. package/.dist/interfaces/IOrderState.js.map +1 -1
  185. package/.dist/interfaces/IPayment.d.ts +1 -0
  186. package/.dist/interfaces/IProcessingFees.d.ts +5 -0
  187. package/.dist/interfaces/{IStripe.js → IProcessingFees.js} +2 -1
  188. package/.dist/interfaces/IProcessingFees.js.map +1 -0
  189. package/.dist/interfaces/IRefund.d.ts +1 -0
  190. package/.dist/interfaces/IRefundModal.d.ts +8 -0
  191. package/.dist/interfaces/{IMetrics.js → IRefundModal.js} +1 -1
  192. package/.dist/interfaces/IRefundModal.js.map +1 -0
  193. package/.dist/interfaces/ISearchDropdownItem.d.ts +4 -0
  194. package/.dist/interfaces/{IStripeSource.js → ISearchDropdownItem.js} +1 -1
  195. package/.dist/interfaces/ISearchDropdownItem.js.map +1 -0
  196. package/.dist/interfaces/ITicketType.d.ts +1 -0
  197. package/.dist/schemas/Address.d.ts +5 -0
  198. package/.dist/schemas/Address.js +5 -0
  199. package/.dist/schemas/Address.js.map +1 -1
  200. package/.dist/schemas/Event.d.ts +19 -0
  201. package/.dist/schemas/Event.js +15 -1
  202. package/.dist/schemas/Event.js.map +1 -1
  203. package/.dist/schemas/Order.d.ts +39 -0
  204. package/.dist/schemas/Order.js +7 -0
  205. package/.dist/schemas/Order.js.map +1 -1
  206. package/.dist/schemas/Organization.d.ts +5 -0
  207. package/.dist/schemas/UserProfile.d.ts +5 -0
  208. package/.dist/schemas/Venue.d.ts +5 -0
  209. package/.dist/sellout-proto.js +3278 -405
  210. package/.dist/utils/AnalyticsUtil.js +5 -2
  211. package/.dist/utils/AnalyticsUtil.js.map +1 -1
  212. package/.dist/utils/EventUtil.d.ts +20 -2
  213. package/.dist/utils/EventUtil.js +330 -52
  214. package/.dist/utils/EventUtil.js.map +1 -1
  215. package/.dist/utils/FeeUtil.d.ts +5 -0
  216. package/.dist/utils/FeeUtil.js +21 -0
  217. package/.dist/utils/FeeUtil.js.map +1 -1
  218. package/.dist/utils/OrderUtil.js.map +1 -1
  219. package/.dist/utils/SaveLogsToFile.d.ts +2 -0
  220. package/.dist/utils/SaveLogsToFile.js +43 -0
  221. package/.dist/utils/SaveLogsToFile.js.map +1 -0
  222. package/.dist/utils/TierUtil.js +1 -1
  223. package/.dist/utils/TierUtil.js.map +1 -1
  224. package/package.json +11 -11
  225. package/src/enums/DropDownEnum.ts +3 -0
  226. package/src/graphql/fragments/event.fragment.ts +1 -0
  227. package/src/graphql/fragments/order.fragment.ts +2 -0
  228. package/src/graphql/mutations/createEvent.mutation.ts +3 -0
  229. package/src/graphql/mutations/createVenue.mutation.ts +32 -31
  230. package/src/graphql/mutations/deleteEvent.mutation.ts +21 -0
  231. package/src/graphql/mutations/publishEvent.mutation.ts +3 -0
  232. package/src/graphql/mutations/refundOrder.mutation.ts +126 -0
  233. package/src/graphql/mutations/sendOrderReceiptEmail.mutation.ts +9 -0
  234. package/src/graphql/mutations/updateEvent.mutation.ts +3 -0
  235. package/src/graphql/mutations/updateVenue.mutation.ts +32 -31
  236. package/src/graphql/queries/event.query.ts +4 -0
  237. package/src/graphql/queries/events.query.ts +4 -0
  238. package/src/graphql/queries/fees.query.ts +26 -0
  239. package/src/graphql/queries/order.query.ts +16 -0
  240. package/src/graphql/queries/publicEvent.query.ts +4 -0
  241. package/src/graphql/queries/venue.query.ts +31 -30
  242. package/src/graphql/queries/venues.query.ts +32 -31
  243. package/src/interfaces/IAddress.ts +1 -0
  244. package/src/interfaces/IEvent.ts +2 -0
  245. package/src/interfaces/IEventQuery.ts +1 -0
  246. package/src/interfaces/IOrder.ts +3 -1
  247. package/src/interfaces/IOrderQuery.ts +1 -0
  248. package/src/interfaces/IOrderState.ts +1 -0
  249. package/src/interfaces/IPayment.ts +1 -0
  250. package/src/interfaces/IProcessingFees.ts +6 -0
  251. package/src/interfaces/IRefund.ts +1 -0
  252. package/src/interfaces/IRefundModal.ts +8 -0
  253. package/src/interfaces/ISearchDropdownItem.ts +5 -0
  254. package/src/interfaces/ITicketType.ts +1 -0
  255. package/src/proto/common.proto +74 -73
  256. package/src/proto/event.proto +38 -0
  257. package/src/proto/order.proto +20 -0
  258. package/src/proto/stripe.proto +13 -0
  259. package/src/schemas/Address.ts +62 -57
  260. package/src/schemas/Event.ts +15 -1
  261. package/src/schemas/Order.ts +7 -0
  262. package/src/utils/AnalyticsUtil.ts +9 -9
  263. package/src/utils/EventUtil.ts +416 -121
  264. package/src/utils/FeeUtil.ts +20 -0
  265. package/src/utils/SaveLogsToFile.ts +13 -0
  266. package/.dist/enums/OrderDeliveryMethodEnum.d.ts +0 -5
  267. package/.dist/enums/OrderDeliveryMethodEnum.js +0 -11
  268. package/.dist/enums/OrderDeliveryMethodEnum.js.map +0 -1
  269. package/.dist/enums/PaymentMethodEnum.d.ts +0 -5
  270. package/.dist/enums/PaymentMethodEnum.js +0 -10
  271. package/.dist/enums/PaymentMethodEnum.js.map +0 -1
  272. package/.dist/graphql/mutations/createStripeSetupIntent.js +0 -13
  273. package/.dist/graphql/mutations/createStripeSetupIntent.js.map +0 -1
  274. package/.dist/graphql/mutations/forgotPassword.js +0 -13
  275. package/.dist/graphql/mutations/forgotPassword.js.map +0 -1
  276. package/.dist/graphql/mutations/listStripeTerminalReaders.mutation.d.ts +0 -2
  277. package/.dist/graphql/mutations/listStripeTerminalReaders.mutation.js +0 -21
  278. package/.dist/graphql/mutations/listStripeTerminalReaders.mutation.js.map +0 -1
  279. package/.dist/graphql/mutations/listStripeTerminalReaders.query.d.ts +0 -2
  280. package/.dist/graphql/mutations/listStripeTerminalReaders.query.js +0 -21
  281. package/.dist/graphql/mutations/listStripeTerminalReaders.query.js.map +0 -1
  282. package/.dist/graphql/mutations/login.d.ts +0 -2
  283. package/.dist/graphql/mutations/login.js +0 -23
  284. package/.dist/graphql/mutations/login.js.map +0 -1
  285. package/.dist/graphql/mutations/register.d.ts +0 -2
  286. package/.dist/graphql/mutations/register.js +0 -23
  287. package/.dist/graphql/mutations/register.js.map +0 -1
  288. package/.dist/graphql/mutations/registerStripeTermainlReader.mutation.d.ts +0 -2
  289. package/.dist/graphql/mutations/registerStripeTermainlReader.mutation.js +0 -13
  290. package/.dist/graphql/mutations/registerStripeTermainlReader.mutation.js.map +0 -1
  291. package/.dist/graphql/mutations/registerStripeTerminalReader.d.ts +0 -2
  292. package/.dist/graphql/mutations/registerStripeTerminalReader.js +0 -13
  293. package/.dist/graphql/mutations/registerStripeTerminalReader.js.map +0 -1
  294. package/.dist/graphql/mutations/sendUserEmailVerification.js.map +0 -1
  295. package/.dist/graphql/mutations/verifyPhoneAuthentication.mutation.js +0 -15
  296. package/.dist/graphql/mutations/verifyPhoneAuthentication.mutation.js.map +0 -1
  297. package/.dist/graphql/mutations/verifyUserPhoneAuthentication.d.ts +0 -2
  298. package/.dist/graphql/mutations/verifyUserPhoneAuthentication.js +0 -15
  299. package/.dist/graphql/mutations/verifyUserPhoneAuthentication.js.map +0 -1
  300. package/.dist/graphql/queries/metrics.query.d.ts +0 -2
  301. package/.dist/graphql/queries/metrics.query.js +0 -29
  302. package/.dist/graphql/queries/metrics.query.js.map +0 -1
  303. package/.dist/graphql/queries/metricsData.query.d.ts +0 -2
  304. package/.dist/graphql/queries/metricsData.query.js +0 -29
  305. package/.dist/graphql/queries/metricsData.query.js.map +0 -1
  306. package/.dist/interfaces/IMetricData.d.ts +0 -57
  307. package/.dist/interfaces/IMetricData.js +0 -70
  308. package/.dist/interfaces/IMetricData.js.map +0 -1
  309. package/.dist/interfaces/IMetrics.d.ts +0 -29
  310. package/.dist/interfaces/IMetrics.js.map +0 -1
  311. package/.dist/interfaces/IStripe.d.ts +0 -9
  312. package/.dist/interfaces/IStripe.js.map +0 -1
  313. package/.dist/interfaces/IStripeSource.d.ts +0 -10
  314. package/.dist/interfaces/IStripeSource.js.map +0 -1
  315. package/.dist/utils/MetricsUtil.d.ts +0 -7
  316. package/.dist/utils/MetricsUtil.js +0 -29
  317. package/.dist/utils/MetricsUtil.js.map +0 -1
  318. package/.dist/utils/fee-util-broken-but-why.d.ts +0 -8
  319. package/.dist/utils/fee-util-broken-but-why.js +0 -38
  320. package/.dist/utils/fee-util-broken-but-why.js.map +0 -1
  321. /package/.dist/graphql/mutations/{createStripeSetupIntent.d.ts → deleteEvent.mutation.d.ts} +0 -0
  322. /package/.dist/graphql/mutations/{forgotPassword.d.ts → refundOrder.mutation.d.ts} +0 -0
  323. /package/.dist/graphql/mutations/{sendUserEmailVerification.d.ts → sendOrderReceiptEmail.mutation.d.ts} +0 -0
  324. /package/.dist/graphql/{mutations/verifyPhoneAuthentication.mutation.d.ts → queries/fees.query.d.ts} +0 -0
@@ -1,14 +1,19 @@
1
- import Joi from '@hapi/joi';
1
+ import Joi from "@hapi/joi";
2
2
  import * as Time from "@sellout/utils/.dist/time";
3
3
  import IEventCustomField from "../interfaces/IEventCustomField";
4
- import IEvent, { EventProcessAsEnum, EventTypeEnum } from "../interfaces/IEvent";
5
- import { CustomFieldTypeEnum } from '../enums/CustomFieldTypeEnum';
4
+ import IRefundModal from "../interfaces/IRefundModal";
5
+ import IEvent, {
6
+ EventProcessAsEnum,
7
+ EventTypeEnum,
8
+ } from "../interfaces/IEvent";
9
+ import { CustomFieldTypeEnum } from "../enums/CustomFieldTypeEnum";
6
10
  import IOrderCustomField from "../interfaces/IOrderCustomField";
7
11
  import IEventUpgrade from "../interfaces/IEventUpgrade";
8
12
  import ITicketType from "../interfaces/ITicketType";
9
13
  import IEventPromotion from "../interfaces/IEventPromotion";
10
- import { EventPromotionTypeEnum } from '../interfaces/IEventPromotion';
11
-
14
+ import { EventPromotionTypeEnum } from "../interfaces/IEventPromotion";
15
+ import { DropDownEnum } from "../enums/DropDownEnum";
16
+ import { SendQRCodeEnum} from "../interfaces/IEvent";
12
17
  export default {
13
18
  /****************************************************************************************
14
19
  * Schedule
@@ -53,26 +58,28 @@ export default {
53
58
  },
54
59
  hasEnded(event): boolean {
55
60
  const {
56
- schedule: { endsAt },
61
+ schedule: { endsAt }
57
62
  } = event;
58
63
  const now = Time.now();
59
- return endsAt < now;
64
+ return endsAt < now ;
60
65
  },
61
66
  isUnavailable(event: IEvent): boolean {
62
- if(!event.published) return true;
63
- if(!this.hasBeenAnnounced(event)) return true;
64
- if(!this.isOnSale(event)) return true;
65
- if(this.allTicketsAreLocked(event)) return true;
66
- if(this.saleHasEnded(event)) return true;
67
+ if (!event.published) return true;
68
+ if (!this.hasBeenAnnounced(event)) return true;
69
+ if (!this.isOnSale(event)) return true;
70
+ if (this.allTicketsAreLocked(event)) return true;
71
+ if (this.saleHasEnded(event)) return true;
67
72
  return false;
68
73
  },
69
74
  allTicketsAreLocked(event: IEvent): boolean {
70
75
  const ticketTypeCount = event.ticketTypes?.length;
71
- const promotionCodeTicketCount = [...new Set(event.promotions?.reduce((cur: string[], promotion) => {
72
- return [...cur, ...promotion.ticketTypeIds];
73
- }, []))].length;
74
- console.log(ticketTypeCount);
75
- console.log(promotionCodeTicketCount);
76
+ const promotionCodeTicketCount = [
77
+ ...new Set(
78
+ event.promotions?.reduce((cur: string[], promotion) => {
79
+ return [...cur, ...promotion.ticketTypeIds];
80
+ }, [])
81
+ ),
82
+ ].length;
76
83
  return ticketTypeCount === promotionCodeTicketCount;
77
84
  },
78
85
  /****************************************************************************************
@@ -82,18 +89,30 @@ export default {
82
89
  const {
83
90
  performances: [performance],
84
91
  } = event;
85
- const {
86
- schedule: { doorsAt, startsAt },
92
+ const { schedule: { doorsAt, startsAt },
87
93
  } = performance;
94
+ /*
95
+ changing to lower case
96
+ becuse previosly it is stored with different values
97
+ like Upon Order, Upon order
98
+ */
99
+ if(event.sendQRCode.toLowerCase() === SendQRCodeEnum.UponOrder.toLowerCase()){
100
+ return Time.now();
101
+ }
102
+
103
+ if (event.sendQRCode.toLowerCase() === SendQRCodeEnum.TwoWeeksBefore.toLowerCase()) {
104
+ const TWO_WEEKS = 14 * 24 * 60 * 60;
105
+ return startsAt - TWO_WEEKS;
106
+ }
88
107
 
89
- if (event.sendQRCode === "Upon Order") {
90
- return Time.now();
108
+ /* if (event.sendQRCode === "Upon Order") {
109
+ return Time.now();
91
110
  }
92
111
 
93
112
  if (event.sendQRCode === "Two Weeks Before Show") {
94
113
  const TWO_WEEKS = 14 * 24 * 60 * 60;
95
114
  return startsAt - TWO_WEEKS;
96
- }
115
+ } */
97
116
 
98
117
  return doorsAt - 600;
99
118
  },
@@ -103,9 +122,12 @@ export default {
103
122
 
104
123
  // Never send a receipt if we are
105
124
  // send a qr code upon order
106
- if (event.sendQRCode === "Upon Order") {
107
- return false;
125
+ if(event.sendQRCode.toLowerCase() === SendQRCodeEnum.UponOrder.toLowerCase()){
126
+ return false;
108
127
  }
128
+ // if (event.sendQRCode === "Upon Order") {
129
+ // return false;
130
+ // }
109
131
 
110
132
  // Only send a receipt if QR codes for
111
133
  // the event haven't already gone out
@@ -131,7 +153,7 @@ export default {
131
153
  * Seating
132
154
  ****************************************************************************************/
133
155
  isSeated(event?: IEvent): boolean {
134
- if(!event) return false;
156
+ if (!event) return false;
135
157
  return Boolean(event.seatingChartKey);
136
158
  },
137
159
  /****************************************************************************************
@@ -190,7 +212,7 @@ export default {
190
212
  );
191
213
  },
192
214
  activeTicketTypes(event: IEvent): ITicketType[] {
193
- return event.ticketTypes?.filter(ticketType => ticketType.visible) ?? [];
215
+ return event.ticketTypes?.filter((ticketType) => ticketType.visible) ?? [];
194
216
  },
195
217
  remainingTicketQty(event, ticketTypeId: string | null = null): number {
196
218
  if (ticketTypeId) {
@@ -234,16 +256,20 @@ export default {
234
256
  return event.upgrades.find((upgrades) => upgrades._id === upgradeId);
235
257
  },
236
258
  activeUpgrades(event: IEvent): IEventUpgrade[] {
237
- return (event?.upgrades ?? [])
238
- // must be active
239
- .filter(upgrade => upgrade.visible)
240
- // must have remaining qty
241
- .filter(upgrade => upgrade.remainingQty > 0);
259
+ return (
260
+ (event?.upgrades ?? [])
261
+ // must be active
262
+ .filter((upgrade) => upgrade.visible)
263
+ // must have remaining qty
264
+ .filter((upgrade) => upgrade.remainingQty > 0)
265
+ );
242
266
  },
243
267
  activeNonComplimentaryUpgrades(event: IEvent): IEventUpgrade[] {
244
- return this.activeUpgrades(event)
245
- // must not be complimentary
246
- .filter(upgrade => !upgrade.complimentary);
268
+ return (
269
+ this.activeUpgrades(event)
270
+ // must not be complimentary
271
+ .filter((upgrade) => !upgrade.complimentary)
272
+ );
247
273
  },
248
274
  remainingUpgradeQty(event, upgradeId: string | null = null): number {
249
275
  if (upgradeId) {
@@ -269,7 +295,10 @@ export default {
269
295
  }, {});
270
296
  },
271
297
  isUpgradeForSpecificTickets(event: IEvent, upgrade: IEventUpgrade): boolean {
272
- return Boolean(event?.ticketTypes?.map((t) => t._id).sort() === upgrade?.ticketTypeIds?.sort());
298
+ return Boolean(
299
+ event?.ticketTypes?.map((t) => t._id).sort() ===
300
+ upgrade?.ticketTypeIds?.sort()
301
+ );
273
302
  },
274
303
  /****************************************************************************************
275
304
  * Promotions
@@ -279,135 +308,401 @@ export default {
279
308
  (promotions) => promotions._id === promotionId
280
309
  );
281
310
  },
282
- activePromotions(event: IEvent, type: EventPromotionTypeEnum | null = null): IEventPromotion[] {
311
+ activePromotions(
312
+ event: IEvent,
313
+ type: EventPromotionTypeEnum | null = null
314
+ ): IEventPromotion[] {
283
315
  const now = Time.now();
284
316
 
285
317
  let promotions = (event?.promotions ?? [])
286
318
  // must be active
287
- .filter(promotion => promotion.active)
319
+ .filter((promotion) => promotion.active)
288
320
  // must have remaining qty
289
- .filter(promotion => promotion.remainingQty > 0)
321
+ .filter((promotion) => promotion.remainingQty > 0)
290
322
  // must be in the correct time
291
- .filter(promotion => promotion.startsAt < now && now < promotion.endsAt);
323
+ .filter(
324
+ (promotion) => promotion.startsAt < now && now < promotion.endsAt
325
+ );
292
326
 
293
327
  // Optional type
294
- if(type !== null) {
295
- promotions = promotions.filter(
296
- promotion => promotion.type === type
297
- );
328
+ if (type !== null) {
329
+ promotions = promotions.filter((promotion) => promotion.type === type);
298
330
  }
299
331
 
300
- return promotions
332
+ return promotions;
301
333
  },
302
334
  /****************************************************************************************
303
335
  * Custom Fields
304
336
  ****************************************************************************************/
305
337
  customField(event: IEvent, customFieldId: string): IEventCustomField | null {
306
- return event?.customFields?.find(
307
- (customField) => customField._id === customFieldId
308
- ) ?? null;
338
+ return (
339
+ event?.customFields?.find(
340
+ (customField) => customField._id === customFieldId
341
+ ) ?? null
342
+ );
309
343
  },
310
344
  activeCustomFields(event: IEvent): IEventCustomField[] {
311
- return event.customFields?.filter(customField => customField.active) ?? [];
345
+ return (
346
+ event.customFields?.filter((customField) => customField.active) ?? []
347
+ );
312
348
  },
313
349
  hasCustomFields(event) {
314
350
  return (
315
351
  event.customFields.filter((customField) => customField.active).length > 0
316
352
  );
317
353
  },
318
- customFieldsAreValid(eventCustomFields: IEventCustomField[], orderCustomFields: IOrderCustomField[] ): boolean {
319
- const activeFields = eventCustomFields?.filter(
320
- (eventCustomField) => eventCustomField.active
321
- ) ?? [];
354
+ // Fixed issue SELLOUT-49
355
+ customFieldsAreValid(
356
+ eventCustomFields: IEventCustomField[],
357
+ orderCustomFields: IOrderCustomField[]
358
+ ): boolean {
359
+ const activeFields =
360
+ eventCustomFields?.filter(
361
+ (eventCustomField) => eventCustomField.active
362
+ ) ?? [];
322
363
 
323
- const validFields = activeFields?.filter((eventCustomField) => {
324
- const {
325
- _id,
326
- minLength,
327
- maxLength,
328
- minValue,
329
- maxValue,
330
- required,
331
- } = eventCustomField;
364
+ const validFields =
365
+ activeFields?.filter((eventCustomField) => {
366
+ const { _id, minLength, maxLength, minValue, maxValue, required } =
367
+ eventCustomField;
332
368
 
333
- const orderCustomField = orderCustomFields.find(
334
- (orderCustomField) => orderCustomField.customFieldId === _id
335
- );
369
+ const orderCustomField = orderCustomFields.find(
370
+ (orderCustomField) => orderCustomField.customFieldId === _id
371
+ );
336
372
 
337
- // Field has not been filled out
338
- if (!orderCustomField) return false;
373
+ // Field is not required and orderCustomField not empty
374
+ if (!required && !orderCustomField) return true;
339
375
 
340
- let { value } = orderCustomField;
376
+ // Field has not been filled out
377
+ if (!orderCustomField) return false;
341
378
 
342
- if (eventCustomField.type === CustomFieldTypeEnum.Text) {
343
- value = <string>value;
344
- if (minLength === 0 && maxLength === 0) {
345
- return !(required && value.length === 0);
346
- }
379
+ let { value } = orderCustomField;
347
380
 
348
- if (minLength <= value.length && value.length <= maxLength) {
381
+ if (
382
+ !required &&
383
+ (value === undefined || value === "NaN" || value === "" || value === DropDownEnum.Select)
384
+ ) {
349
385
  return true;
350
386
  }
351
387
 
352
- return false;
353
- } else {
354
- value = <number>value;
355
- if (minValue === 0 && maxValue === 0) {
356
- return !(required && value === 0);
357
- }
358
-
359
- if (minValue <= value && value <= maxValue) {
360
- return true;
388
+ if (eventCustomField.type === CustomFieldTypeEnum.Text) {
389
+ value = <string>value;
390
+ if (value) {
391
+ if (minLength === 0 && maxLength === 0 && value.length > 0) {
392
+ return true;
393
+ } else if (minLength === 0 && value.length <= maxLength) {
394
+ return true;
395
+ } else if (maxLength === 0 && minLength <= value.length) {
396
+ return true;
397
+ } else if (minLength <= value.length && value.length <= maxLength) {
398
+ return true;
399
+ }
400
+ }
401
+ return false;
402
+ } else if (eventCustomField.type === CustomFieldTypeEnum.Dropdown) {
403
+ value = <string>value;
404
+ if (value !== "" && value !== DropDownEnum.Select) {
405
+ return true;
406
+ }
407
+ return false;
408
+ } else if (eventCustomField.type === CustomFieldTypeEnum.Address) {
409
+ value = <string>value;
410
+ if (value !== "") {
411
+ return true;
412
+ }
413
+ return false;
414
+ } else {
415
+ value = <number>value;
416
+ if (value) {
417
+ if (minValue === 0 && maxValue === 0 && value > 0) {
418
+ return true;
419
+ } else if (minValue === 0 && value <= maxValue) {
420
+ return true;
421
+ } else if (maxValue === 0 && minValue <= value) {
422
+ return true;
423
+ } else if (minValue <= value && value <= maxValue) {
424
+ return true;
425
+ }
426
+ }
427
+ return false;
361
428
  }
362
-
363
- return false;
364
- }
365
-
366
- }) ?? [];
429
+ }) ?? [];
367
430
 
368
431
  return validFields.length === activeFields.length;
369
432
  },
370
433
  /****************************************************************************************
371
- * Publish
434
+ * Publish validate
372
435
  ****************************************************************************************/
373
436
  validatePublish(event: IEvent): any {
374
437
  let eventSchema;
375
438
 
376
- switch(event.type) {
439
+ switch (event.type) {
377
440
  case EventTypeEnum.GeneralEvent:
378
- eventSchema = Joi.object().options({ abortEarly: false }).keys({
379
- name: Joi.string().required().messages({ 'any.required': 'Event title is a required field' }),
380
- description: Joi.string().required().messages({ 'any.required': 'Event description is a required field' }),
381
- posterImageUrl: Joi.string().required().messages({ 'any.required': 'Event image is a required field' }),
382
- venueId: Joi.string().required().messages({ 'any.required': 'An event venue is required' }),
383
- ticketTypes: Joi.array().min(1).items(Joi.object().options({ allowUnknown: true }).keys({
384
- name: Joi.string().required(),
385
- remainingQty: Joi.number().required(),
386
- totalQty: Joi.number().required(),
387
- purchaseLimit: Joi.number().required(),
388
- tiers: Joi.array().items(Joi.object().keys({
389
- name: Joi.string().required(),
390
- price: Joi.number().required(),
391
- remainingQty: Joi.number().required(),
392
- totalQty: Joi.number().required(),
393
- }).unknown(true)),
394
- })).messages({ 'any.required': 'Event image is a required field' }),
395
- }).unknown(true);
396
- break;
397
- case EventTypeEnum.Concert:
398
- eventSchema = Joi.object().options({ abortEarly: false }).keys({
399
- name: Joi.string().required().messages({ 'any.required': 'Event title is a required field' }),
400
- description: Joi.string().required().messages({ 'any.required': 'Event description is a required field' }),
401
- posterImageUrl: Joi.string().required().messages({ 'any.required': 'Event image is a required field' }),
402
- venueId: Joi.string().required().messages({ 'any.required': 'An event venue is required' }),
403
- performances: Joi.array().items(Joi.object().keys({
404
- headliningArtistIds: Joi.array().items(Joi.string().required()).messages({ 'array.includesRequiredUnknowns': 'An event performer is required for a concert' }),
405
- }).unknown(true)).default([]),
406
- }).unknown(true);
407
- break;
441
+ eventSchema = Joi.object()
442
+ .options({ abortEarly: false })
443
+ .keys({
444
+ name: Joi.string()
445
+ .required()
446
+ .messages({ "string.empty": '"Event name" is a required field' }),
447
+ description: Joi.string().required().messages({
448
+ "string.empty": '"Event description" is a required field',
449
+ }),
450
+ posterImageUrl: Joi.string().required().messages({
451
+ "string.empty": '"Event image" is a required field',
452
+ }),
453
+ venueId: Joi.string()
454
+ .required()
455
+ .messages({ "string.empty": '"Venue" is required' }),
456
+ ticketTypes: Joi.array()
457
+ .min(1)
458
+ .items(
459
+ Joi.object()
460
+ .options({ allowUnknown: true })
461
+ .keys({
462
+ name: Joi.string().required(),
463
+ remainingQty: Joi.number().required(),
464
+ totalQty: Joi.number().required(),
465
+ purchaseLimit: Joi.number().required(),
466
+ tiers: Joi.array().items(
467
+ Joi.object()
468
+ .keys({
469
+ name: Joi.string().required(),
470
+ price: Joi.number().required(),
471
+ remainingQty: Joi.number().required(),
472
+ totalQty: Joi.number().required(),
473
+ })
474
+ .unknown(true)
475
+ ),
476
+ })
477
+ )
478
+ .messages({ "array.min": "Event must have atleast 1 ticket" }),
479
+ })
480
+ .unknown(true);
481
+ break;
482
+ case EventTypeEnum.Concert:
483
+ eventSchema = Joi.object()
484
+ .options({ abortEarly: false })
485
+ .keys({
486
+ name: Joi.string()
487
+ .required()
488
+ .messages({ "string.empty": '"Event name" is a required field' }),
489
+ description: Joi.string().required().messages({
490
+ "string.empty": '"Event description" is a required field',
491
+ }),
492
+ posterImageUrl: Joi.string().required().messages({
493
+ "string.empty": '"Event image" is a required field',
494
+ }),
495
+ venueId: Joi.string()
496
+ .required()
497
+ .messages({ "string.empty": '"Venue" is required' }),
498
+ performances: Joi.array()
499
+ .items(
500
+ Joi.object()
501
+ .keys({
502
+ headliningArtistIds: Joi.array()
503
+ .items(Joi.string().required())
504
+ .messages({
505
+ "array.includesRequiredUnknowns":
506
+ "An event performer is required for a concert",
507
+ }),
508
+ })
509
+ .unknown(true)
510
+ )
511
+ .default([]),
512
+ })
513
+ .unknown(true);
514
+ break;
408
515
  }
409
516
 
410
517
  return eventSchema.validate(event);
411
- }
412
-
518
+ },
519
+ /****************************************************************************************
520
+ * Ticket validate
521
+ ****************************************************************************************/
522
+ validateTicket(ticket: ITicketType, isPaid: Boolean): any {
523
+ let ticketSchema;
524
+ let limit = isPaid ? "Purchase limit" : "RSVP limit";
525
+ let used = ticket.totalQty - ticket.remainingQty;
526
+ ticketSchema = Joi.object()
527
+ .options({ abortEarly: false })
528
+ .keys({
529
+ name: Joi.string()
530
+ .required()
531
+ .messages({ "string.empty": '"Ticket name" is a required field' }),
532
+ remainingQty: Joi.number().required(),
533
+ totalQty: Joi.number().required().min(1).messages({
534
+ "number.required": '"Total qty." is a required field',
535
+ "number.min": '"Total qty." must be greater than 0',
536
+ }),
537
+ purchaseLimit: Joi.number()
538
+ .required()
539
+ .min(1)
540
+ .messages({
541
+ "number.required": `"${limit}" is a required field`,
542
+ "number.min": `"${limit}" must be greater than 0`,
543
+ "number.base": `"${limit}" must be a number`,
544
+ }),
545
+ tiers: Joi.array().items(
546
+ Joi.object()
547
+ .keys({
548
+ name: Joi.string().required(),
549
+ price: Joi.number().required(),
550
+ remainingQty: Joi.number().required(),
551
+ totalQty: Joi.number()
552
+ .custom((value, helpers) => {
553
+ if (value > 0 && value < used) {
554
+ return helpers.error("totalqty.invalid");
555
+ }
556
+ return value;
557
+ })
558
+ .messages({
559
+ "totalqty.invalid":
560
+ '"Total qty." must be greater than or equal to number of ticket sold',
561
+ })
562
+ .required(),
563
+ })
564
+ .unknown(true)
565
+ ),
566
+ })
567
+ .unknown(true);
568
+ return ticketSchema.validate(ticket);
569
+ },
570
+ /****************************************************************************************
571
+ * Upgrade validate
572
+ ****************************************************************************************/
573
+ validateUpgrade(upgrade: IEventUpgrade, isPaid: Boolean): any {
574
+ let upgradeSchema;
575
+ let limit = isPaid ? "Purchase limit" : "RSVP limit";
576
+ let used = upgrade.totalQty - upgrade.remainingQty;
577
+ upgradeSchema = Joi.object()
578
+ .options({ abortEarly: false })
579
+ .keys({
580
+ name: Joi.string()
581
+ .required()
582
+ .messages({ "string.empty": '"Upgrade name" is a required field' }),
583
+ price: Joi.number().required(),
584
+ totalQty: Joi.number()
585
+ .custom((value, helpers) => {
586
+ if (value > 0 && value < used) {
587
+ return helpers.error("totalqty.invalid");
588
+ }
589
+ return value;
590
+ })
591
+ .messages({
592
+ "totalqty.invalid":
593
+ '"Total qty." must be greater than or equal to number of upgrade sold',
594
+ })
595
+ .required()
596
+ .min(1)
597
+ .messages({
598
+ "number.required": '"Total qty." is a required field',
599
+ "number.min": '"Total qty." must be greater than 0',
600
+ }),
601
+ remainingQty: Joi.number(),
602
+ purchaseLimit: Joi.number()
603
+ .required()
604
+ .min(1)
605
+ .messages({
606
+ "number.required": `"${limit}" is a required field`,
607
+ "number.min": `"${limit}" must be greater than 0`,
608
+ "number.base": `"${limit}" must be a number`,
609
+ }),
610
+ complimentary: Joi.boolean().required(),
611
+ complimentaryWith: Joi.string().required(),
612
+ complimentaryQty: Joi.number().required(),
613
+ ticketTypeIds: Joi.array().items(Joi.string()).default([]),
614
+ imageUrl: Joi.string().optional().allow(""),
615
+ description: Joi.string().optional().allow(""),
616
+ visible: Joi.boolean().required(),
617
+ rollFees: Joi.boolean().required(),
618
+ })
619
+ .unknown(true);
620
+ return upgradeSchema.validate(upgrade);
621
+ },
622
+ /****************************************************************************************
623
+ * Promotion validate
624
+ ****************************************************************************************/
625
+ validatePromotion(promotion: IEventPromotion): any {
626
+ let promotionSchema;
627
+ let used = promotion.totalQty - promotion.remainingQty;
628
+ promotionSchema = Joi.object()
629
+ .options({ abortEarly: false })
630
+ .keys({
631
+ code: Joi.string()
632
+ .required()
633
+ .messages({ "string.empty": '"Secret code" is a required field' }),
634
+ type: Joi.string().required(),
635
+ remainingQty: Joi.number(),
636
+ totalQty: Joi.number()
637
+ .custom((value, helpers) => {
638
+ if (value > 0 && value < used) {
639
+ return helpers.error("totalqty.invalid");
640
+ }
641
+ return value;
642
+ })
643
+ .messages({
644
+ "totalqty.invalid":
645
+ '"Total qty." must be greater than or equal to number of secret code sold',
646
+ })
647
+ .required()
648
+ .min(1)
649
+ .messages({
650
+ "number.required": '"Total qty." is a required field',
651
+ "number.min": '"Total qty." must be greater than 0',
652
+ }),
653
+ ticketTypeIds: Joi.array().items(Joi.string()).default([]),
654
+ upgradeIds: Joi.array().items(Joi.string()).default([]),
655
+ active: Joi.boolean().required(),
656
+ startsAt: Joi.number().required(),
657
+ endsAt: Joi.number().required(),
658
+ useLimit: Joi.number().min(1).messages({
659
+ "number.required": '"Use limit" is a required field',
660
+ "number.min": 'Use limit" must be greater than 0',
661
+ "number.base": '"Use limit" must be a number',
662
+ }),
663
+ discountType: Joi.string(),
664
+ discountValue: Joi.number(),
665
+ })
666
+ .unknown(true);
667
+ return promotionSchema.validate(promotion);
668
+ },
669
+ /****************************************************************************************
670
+ * CustomField validate
671
+ ****************************************************************************************/
672
+ validateCustomField(customField: IEventCustomField): any {
673
+ let customFieldSchema;
674
+ customFieldSchema = Joi.object()
675
+ .options({ abortEarly: false })
676
+ .keys({
677
+ label: Joi.string()
678
+ .required()
679
+ .messages({ "string.empty": '"Question" is a required field' }),
680
+ type: Joi.string().required(),
681
+ // minLength: Joi.number(),
682
+ // maxLength: Joi.number(),
683
+ // minValue: Joi.number(),
684
+ // maxValue: Joi.number(),
685
+ options: Joi.array().items(Joi.string()).default([]),
686
+ required: Joi.boolean().required(),
687
+ active: Joi.boolean().required(),
688
+ })
689
+ .unknown(true);
690
+ return customFieldSchema.validate(customField);
691
+ },
692
+ validateRefundModal(refundField: IRefundModal): any {
693
+ let refundFieldSchema;
694
+ refundFieldSchema = Joi.object()
695
+ .options({ abortEarly: false })
696
+ .keys({
697
+ // ticketIds: Joi.array()
698
+ // .min(1)
699
+ // .items(Joi.string())
700
+ // .messages({ "array.min": "Select any one checkbox for refunding." }),
701
+ refundReason: Joi.string()
702
+ .required()
703
+ .messages({ "string.empty": '"Reason" is a required field' }),
704
+ })
705
+ .unknown(true);
706
+ return refundFieldSchema.validate(refundField);
707
+ },
413
708
  };