import { z } from "zod";

// ------------------------------------------------------------------------------------

export const citySchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type CitySchema = z.infer<typeof citySchema>;

// ------------------------------------------------------------------------------------

export const activityFamiliySchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type ActivityFamiliySchema = z.infer<typeof activityFamiliySchema>;

// ------------------------------------------------------------------------------------

export const activitySchema = z.object({
  activityFamilyId: z
    .string({ required_error: "La famille d'activité est obligatoire" })
    .min(1, { message: "La famille d'activité est obligatoire" }),
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type ActivitySchema = z.infer<typeof activitySchema>;

// ------------------------------------------------------------------------------------

export const turnoverSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type TurnoverSchema = z.infer<typeof turnoverSchema>;

// ------------------------------------------------------------------------------------

export const positionSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type PositionSchema = z.infer<typeof positionSchema>;

// ------------------------------------------------------------------------------------

export const nEmployeesSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type NEmployeesSchema = z.infer<typeof nEmployeesSchema>;

// ------------------------------------------------------------------------------------

export const expertiseAreaSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type ExpertiseAreaSchema = z.infer<typeof expertiseAreaSchema>;

// ------------------------------------------------------------------------------------

export const interestAreaSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type InterestAreaSchema = z.infer<typeof interestAreaSchema>;

// ------------------------------------------------------------------------------------

export const provinceSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type ProvinceSchema = z.infer<typeof provinceSchema>;

// ------------------------------------------------------------------------------------

export const categorySchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
  nameAr: z
    .string({ required_error: "Le nom en arabe est obligatoire" })
    .min(1, { message: "Le nom en arabe est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type CategorySchema = z.infer<typeof categorySchema>;

// ------------------------------------------------------------------------------------

export const commissionSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
  description: z
    .string({ required_error: "La description est obligatoire" })
    .max(2000, { message: "2000 caractères au maximum" }),
});

export type CommissionSchema = z.infer<typeof commissionSchema>;

// ------------------------------------------------------------------------------------

export const mandateSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type MandateSchema = z.infer<typeof mandateSchema>;

// ------------------------------------------------------------------------------------

export const collegeSchema = z.object({
  name: z
    .string({ required_error: "Le nom est obligatoire" })
    .min(1, { message: "Le nom est obligatoire" })
    .max(255, { message: "255 caractères au maximum" }),
});

export type CollegeSchema = z.infer<typeof collegeSchema>;

// ------------------------------------------------------------------------------------
