"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.smsSchema = exports.notificationSchema = exports.editElectedMemberPasswordSchema = exports.electedMemebrActiveSchema = exports.emailSchema = exports.editElectedMemberSchema = exports.electedMemberSchema = void 0;
const zod_1 = require("zod");
const user_1 = require("../../data/user");
// --------------------------------------------------------------------------------------------------
const electedMemberSchemaBase = {
    civility: zod_1.z.enum(user_1.civilities, {
        required_error: "La civilité et obligatoire",
        invalid_type_error: "La civilité est invalide",
    }),
    lastName: zod_1.z
        .string({ required_error: "Le nom est obligatoire" })
        .min(1, "Le nom est obligatoire")
        .max(250, "250 caractères au maximum"),
    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"),
    positionId: zod_1.z
        .string({ required_error: "La fonction est obligatoire" })
        .min(1, "La fonction est obligatoire"),
    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********)",
    }),
    adresse: zod_1.z.string().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"),
    collegeId: zod_1.z
        .string({ required_error: "Le collège est obligatoire" })
        .min(1, { message: "Le collège est obligatoire" }),
    provinceId: zod_1.z
        .string({ required_error: "La province est obligatoire" })
        .min(1, { message: "La province est obligatoire" }),
    mandateId: zod_1.z
        .string({ required_error: "Le mondat est obligatoire" })
        .min(1, { message: "Le mondat est obligatoire" }),
    commissions: zod_1.z.array(zod_1.z.string()),
    details: zod_1.z.string().max(4000, "4000 caractères au maximum"),
};
exports.electedMemberSchema = zod_1.z.object(Object.assign(Object.assign({}, electedMemberSchemaBase), { 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.editElectedMemberSchema = zod_1.z.object(Object.assign({}, electedMemberSchemaBase));
// --------------------------------------------------------------------------------
exports.emailSchema = zod_1.z.object({
    electedMembers: zod_1.z
        .array(zod_1.z.string())
        .min(1, { message: "Vous devez selectionner au moins un membre elu" }),
    subject: zod_1.z
        .string({ required_error: "L'objet est obligatoire" })
        .min(1, "L'objet est obligatoire")
        .max(500, "500 caractères au maximum"),
    body: zod_1.z
        .string({ required_error: "Le message est obligatoire" })
        .min(1, "Le message est obligatoire"),
});
// --------------------------------------------------------------------------------------------------
exports.electedMemebrActiveSchema = zod_1.z.object({
    active: zod_1.z.boolean(),
});
//----------------------------------------------------------------------------------------
exports.editElectedMemberPasswordSchema = 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.notificationSchema = zod_1.z.object({
    electedMembers: zod_1.z
        .array(zod_1.z.string())
        .min(1, { message: "Vous devez selectionner au moins un membre élu" }),
    content: zod_1.z
        .string({ required_error: "Le message est obligatoire" })
        .min(1, "Le message est obligatoire")
        .max(500, "500 caractères au maximum"),
});
//---------------------------------------------------------------------------------
exports.smsSchema = zod_1.z.object({
    electedMembers: zod_1.z
        .array(zod_1.z.string())
        .min(1, { message: "Vous devez selectionner au moins un membre élu" }),
    content: zod_1.z
        .string({ required_error: "Le message est obligatoire" })
        .min(1, "Le message est obligatoire")
        .max(500, "500 caractères au maximum"),
});
//---------------------------------------------------------------------------------
