import { z } from "zod";
import { countries } from "../../data/company";

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

export const opportunitySchema = z.object({
  title: z
    .string({ required_error: "Le titre est obligatoire" })
    .min(1, "Le titre est obligatoire")
    .max(500, "500 caractères au maximum"),
  description: z.string({ required_error: "La description est obligatoire" }),
  companyName: z.string({
    required_error: "La raison sociale est obligatoire",
  }),
  activitiesFamilies: z.array(z.string()),
  activities: z.array(z.string()),

  country: z.enum(countries, {
    required_error: "Le pays est obligatoire",
    invalid_type_error: "Le pays est invalide",
  }),
  address: z
    .string({ required_error: "L'adresse est obligatoire" })
    .max(255, "255 caractères au maximum"),
  requirements: z
    .string({ required_error: "Les exigences sont obligatoires" })
    .max(255, "255 caractères au maximum"),

  contactEmail: 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(z.literal("")),
  contactPhoneNumber: z
    .string({
      required_error: "Le numéro de téléphone du contact est obligatoire",
    })
    .max(250, "250 caractères au maximum"),
  validityDate: z.string().optional().nullable(),
});

export type OpportunitySchema = z.infer<typeof opportunitySchema>;

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

export const opportunityActiveSchema = z.object({
  active: z.boolean(),
});

export type OpportunityActiveSchema = z.infer<typeof opportunityActiveSchema>;

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

export const opportunityCommentSchema = z.object({
  content: z
    .string({ required_error: "Le commentaire est obligatoire" })
    .min(1, "Le commentaire est obligatoire")
    .max(1000, "1000 caractères au maximum"),
});

export type OpportunityCommentSchema = z.infer<typeof opportunityCommentSchema>;

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