# Guide de Migration UUID - Code Client

## Vue d'ensemble

Ce document décrit les changements nécessaires dans le code client (`unionflow-client-quarkus-primefaces-freya`) pour utiliser UUID au lieu de Long.

## Fichiers modifiés

### Services Client (Interfaces REST)

#### MembreService.java
- ✅ `obtenirParId(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `modifier(@PathParam("id") UUID id, ...)` - Changé de Long vers UUID
- ✅ `supprimer(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `activer(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `desactiver(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `suspendre(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `radier(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `listerParAssociation(@PathParam("associationId") UUID associationId)` - Changé de Long vers UUID
- ✅ `rechercher(..., @QueryParam("associationId") UUID associationId, ...)` - Changé de Long vers UUID
- ✅ `exporterExcel(..., @QueryParam("associationId") UUID associationId, ...)` - Changé de Long vers UUID
- ✅ `importerDonnees(..., @FormParam("associationId") UUID associationId)` - Changé de Long vers UUID

#### AssociationService.java
- ✅ `obtenirParId(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `modifier(@PathParam("id") UUID id, ...)` - Changé de Long vers UUID
- ✅ `supprimer(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `activer(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `desactiver(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `suspendre(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `dissoudre(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `compterMembres(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `obtenirPerformance(@PathParam("id") UUID id)` - Changé de Long vers UUID
- ✅ `PerformanceAssociationDTO.associationId` - Changé de Long vers UUID

### DTOs Client

#### MembreDTO.java
- ✅ `private UUID id;` - Changé de Long vers UUID
- ✅ `private UUID associationId;` - Changé de Long vers UUID
- ✅ Getters et setters mis à jour

#### AssociationDTO.java
- ✅ `private UUID id;` - Changé de Long vers UUID
- ✅ Getters et setters mis à jour

## Fichiers à mettre à jour (Beans JSF)

Les Beans JSF suivants utilisent encore `Long` et doivent être mis à jour :

### Beans avec IDs Long dans les classes internes
1. **UserSession.java**
   - `UserInfo.id` : Long → UUID
   - `EntiteInfo.id` : Long → UUID

2. **DemandesBean.java**
   - `DemandeItem.id` : Long → UUID
   - `Gestionnaire.id` : Long → UUID

3. **UtilisateursBean.java**
   - `UtilisateurItem.id` : Long → UUID
   - `OrganisationItem.id` : Long → UUID
   - Remplacer `setId(1L)`, `setId(2L)`, etc. par `UUID.randomUUID()`

4. **SuperAdminBean.java**
   - `AlerteItem.id` : Long → UUID
   - Remplacer `setId(1L)`, `setId(2L)`, etc. par `UUID.randomUUID()`

5. **MembreRechercheBean.java**
   - `RechercheItem.id` : Long → UUID
   - `MembreItem.id` : Long → UUID
   - Remplacer `setId(1L)`, `setId(2L)` par `UUID.randomUUID()`

6. **MembreProfilBean.java**
   - `ActiviteItem.id` : Long → UUID

7. **EvenementsBean.java**
   - `EvenementItem.id` : Long → UUID

8. **EntitesGestionBean.java**
   - `EntiteItem.id` : Long → UUID

9. **DocumentsBean.java**
   - `DocumentItem.id` : Long → UUID
   - `CategorieItem.id` : Long → UUID

10. **DemandesAideBean.java**
    - `DemandeItem.id` : Long → UUID

11. **CotisationsGestionBean.java**
    - `CotisationItem.id` : Long → UUID
    - `MembreItem.id` : Long → UUID

12. **CotisationsBean.java**
    - `CotisationItem.id` : Long → UUID

13. **RapportsBean.java**
    - `RapportItem.id` : Long → UUID

### Beans avec données mockées
- **SouscriptionBean.java** : `souscriptionActive.setId(1L)` → `UUID.randomUUID()`
- **FormulaireBean.java** : `starter.setId(1L)`, etc. → `UUID.randomUUID()`
- **AdminFormulaireBean.java** : `starter.setId(1L)`, etc. → `UUID.randomUUID()`
- **AuthenticationService.java** : Tous les `setId(1L)`, `setId(2L)`, etc. → `UUID.randomUUID()`

## DTOs supplémentaires à vérifier

- **SouscriptionDTO.java** : `private Long id;` → `private UUID id;`
- **FormulaireDTO.java** : `private Long id;` → `private UUID id;`
- **LoginResponse.java** : `UserInfo.id` et `EntiteInfo.id` → UUID

## Notes importantes

1. **Conversion automatique** : JAX-RS/MicroProfile REST Client convertit automatiquement les UUID en String dans les URLs
2. **Validation** : Les UUIDs sont validés automatiquement par JAX-RS
3. **Null safety** : Vérifier que les UUIDs ne sont pas null avant utilisation
4. **Tests** : Mettre à jour tous les tests qui utilisent des IDs Long

## Exemple de migration

### Avant
```java
@GET
@Path("/{id}")
MembreDTO obtenirParId(@PathParam("id") Long id);

// Dans un Bean
membreService.obtenirParId(1L);
```

### Après
```java
@GET
@Path("/{id}")
MembreDTO obtenirParId(@PathParam("id") UUID id);

// Dans un Bean
UUID membreId = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
membreService.obtenirParId(membreId);
```

## Prochaines étapes

1. ✅ Mettre à jour les services client (MembreService, AssociationService)
2. ✅ Mettre à jour les DTOs principaux (MembreDTO, AssociationDTO)
3. ⏳ Mettre à jour tous les Beans JSF
4. ⏳ Mettre à jour les DTOs restants
5. ⏳ Mettre à jour les données mockées dans AuthenticationService
6. ⏳ Tester l'application complète

## Support

Pour toute question concernant cette migration, contactez l'équipe UnionFlow.

**Date de migration:** 16 janvier 2025  
**Version:** 2.0  
**Auteur:** UnionFlow Team

