import { z } from 'zod'; // Company validators export const createCompanySchema = z.object({ name: z .string({ required_error: 'Názov firmy je povinný', }) .min(1, 'Názov firmy nemôže byť prázdny') .max(255, 'Názov firmy môže mať maximálne 255 znakov'), description: z.string().max(1000).optional(), address: z.string().max(255).optional(), city: z.string().max(100).optional(), country: z.string().max(100).optional(), phone: z.string().max(50).optional(), email: z.string().email('Neplatný formát emailu').max(255).optional().or(z.literal('')), website: z.string().url('Neplatný formát URL').max(255).optional().or(z.literal('')), }); export const updateCompanySchema = z.object({ name: z.string().min(1).max(255).optional(), description: z.string().max(1000).optional(), address: z.string().max(255).optional(), city: z.string().max(100).optional(), country: z.string().max(100).optional(), phone: z.string().max(50).optional(), email: z.string().email('Neplatný formát emailu').max(255).optional().or(z.literal('')), website: z.string().url('Neplatný formát URL').max(255).optional().or(z.literal('')), }); // Project validators export const createProjectSchema = z.object({ name: z .string({ required_error: 'Názov projektu je povinný', }) .min(1, 'Názov projektu nemôže byť prázdny') .max(255, 'Názov projektu môže mať maximálne 255 znakov'), description: z.string().max(1000).optional(), companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('')), status: z.enum(['active', 'completed', 'on_hold', 'cancelled']).optional(), startDate: z.string().optional().or(z.literal('')), endDate: z.string().optional().or(z.literal('')), }); export const updateProjectSchema = z.object({ name: z.string().min(1).max(255).optional(), description: z.string().max(1000).optional(), companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('').or(z.null())), status: z.enum(['active', 'completed', 'on_hold', 'cancelled']).optional(), startDate: z.string().optional().or(z.literal('').or(z.null())), endDate: z.string().optional().or(z.literal('').or(z.null())), }); // Todo validators export const createTodoSchema = z.object({ title: z .string({ required_error: 'Názov todo je povinný', }) .min(1, 'Názov todo nemôže byť prázdny') .max(255, 'Názov todo môže mať maximálne 255 znakov'), description: z.string().max(1000).optional(), projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('')), companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('')), assignedTo: z.string().uuid('Neplatný formát user ID').optional().or(z.literal('')), status: z.enum(['pending', 'in_progress', 'completed', 'cancelled']).optional(), priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(), dueDate: z.string().optional().or(z.literal('')), }); export const updateTodoSchema = z.object({ title: z.string().min(1).max(255).optional(), description: z.string().max(1000).optional(), projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('').or(z.null())), companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('').or(z.null())), assignedTo: z.string().uuid('Neplatný formát user ID').optional().or(z.literal('').or(z.null())), status: z.enum(['pending', 'in_progress', 'completed', 'cancelled']).optional(), priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(), dueDate: z.string().optional().or(z.literal('').or(z.null())), }); // Note validators export const createNoteSchema = z.object({ title: z.string().max(255).optional(), content: z .string({ required_error: 'Obsah poznámky je povinný', }) .min(1, 'Obsah poznámky nemôže byť prázdny') .max(5000, 'Obsah poznámky môže mať maximálne 5000 znakov'), companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('')), projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('')), todoId: z.string().uuid('Neplatný formát todo ID').optional().or(z.literal('')), contactId: z.string().uuid('Neplatný formát contact ID').optional().or(z.literal('')), reminderDate: z.string().optional().or(z.literal('')), }); export const updateNoteSchema = z.object({ title: z.string().max(255).optional().or(z.literal('').or(z.null())), content: z.string().min(1).max(5000).optional(), companyId: z.string().uuid('Neplatný formát company ID').optional().or(z.literal('').or(z.null())), projectId: z.string().uuid('Neplatný formát project ID').optional().or(z.literal('').or(z.null())), todoId: z.string().uuid('Neplatný formát todo ID').optional().or(z.literal('').or(z.null())), contactId: z.string().uuid('Neplatný formát contact ID').optional().or(z.literal('').or(z.null())), reminderDate: z.string().optional().or(z.literal('').or(z.null())), });