Configure Maven repository for unionflow-server-api dependency
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
package dev.lions.unionflow.server.entity;
|
||||
|
||||
import dev.lions.unionflow.server.api.enums.notification.PrioriteNotification;
|
||||
import dev.lions.unionflow.server.api.enums.notification.TypeNotification;
|
||||
import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* Entité Notification pour la gestion des notifications
|
||||
*
|
||||
* @author UnionFlow Team
|
||||
* @version 3.0
|
||||
* @since 2025-01-29
|
||||
*/
|
||||
@Entity
|
||||
@Table(
|
||||
name = "notifications",
|
||||
indexes = {
|
||||
@Index(name = "idx_notification_type", columnList = "type_notification"),
|
||||
@Index(name = "idx_notification_statut", columnList = "statut"),
|
||||
@Index(name = "idx_notification_priorite", columnList = "priorite"),
|
||||
@Index(name = "idx_notification_membre", columnList = "membre_id"),
|
||||
@Index(name = "idx_notification_organisation", columnList = "organisation_id"),
|
||||
@Index(name = "idx_notification_date_envoi", columnList = "date_envoi")
|
||||
})
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class Notification extends BaseEntity {
|
||||
|
||||
/** Type de notification */
|
||||
@NotNull
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "type_notification", nullable = false, length = 30)
|
||||
private TypeNotification typeNotification;
|
||||
|
||||
/** Priorité */
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Builder.Default
|
||||
@Column(name = "priorite", length = 20)
|
||||
private PrioriteNotification priorite = PrioriteNotification.NORMALE;
|
||||
|
||||
/** Statut */
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Builder.Default
|
||||
@Column(name = "statut", length = 30)
|
||||
private dev.lions.unionflow.server.api.enums.notification.StatutNotification statut =
|
||||
dev.lions.unionflow.server.api.enums.notification.StatutNotification.EN_ATTENTE;
|
||||
|
||||
/** Sujet */
|
||||
@Column(name = "sujet", length = 500)
|
||||
private String sujet;
|
||||
|
||||
/** Corps du message */
|
||||
@Column(name = "corps", columnDefinition = "TEXT")
|
||||
private String corps;
|
||||
|
||||
/** Date d'envoi prévue */
|
||||
@Column(name = "date_envoi_prevue")
|
||||
private LocalDateTime dateEnvoiPrevue;
|
||||
|
||||
/** Date d'envoi réelle */
|
||||
@Column(name = "date_envoi")
|
||||
private LocalDateTime dateEnvoi;
|
||||
|
||||
/** Date de lecture */
|
||||
@Column(name = "date_lecture")
|
||||
private LocalDateTime dateLecture;
|
||||
|
||||
/** Nombre de tentatives d'envoi */
|
||||
@Builder.Default
|
||||
@Column(name = "nombre_tentatives", nullable = false)
|
||||
private Integer nombreTentatives = 0;
|
||||
|
||||
/** Message d'erreur (si échec) */
|
||||
@Column(name = "message_erreur", length = 1000)
|
||||
private String messageErreur;
|
||||
|
||||
/** Données additionnelles (JSON) */
|
||||
@Column(name = "donnees_additionnelles", columnDefinition = "TEXT")
|
||||
private String donneesAdditionnelles;
|
||||
|
||||
// Relations
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "membre_id")
|
||||
private Membre membre;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "organisation_id")
|
||||
private Organisation organisation;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "template_id")
|
||||
private TemplateNotification template;
|
||||
|
||||
/** Méthode métier pour vérifier si la notification est envoyée */
|
||||
public boolean isEnvoyee() {
|
||||
return dev.lions.unionflow.server.api.enums.notification.StatutNotification.ENVOYEE.equals(statut);
|
||||
}
|
||||
|
||||
/** Méthode métier pour vérifier si la notification est lue */
|
||||
public boolean isLue() {
|
||||
return dev.lions.unionflow.server.api.enums.notification.StatutNotification.LUE.equals(statut);
|
||||
}
|
||||
|
||||
/** Callback JPA avant la persistance */
|
||||
@PrePersist
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
if (priorite == null) {
|
||||
priorite = PrioriteNotification.NORMALE;
|
||||
}
|
||||
if (statut == null) {
|
||||
statut = dev.lions.unionflow.server.api.enums.notification.StatutNotification.EN_ATTENTE;
|
||||
}
|
||||
if (nombreTentatives == null) {
|
||||
nombreTentatives = 0;
|
||||
}
|
||||
if (dateEnvoiPrevue == null) {
|
||||
dateEnvoiPrevue = LocalDateTime.now();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user