package dev.lions.unionflow.server.api.dto.document;

import dev.lions.unionflow.server.api.dto.base.BaseDTO;
import dev.lions.unionflow.server.api.enums.document.TypeDocument;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * DTO pour la gestion des documents
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2025-01-29
 */
@Getter
@Setter
public class DocumentDTO extends BaseDTO {

  private static final long serialVersionUID = 1L;

  /** Nom du fichier */
  @NotBlank(message = "Le nom du fichier est obligatoire")
  private String nomFichier;

  /** Nom original */
  private String nomOriginal;

  /** Chemin de stockage */
  @NotBlank(message = "Le chemin de stockage est obligatoire")
  private String cheminStockage;

  /** Type MIME */
  private String typeMime;

  /** Taille en octets */
  @NotNull(message = "La taille est obligatoire")
  @Min(value = 0, message = "La taille doit être positive")
  private Long tailleOctets;

  /** Type de document */
  private TypeDocument typeDocument;

  /** Hash MD5 */
  private String hashMd5;

  /** Hash SHA256 */
  private String hashSha256;

  /** Description */
  private String description;

  /** Nombre de téléchargements */
  private Integer nombreTelechargements;

  /** Taille formatée (calculée) */
  private String tailleFormatee;
}

