package dev.lions.models;

import java.io.Serializable;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * Représente un domaine d'expertise de l'entreprise.
 * Chaque domaine d'expertise est caractérisé par un titre, une icône,
 * une description et une liste de fonctionnalités associées.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExpertiseArea implements Serializable {
  private static final long serialVersionUID = 1L;

  /**
   * Titre du domaine d'expertise, compris entre 3 et 100 caractères.
   */
  @NotNull
  @Size(min = 3, max = 100)
  private String title;

  /**
   * Icône associée au domaine d'expertise, comprise entre 3 et 50 caractères.
   */
  @NotNull
  @Size(min = 3, max = 50)
  private String icon;

  /**
   * Description du domaine d'expertise, comprise entre 10 et 500 caractères.
   */
  @NotNull
  @Size(min = 10, max = 500)
  private String description;

  /**
   * Liste des fonctionnalités associées au domaine d'expertise.
   */
  private List<String> features;

  /**
   * Priorité du domaine d'expertise.
   */
  private int priority;
}