client-activities-api.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. import { z } from "zod";
  2. import { actTypes } from "../types/act-types.js";
  3. import {
  4. CustomFieldWithUserCopyValue,
  5. CustomFieldWithValidatorsAndValue,
  6. InputFieldValue,
  7. } from "../types/custom-fields-types.js";
  8. import { PeMemberWithIdentityShema } from "../types/pe-types.js";
  9. class ClientActivitiesApi {
  10. GET_EventActivities = {
  11. res: z.object({
  12. code: z.enum(["success"]),
  13. categories: z.array(actTypes.ActCategory),
  14. activities: z.array(
  15. actTypes.Activity.extend({
  16. isOpen: z.boolean(),
  17. messages: z.array(z.string()),
  18. }),
  19. ),
  20. }),
  21. };
  22. GET_Category = {
  23. req: {
  24. params: z.object({
  25. categoryCode: z.string(),
  26. }),
  27. },
  28. res: z.object({
  29. code: z.enum(["success"]),
  30. categories: z.array(actTypes.ActCategory),
  31. activities: z.array(
  32. actTypes.Activity.extend({
  33. isOpen: z.boolean(),
  34. messages: z.array(z.string()),
  35. }),
  36. ),
  37. }),
  38. };
  39. GET_ActRegData = {
  40. req: {
  41. params: z.object({
  42. activityCode: z.string(),
  43. }),
  44. },
  45. res: z.object({
  46. code: z.enum(["success"]),
  47. actRegData: z.object({
  48. activityId: z.string(),
  49. code: z.string(),
  50. publicName: z.string(),
  51. eventInstId: z.string(),
  52. categoryId: z.string().nullable(),
  53. categoryCode: z.string(),
  54. isUserReg: z.boolean(),
  55. isOpen: z.boolean(),
  56. messages: z.array(z.string()),
  57. fields: z.array(
  58. CustomFieldWithUserCopyValue.extend({
  59. arffId: z.string().uuid(),
  60. }),
  61. ),
  62. peTypes: z.array(
  63. z.object({
  64. peTypeId: z.string().uuid(),
  65. code: z.string(),
  66. name: z.string(),
  67. }),
  68. ),
  69. validatedPes: z.array(
  70. z.object({
  71. peId: z.string().uuid(),
  72. peTypeId: z.string().uuid(),
  73. peTypeCode: z.string(),
  74. peTypeName: z.string(),
  75. name: z.string(),
  76. isValid: z.boolean(),
  77. messages: z.array(z.string()),
  78. }),
  79. ),
  80. }),
  81. }),
  82. };
  83. POST_RegisterToAct = {
  84. req: {
  85. params: z.object({
  86. activityCode: z.string(),
  87. }),
  88. body: z.object({
  89. peId: z.string().uuid().optional(),
  90. fields: z.array(
  91. z.object({
  92. value: InputFieldValue,
  93. arffId: z.string().uuid(),
  94. }),
  95. ),
  96. }),
  97. },
  98. res: z.object({
  99. code: z.enum(["success"]),
  100. activityRegId: z.string().uuid(),
  101. }),
  102. };
  103. GET_ActRegs = {
  104. res: z.object({
  105. code: z.enum(["success"]),
  106. actRegs: z.array(actTypes.ActivityReg),
  107. }),
  108. };
  109. GET_ActReg = {
  110. req: {
  111. params: z.object({
  112. activityRegId: z.string().uuid(),
  113. }),
  114. },
  115. res: z.object({
  116. code: z.enum(["success"]),
  117. actReg: z.discriminatedUnion("role", [
  118. actTypes.ActivityRegWithFields.extend({
  119. role: z.literal("owner"),
  120. peMembers: z
  121. .array(
  122. PeMemberWithIdentityShema.extend({
  123. isPaid: z.boolean(),
  124. }),
  125. )
  126. .optional(),
  127. }),
  128. actTypes.ActivityReg.extend({ role: z.literal("member") }),
  129. ]),
  130. }),
  131. };
  132. GET_Activity = {
  133. req: {
  134. params: z.object({
  135. activityCode: z.string(),
  136. }),
  137. },
  138. res: z.object({
  139. code: z.enum(["success"]),
  140. act: z.object({
  141. activityId: z.string().uuid(),
  142. code: z.string(),
  143. publicName: z.string(),
  144. eventInstId: z.string().uuid(),
  145. categoryId: z.string().uuid().nullable(),
  146. isUserReg: z.boolean(),
  147. paymentConfig: z.enum([
  148. "PER_REGISTRATION",
  149. "PER_PARTICIPANT",
  150. "FREE",
  151. "NONE",
  152. ]),
  153. registrationProductId: z.string().uuid().nullable(),
  154. participantProductId: z.string().uuid().nullable(),
  155. }),
  156. }),
  157. };
  158. GET_ActRegForPatch = {
  159. req: {
  160. params: z.object({
  161. activityRegId: z.string().uuid(),
  162. }),
  163. },
  164. res: z.object({
  165. code: z.enum(["success"]),
  166. actReg: actTypes.ActivityReg.extend({
  167. fields: z.array(
  168. CustomFieldWithValidatorsAndValue.extend({
  169. arffId: z.string().uuid(),
  170. isChangeResetStatus: z.boolean(),
  171. }),
  172. ),
  173. }),
  174. }),
  175. };
  176. PATCH_ActReg = {
  177. req: {
  178. params: z.object({
  179. activityRegId: z.string().uuid(),
  180. }),
  181. formData: {
  182. body: z.object({
  183. peId: z.string().uuid().optional(),
  184. fields: z.array(
  185. z.object({
  186. value: InputFieldValue,
  187. arffId: z.string().uuid(),
  188. }),
  189. ),
  190. }),
  191. },
  192. },
  193. res: z.object({
  194. code: z.enum(["success"]),
  195. }),
  196. };
  197. DELETE_ActivityReg = {
  198. req: {
  199. params: z.object({
  200. activityRegId: z.string().uuid(),
  201. }),
  202. },
  203. res: z.object({
  204. code: z.enum(["success"]),
  205. }),
  206. };
  207. }
  208. export const clientActivitiesApi = new ClientActivitiesApi();