"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.emailSchema = exports.massCompaniesSchema = exports.massPositionsSchema = exports.massCitiesSchema = exports.companySchema = exports.companyContributorSchema = exports.companyActiveSchema = void 0;
const zod_1 = require("zod");
const company_1 = require("../../data/company");
// -----------------------------------------------------------------
exports.companyActiveSchema = zod_1.z.object({
    active: zod_1.z.boolean(),
});
// -----------------------------------------------------------------
exports.companyContributorSchema = zod_1.z.object({
    contributor: zod_1.z.boolean(),
});
// -----------------------------------------------------------------
exports.companySchema = zod_1.z.object({
    active: zod_1.z.boolean(),
    contributor: zod_1.z.boolean(),
    name: zod_1.z
        .string({ required_error: "La raison sociale est obligatoire" })
        .min(1, "La raison sociale est obligatoire")
        .max(250, "250 caractères au maximum"),
    legalForm: zod_1.z.enum(company_1.legalForms, {
        required_error: "La forme juridique est obligatoire",
        invalid_type_error: "La forme juridique est invalide",
    }),
    cityId: zod_1.z
        .string({ required_error: "La ville est obligatoire" })
        .min(1, "La ville est obligatoire"),
    address: zod_1.z
        .string({ required_error: "L'adresse est obligatoire" })
        .min(1, "L'adresse est obligatoire"),
    phoneNumber: zod_1.z.string().max(250, "250 caractères au maximum"),
    fax: 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"),
    website: zod_1.z.string().max(250, "250 caractères au maximum"),
    linkedin: zod_1.z.string().max(250, "250 caractères au maximum"),
    facebook: zod_1.z.string().max(250, "250 caractères au maximum"),
    contactFirstName: zod_1.z
        .string({
        required_error: "Le prénom du contact est obligatoire",
    })
        .max(250, "250 caractères au maximum"),
    contactLastName: zod_1.z
        .string({
        required_error: "Le nom du contact est obligatoire",
    })
        .max(250, "250 caractères au maximum"),
    contactEmail: zod_1.z
        .string({ required_error: "L'adresse mail du contact est obligatoire" })
        .email({ message: "L'adresse mail du contact est invalide" })
        .max(250, "250 caractères au maximum")
        .or(zod_1.z.literal("")),
    contactPositionId: zod_1.z
        .string({ required_error: "La fonction est obligatoire" })
        .min(1, "La fonction est obligatoire")
        .optional(),
    contactLinkedin: zod_1.z.string().max(250, "250 caractères au maximum"),
    contactFacebook: zod_1.z.string().max(250, "250 caractères au maximum"),
    businessLicense: zod_1.z.string().max(250, "250 caractères au maximum"),
    numRC: zod_1.z.string().max(250, "250 caractères au maximum"),
    numICE: zod_1.z.string().max(250, "250 caractères au maximum"),
    capital: zod_1.z.number().nullable(),
    turnoverId: zod_1.z
        .string({ required_error: "Le chiffre d'affaires est obligatoire" })
        .min(1, "Le chiffre d'affaires est obligatoire"),
    nEmployeesId: zod_1.z
        .string({ required_error: "L'effectif est obligatoire" })
        .min(1, "L'effectif est obligatoire"),
    activities: zod_1.z.array(zod_1.z.string()),
    activitiesFamilies: zod_1.z.array(zod_1.z.string()),
    importCountries: zod_1.z.array(zod_1.z.enum(company_1.countries)),
    exportCountries: zod_1.z.array(zod_1.z.enum(company_1.countries)),
});
//----------------------------------------------------------------------------
//--Only to add mass data--------------------------------------------------
//----------------------------------------------------------------------------
exports.massCitiesSchema = zod_1.z.array(zod_1.z.string());
//----------------------------------------------------------------------------
exports.massPositionsSchema = zod_1.z.array(zod_1.z.string());
//----------------------------------------------------------------------------
exports.massCompaniesSchema = zod_1.z.array(zod_1.z.object({
    name: zod_1.z
        .string({ required_error: "La raison sociale est obligatoire" })
        .min(1, "La raison sociale est obligatoire")
        .max(250, "250 caractères au maximum"),
    legalFormFormated: zod_1.z.enum(company_1.legalForms, {
        required_error: "La forme juridique est obligatoire",
        invalid_type_error: "La forme juridique est invalide",
    }),
    cityName: zod_1.z.string({ required_error: "La ville est obligatoire" }),
    address: zod_1.z.string({ required_error: "L'adresse est obligatoire" }),
    phoneNumber: zod_1.z
        .string()
        .max(250, "250 caractères au maximum")
        .or(zod_1.z.number()),
    fax: zod_1.z.string().max(250, "250 caractères au maximum").or(zod_1.z.number()),
    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")
        .or(zod_1.z.literal("")),
    website: zod_1.z.string().max(250, "250 caractères au maximum"),
    linkedin: zod_1.z.string().max(250, "250 caractères au maximum"),
    facebook: zod_1.z.string().max(250, "250 caractères au maximum"),
    contactFirstName: zod_1.z
        .string({
        required_error: "Le prénom du contact est obligatoire",
    })
        .max(250, "250 caractères au maximum"),
    contactLastName: zod_1.z
        .string({
        required_error: "Le nom du contact est obligatoire",
    })
        .max(250, "250 caractères au maximum"),
    contactEmail: zod_1.z
        .string({ required_error: "L'adresse mail du contact est obligatoire" })
        // .email({ message: "L'adresse mail du contact est invalide" })
        .max(250, "250 caractères au maximum")
        .or(zod_1.z.literal("")),
    contactPositionName: zod_1.z
        .string({ required_error: "La fonction est obligatoire" })
        .min(1, "La fonction est obligatoire"),
    contactLinkedin: zod_1.z.string().max(250, "250 caractères au maximum"),
    contactFacebook: zod_1.z.string().max(250, "250 caractères au maximum"),
    businessLicense: zod_1.z
        .string()
        .max(250, "250 caractères au maximum")
        .or(zod_1.z.number()),
    numRC: zod_1.z.string().max(250, "250 caractères au maximum").or(zod_1.z.number()),
    numICE: zod_1.z.string().max(250, "250 caractères au maximum").or(zod_1.z.number()),
    capital: zod_1.z.number().or(zod_1.z.string()),
    turnoverName: zod_1.z.string({
        required_error: "Le chiffre d'affaires est obligatoire",
    }),
    nEmployeesName: zod_1.z.string({ required_error: "L'effectif est obligatoire" }),
    activities: zod_1.z.string(),
    activitiesFamilies: zod_1.z.string(),
}));
//----------------------------------------------------------------------------
exports.emailSchema = zod_1.z.object({
    companies: zod_1.z
        .array(zod_1.z.string())
        .min(1, { message: "Vous devez selectionner au moins une entreprise" }),
    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"),
    attachments: zod_1.z.array(zod_1.z.object({
        name: zod_1.z.string(),
        attachment: zod_1.z.string(),
        presignedAttachment: zod_1.z.string(),
    })),
    // attachments: z.array(
    //   z
    //     .any()
    //     .refine((file: File) => !!file, {
    //       message: "Le document est obligatoire",
    //     })
    //     .refine((file: File) => file?.size <= MAX_FILE_SIZE, {
    //       message: "La taille du document est supérieure à 50 Mo.",
    //     })
    //     .refine((file: File) => ACCEPTED_MEDIA_TYPES.includes(file?.type), {
    //       message: "Le format est inacceptable",
    //     })
    // ),
});
