import * as z from "zod";

export type NewUserSchema = {
  name?: string;
  email: string;
  permissions: string;
};

export const getNewUserSchema = (dict: Dictionary) => {
  const { name, email, permissions } = dict.pages.users.form.new.fields;

  return z.object({
    name: z
      .string()
      .optional()
      .superRefine((val, ctx) => {
        const regex = /^[a-zA-Z0-9]+$/;

        if (!val) {
          ctx.addIssue({
            code: z.ZodIssueCode.custom,
            message: name.errors.required,
          });
        }

        if (!regex.test(val)) {
          ctx.addIssue({
            code: z.ZodIssueCode.custom,
            message: name.errors.alphanumeric,
          });
        }

        if (val && val.length < 6) {
          ctx.addIssue({
            code: z.ZodIssueCode.custom,
            message: name.errors.min_length,
          });
        }

        if (val && val.length > 16) {
          ctx.addIssue({
            code: z.ZodIssueCode.custom,
            message: name.errors.max_length,
          });
        }
      }),
    email: z
      .string()
      .email(email.errors.required)
      .min(1, email.errors.required),
    permissions: z.string().min(1, permissions.errors.required),
  });
};
