"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.subAdminActiveSchema = exports.editSubAdminPasswordSchema = exports.editSubAdminSchema = exports.subAdminSchema = void 0;
const zod_1 = require("zod");
const user_1 = require("../../data/user");
//----------------------------------------------------------------------------------------
exports.subAdminSchema = zod_1.z.object({
    civility: zod_1.z.enum(user_1.civilities, {
        required_error: "La civilité et obligatoire",
        invalid_type_error: "La civilité est invalide",
    }),
    firstName: zod_1.z
        .string({ required_error: "Le prénom est obligatoire" })
        .min(1, "Le prénom est obligatoire")
        .max(250, "250 caractères au maximum"),
    lastName: zod_1.z
        .string({ required_error: "Le nom est obligatoire" })
        .min(1, "Le nom est obligatoire")
        .max(250, "250 caractères au maximum"),
    email: zod_1.z
        .string({ required_error: "L'adresse mail est obligatoire" })
        .email({ message: "L'adresse mail est invalide" })
        .max(250, "250 caractères au maximum"),
    phoneNumber: zod_1.z
        .string({ required_error: "Le numéro de téléphone est obligatoire" })
        .refine((value) => /^0[67]\d{8}$/.test(value), {
        message: "Le numéro de téléphone est invalide (06******** ou 07********)",
    }),
    positionId: zod_1.z
        .string({ required_error: "La fonction est obligatoire" })
        .min(1, "La fonction est obligatoire")
        .max(250, "250 caractères au maximum"),
    department: zod_1.z.string().max(250, "250 caractères au maximum"),
    service: zod_1.z.string().max(250, "250 caractères au maximum"),
    permissions: zod_1.z.array(zod_1.z.enum(user_1.permissions)),
    password: zod_1.z
        .string({ required_error: "Le mot de passe est obligatoire" })
        .min(8, { message: "8 caractères au minimum" })
        .refine((value) => /^(?=.*[a-z])/.test(value), {
        message: "Le mot de passe doit contenir au moins une lettre minuscule",
    })
        .refine((value) => /^(?=.*[A-Z])/.test(value), {
        message: "Le mot de passe doit contenir au moins une lettre majuscule",
    })
        .refine((value) => /^(?=.*\d)/.test(value), {
        message: "Le mot de passe doit contenir au moins un chiffre",
    })
        .refine((value) => /^(?=.*[^\da-zA-Z])/.test(value), {
        message: "Le mot de passe doit contenir au moins un caractère spécial",
    }),
});
//----------------------------------------------------------------------------------------
exports.editSubAdminSchema = zod_1.z.object({
    civility: zod_1.z.enum(user_1.civilities, {
        required_error: "La civilité et obligatoire",
        invalid_type_error: "La civilité est invalide",
    }),
    firstName: zod_1.z
        .string({ required_error: "Le prénom est obligatoire" })
        .min(1, "Le prénom est obligatoire")
        .max(250, "250 caractères au maximum"),
    lastName: zod_1.z
        .string({ required_error: "Le nom est obligatoire" })
        .min(1, "Le nom est obligatoire")
        .max(250, "250 caractères au maximum"),
    email: zod_1.z
        .string({ required_error: "L'adresse mail est obligatoire" })
        .email({ message: "L'adresse mail est invalide" })
        .max(250, "250 caractères au maximum"),
    phoneNumber: zod_1.z
        .string({ required_error: "Le numéro de téléphone est obligatoire" })
        .refine((value) => /^0[67]\d{8}$/.test(value), {
        message: "Le numéro de téléphone est invalide (06******** ou 07********)",
    }),
    positionId: zod_1.z
        .string({ required_error: "La fonction est obligatoire" })
        .min(1, "La fonction est obligatoire")
        .max(250, "250 caractères au maximum"),
    department: zod_1.z.string().max(250, "250 caractères au maximum"),
    service: zod_1.z.string().max(250, "250 caractères au maximum"),
    permissions: zod_1.z.array(zod_1.z.enum(user_1.permissions)),
});
//----------------------------------------------------------------------------------------
exports.editSubAdminPasswordSchema = zod_1.z.object({
    password: zod_1.z
        .string({ required_error: "Le mot de passe est obligatoire" })
        .min(8, { message: "8 caractères au minimum" })
        .refine((value) => /^(?=.*[a-z])/.test(value), {
        message: "Le mot de passe doit contenir au moins une lettre minuscule",
    })
        .refine((value) => /^(?=.*[A-Z])/.test(value), {
        message: "Le mot de passe doit contenir au moins une lettre majuscule",
    })
        .refine((value) => /^(?=.*\d)/.test(value), {
        message: "Le mot de passe doit contenir au moins un chiffre",
    })
        .refine((value) => /^(?=.*[^\da-zA-Z])/.test(value), {
        message: "Le mot de passe doit contenir au moins un caractère spécial",
    }),
});
//----------------------------------------------------------------------------------------
exports.subAdminActiveSchema = zod_1.z.object({
    active: zod_1.z.boolean(),
});
//----------------------------------------------------------------------------------------
