import { z } from "zod"; import { actTypes } from "../types/act-types.js"; import { CustomFieldWithUserCopyValue, CustomFieldWithValidatorsAndValue, InputFieldValue, } from "../types/custom-fields-types.js"; import { PeMemberWithIdentityShema } from "../types/pe-types.js"; class ClientActivitiesApi { GET_EventActivities = { res: z.object({ code: z.enum(["success"]), categories: z.array(actTypes.ActCategory), activities: z.array( actTypes.Activity.extend({ isOpen: z.boolean(), messages: z.array(z.string()), }), ), }), }; GET_Category = { req: { params: z.object({ categoryCode: z.string(), }), }, res: z.object({ code: z.enum(["success"]), categories: z.array(actTypes.ActCategory), activities: z.array( actTypes.Activity.extend({ isOpen: z.boolean(), messages: z.array(z.string()), }), ), }), }; GET_ActRegData = { req: { params: z.object({ activityCode: z.string(), }), }, res: z.object({ code: z.enum(["success"]), actRegData: z.object({ activityId: z.string(), code: z.string(), publicName: z.string(), eventInstId: z.string(), categoryId: z.string().nullable(), categoryCode: z.string(), isUserReg: z.boolean(), isOpen: z.boolean(), messages: z.array(z.string()), fields: z.array( CustomFieldWithUserCopyValue.extend({ arffId: z.string().uuid(), }), ), peTypes: z.array( z.object({ peTypeId: z.string().uuid(), code: z.string(), name: z.string(), }), ), validatedPes: z.array( z.object({ peId: z.string().uuid(), peTypeId: z.string().uuid(), peTypeCode: z.string(), peTypeName: z.string(), name: z.string(), isValid: z.boolean(), messages: z.array(z.string()), }), ), }), }), }; POST_RegisterToAct = { req: { params: z.object({ activityCode: z.string(), }), body: z.object({ peId: z.string().uuid().optional(), fields: z.array( z.object({ value: InputFieldValue, arffId: z.string().uuid(), }), ), }), }, res: z.object({ code: z.enum(["success"]), activityRegId: z.string().uuid(), }), }; GET_ActRegs = { res: z.object({ code: z.enum(["success"]), actRegs: z.array(actTypes.ActivityReg), }), }; GET_ActReg = { req: { params: z.object({ activityRegId: z.string().uuid(), }), }, res: z.object({ code: z.enum(["success"]), actReg: z.discriminatedUnion("role", [ actTypes.ActivityRegWithFields.extend({ role: z.literal("owner"), peMembers: z .array( PeMemberWithIdentityShema.extend({ isPaid: z.boolean(), }), ) .optional(), }), actTypes.ActivityReg.extend({ role: z.literal("member") }), ]), }), }; GET_Activity = { req: { params: z.object({ activityCode: z.string(), }), }, res: z.object({ code: z.enum(["success"]), act: z.object({ activityId: z.string().uuid(), code: z.string(), publicName: z.string(), eventInstId: z.string().uuid(), categoryId: z.string().uuid().nullable(), isUserReg: z.boolean(), paymentConfig: z.enum([ "PER_REGISTRATION", "PER_PARTICIPANT", "FREE", "NONE", ]), registrationProductId: z.string().uuid().nullable(), participantProductId: z.string().uuid().nullable(), }), }), }; GET_ActRegForPatch = { req: { params: z.object({ activityRegId: z.string().uuid(), }), }, res: z.object({ code: z.enum(["success"]), actReg: actTypes.ActivityReg.extend({ fields: z.array( CustomFieldWithValidatorsAndValue.extend({ arffId: z.string().uuid(), isChangeResetStatus: z.boolean(), }), ), }), }), }; PATCH_ActReg = { req: { params: z.object({ activityRegId: z.string().uuid(), }), formData: { body: z.object({ peId: z.string().uuid().optional(), fields: z.array( z.object({ value: InputFieldValue, arffId: z.string().uuid(), }), ), }), }, }, res: z.object({ code: z.enum(["success"]), }), }; DELETE_ActivityReg = { req: { params: z.object({ activityRegId: z.string().uuid(), }), }, res: z.object({ code: z.enum(["success"]), }), }; } export const clientActivitiesApi = new ClientActivitiesApi();