"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.passwordSchema = exports.otherInformationSchema = exports.profileSchema = exports.notificationQueryStringSchema = void 0;
const zod_1 = require("zod");
const user_1 = require("../../data/user");
//----------------------------------------------------------------------------------------
exports.notificationQueryStringSchema = zod_1.z.object({
    page: zod_1.z.string(),
});
//----------------------------------------------------------------------------------------
exports.profileSchema = 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"),
    cityId: zod_1.z
        .string({ required_error: "La ville est obligatoire" })
        .min(1, "La ville est obligatoire"),
    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********)",
    }),
});
//----------------------------------------------------------------------------
exports.otherInformationSchema = zod_1.z.object({
    bio: zod_1.z.string().max(250, "250 caractères au maximum"),
    expertiseAreas: zod_1.z.array(zod_1.z.string()),
    interestAreas: zod_1.z.array(zod_1.z.string()),
});
//----------------------------------------------------------------------------------------
exports.passwordSchema = zod_1.z.object({
    old_password: zod_1.z
        .string({ required_error: "L'ancien mot de passe est obligatoire" })
        .min(8, { message: "8 caractères au minimum" }),
    new_password: zod_1.z
        .string({ required_error: "Le nouveau 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",
    }),
});
//----------------------------------------------------------------------------------------
