feat: PHASE 5.2 - Repositories et DTOs Documentaires

Repositories créés:
- DocumentRepository: Recherche par hash MD5/SHA256, type
- PieceJointeRepository: Recherche par document, membre, organisation, cotisation, adhésion, demande d'aide, transaction Wave

DTOs créés:
- DocumentDTO: Validation complète avec contraintes
- PieceJointeDTO: Relations flexibles via UUID

Respect strict DRY/WOU:
- Patterns de repository cohérents
- Patterns de DTO cohérents
- Relations via UUID pour découplage
This commit is contained in:
dahoud
2025-11-30 11:30:33 +00:00
parent 4b78c173ca
commit bf994ccbea
4 changed files with 262 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
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;
}

View File

@@ -0,0 +1,55 @@
package dev.lions.unionflow.server.api.dto.document;
import dev.lions.unionflow.server.api.dto.base.BaseDTO;
import jakarta.validation.constraints.*;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;
/**
* DTO pour la gestion des pièces jointes
*
* @author UnionFlow Team
* @version 3.0
* @since 2025-01-29
*/
@Getter
@Setter
public class PieceJointeDTO extends BaseDTO {
private static final long serialVersionUID = 1L;
/** Ordre d'affichage */
@NotNull(message = "L'ordre est obligatoire")
@Min(value = 1, message = "L'ordre doit être positif")
private Integer ordre;
/** Libellé */
private String libelle;
/** Commentaire */
private String commentaire;
/** ID du document */
@NotNull(message = "Le document est obligatoire")
private UUID documentId;
/** ID du membre (optionnel) */
private UUID membreId;
/** ID de l'organisation (optionnel) */
private UUID organisationId;
/** ID de la cotisation (optionnel) */
private UUID cotisationId;
/** ID de l'adhésion (optionnel) */
private UUID adhesionId;
/** ID de la demande d'aide (optionnel) */
private UUID demandeAideId;
/** ID de la transaction Wave (optionnel) */
private UUID transactionWaveId;
}