import { z } from 'zod'; /** * Espelha `UpdateTenantEmailConfigDto`: quando `usar_config_padrao` é * `false`, todos os campos de SMTP próprio ficam obrigatórios (mesma * validação condicional do `@ValidateIf` do backend). */ export const tenantEmailConfigSchema = z .object({ usar_config_padrao: z.boolean(), smtp_host: z.string().optional(), smtp_porta: z.number().int().min(1).max(65535).optional(), smtp_usuario: z.string().optional(), smtp_senha: z.string().optional(), email_remetente: z.string().optional(), }) .superRefine((data, ctx) => { if (data.usar_config_padrao) return; if (!data.smtp_host || data.smtp_host.length < 2) { ctx.addIssue({ code: 'custom', path: ['smtp_host'], message: 'Informe o host do SMTP' }); } if (!data.smtp_porta) { ctx.addIssue({ code: 'custom', path: ['smtp_porta'], message: 'Informe a porta do SMTP' }); } if (!data.smtp_usuario) { ctx.addIssue({ code: 'custom', path: ['smtp_usuario'], message: 'Informe o usuário do SMTP' }); } if (!data.smtp_senha) { ctx.addIssue({ code: 'custom', path: ['smtp_senha'], message: 'Informe a senha do SMTP' }); } if (!data.email_remetente || !z.email().safeParse(data.email_remetente).success) { ctx.addIssue({ code: 'custom', path: ['email_remetente'], message: 'E-mail remetente inválido' }); } }); export type TenantEmailConfigFormValues = z.infer; export const testarEnvioEmailSchema = z.object({ destinatario: z.email('E-mail inválido'), }); export type TestarEnvioEmailFormValues = z.infer;