Files
saladeaula.digital/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.add/data.ts
2025-12-26 11:19:14 -03:00

66 lines
1.2 KiB
TypeScript

import { z } from 'zod'
import { format } from 'date-fns'
export const MAX_ITEMS = 50
export const enrollment = z.object({
user: z
.object(
{
id: z.string(),
name: z.string(),
email: z.string(),
cpf: z.string('a')
},
{ error: 'Escolha um colaborador' }
)
.required(),
course: z
.object(
{
id: z.string(),
name: z.string(),
access_period: z.number(),
unit_price: z.number().optional()
},
{ error: 'Escolha um curso' }
)
.required(),
deduplication_window: z
.object({
offset_days: z.number()
})
.optional(),
scheduled_for: z
.date()
.optional()
.transform((date) => (date ? format(date, 'yyyy-MM-dd') : undefined))
})
export const formSchema = z.object({
enrollments: z.array(enrollment).min(1).max(MAX_ITEMS)
})
export type Schema = z.infer<typeof formSchema>
export type Enrollment = z.infer<typeof enrollment>
export type User = {
id: string
name: string
email: string
cpf: string
}
export type Course = {
id: string
name: string
access_period: number
metadata__unit_price?: number
}
export type Enrolled = {
status: 'fail' | 'success'
input_record: { user: any; course: any }
}