# 💬 CONCEPT: MESSAGE ## 📌 Vue d'ensemble Le concept **MESSAGE** gère la messagerie interne entre utilisateurs avec catégorisation et priorités. **Importance**: ⭐⭐ (Concept utile) --- ## 🗂️ Fichiers concernés ### **Entités JPA** | Fichier | Description | |---------|-------------| | `Message.java` | Entité principale message | | `TypeMessage.java` | Enum types (NORMAL, CHANTIER, MAINTENANCE, URGENT, etc.) | | `PrioriteMessage.java` | Enum priorités | ### **Services** | Fichier | Description | |---------|-------------| | `MessageService.java` | Service métier messages | ### **Resources** | Fichier | Description | |---------|-------------| | `MessageResource.java` | API REST messages | --- ## 📊 Modèle de données ```java @Entity @Table(name = "messages") public class Message extends PanacheEntityBase { @Id @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @ManyToOne @JoinColumn(name = "expediteur_id", nullable = false) private User expediteur; @ManyToOne @JoinColumn(name = "destinataire_id", nullable = false) private User destinataire; @Column(name = "sujet", nullable = false) private String sujet; @Column(name = "contenu", length = 5000, nullable = false) private String contenu; @Enumerated(EnumType.STRING) @Column(name = "type") private TypeMessage type; @Enumerated(EnumType.STRING) @Column(name = "priorite") private PrioriteMessage priorite; @Column(name = "lu") private Boolean lu = false; @Column(name = "date_envoi") private LocalDateTime dateEnvoi; @Column(name = "date_lecture") private LocalDateTime dateLecture; } ``` --- ## 🔌 API REST ### **Endpoints** | Méthode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/v1/messages` | Liste messages | | GET | `/api/v1/messages/{id}` | Détails | | POST | `/api/v1/messages` | Envoyer | | PUT | `/api/v1/messages/{id}/lire` | Marquer comme lu | | DELETE | `/api/v1/messages/{id}` | Supprimer | | GET | `/api/v1/messages/recus` | Messages reçus | | GET | `/api/v1/messages/envoyes` | Messages envoyés | | GET | `/api/v1/messages/non-lus` | Messages non lus | --- ## 💻 Exemples ### **Envoyer un message** ```bash curl -X POST http://localhost:8080/api/v1/messages \ -H "Content-Type: application/json" \ -d '{ "destinataireId": "user-uuid", "sujet": "Livraison matériel", "contenu": "La livraison de ciment est prévue demain à 9h", "type": "CHANTIER", "priorite": "NORMALE" }' ``` --- **Dernière mise à jour**: 2025-09-30 **Version**: 1.0