import { z } from 'zod';

const InviteSchema = z.object({
  email: z.string().email(),
  role: z.string().min(1).max(100),
  personal_code: z
    .string()
    .regex(/^[1-6]\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}\d$/, {
      message: 'Invalid Estonian personal code format',
    }),
});

export const InviteMembersSchema = z
  .object({
    invitations: InviteSchema.array().min(1).max(5),
  })
  .refine(
    (data) => {
      const emails = data.invitations.map((member) =>
        member.email.toLowerCase(),
      );

      const uniqueEmails = new Set(emails);

      return emails.length === uniqueEmails.size;
    },
    {
      message: 'Duplicate emails are not allowed',
      path: ['invitations'],
    },
  );
