41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { z } from "zod"
|
|
|
|
export const commissionStatusSchema = z.enum([
|
|
"new",
|
|
"scoped",
|
|
"in_progress",
|
|
"review",
|
|
"done",
|
|
"canceled",
|
|
])
|
|
|
|
export const createCustomerInputSchema = z.object({
|
|
name: z.string().min(1).max(180),
|
|
email: z.string().email().max(320).nullable().optional(),
|
|
phone: z.string().max(80).nullable().optional(),
|
|
instagram: z.string().max(120).nullable().optional(),
|
|
notes: z.string().max(4000).nullable().optional(),
|
|
isRecurring: z.boolean().default(false),
|
|
})
|
|
|
|
export const createCommissionInputSchema = z.object({
|
|
title: z.string().min(1).max(180),
|
|
description: z.string().max(4000).nullable().optional(),
|
|
status: commissionStatusSchema.default("new"),
|
|
customerId: z.string().uuid().nullable().optional(),
|
|
assignedUserId: z.string().max(120).nullable().optional(),
|
|
budgetMin: z.number().nonnegative().nullable().optional(),
|
|
budgetMax: z.number().nonnegative().nullable().optional(),
|
|
dueAt: z.date().nullable().optional(),
|
|
})
|
|
|
|
export const updateCommissionStatusInputSchema = z.object({
|
|
id: z.string().uuid(),
|
|
status: commissionStatusSchema,
|
|
})
|
|
|
|
export type CommissionStatus = z.infer<typeof commissionStatusSchema>
|
|
export type CreateCustomerInput = z.infer<typeof createCustomerInputSchema>
|
|
export type CreateCommissionInput = z.infer<typeof createCommissionInputSchema>
|
|
export type UpdateCommissionStatusInput = z.infer<typeof updateCommissionStatusInputSchema>
|