IConsentementClient
Client pour récupérer l'historique des consentements donnés par les employés.
public interface IConsentementClient : IBaseClient
Méthodes
GetConsentementsDepuis
Récupère tous les consentements depuis une date donnée.
Task<ErrorOr<IEnumerable<B2BConsentementItem>>> GetConsentementsDepuis(DateTime depuis)
Paramètres:
| Nom | Type | Description |
|---|---|---|
depuis | DateTime | Date de début (UTC recommandé) |
Exemple:
// Récupérer les consentements des 30 derniers jours
var depuis = DateTime.UtcNow.AddDays(-30);
var result = await _consentementClient.GetConsentementsDepuis(depuis);
if (result.IsError)
{
_logger.LogError("Erreur: {Error}", result.FirstError.Description);
return;
}
foreach (var consentement in result.Value)
{
Console.WriteLine($"Employé: {consentement.IdExterneEmploye}");
Console.WriteLine($"Objet: {consentement.ObjetConsentement.Nom}");
Console.WriteLine($"Accepté: {consentement.Accepte}");
Console.WriteLine($"Date: {consentement.DateConsentement}");
Console.WriteLine("---");
}
GetConsentementsParIdExterne
Récupère les consentements d'un employé spécifique.
Task<ErrorOr<IEnumerable<B2BConsentementItem>>> GetConsentementsParIdExterne(string idExterne)
Paramètres:
| Nom | Type | Description |
|---|---|---|
idExterne | string | Identifiant externe de l'employé |
Exemple:
var result = await _consentementClient.GetConsentementsParIdExterne("EMP-12345");
if (result.IsError)
{
_logger.LogError("Erreur: {Error}", result.FirstError.Description);
return;
}
// Vérifier si l'employé a consenti aux communications marketing
var consentMarketing = result.Value
.FirstOrDefault(c => c.ObjetConsentement.Nom == "Communications marketing");
if (consentMarketing?.Accepte == true)
{
Console.WriteLine("L'employé accepte les communications marketing");
}
Cas d'utilisation
Synchronisation des consentements
public class ConsentementSyncService
{
private readonly IConsentementClient _consentementClient;
private readonly IConsentementRepository _repository;
private readonly ILogger<ConsentementSyncService> _logger;
public ConsentementSyncService(
IConsentementClient consentementClient,
IConsentementRepository repository,
ILogger<ConsentementSyncService> logger)
{
_consentementClient = consentementClient;
_repository = repository;
_logger = logger;
}
public async Task SyncConsentementsAsync()
{
// Récupérer la date du dernier sync
var dernierSync = await _repository.GetDernierSyncAsync()
?? DateTime.UtcNow.AddYears(-1);
var result = await _consentementClient.GetConsentementsDepuis(dernierSync);
if (result.IsError)
{
_logger.LogError("Erreur sync: {Error}", result.FirstError.Description);
return;
}
foreach (var consentement in result.Value)
{
await _repository.UpsertConsentementAsync(new ConsentementLocal
{
IdExterneEmploye = consentement.IdExterneEmploye,
ObjetConsentement = consentement.ObjetConsentement.Nom,
Accepte = consentement.Accepte,
DateConsentement = consentement.DateConsentement
});
}
await _repository.SetDernierSyncAsync(DateTime.UtcNow);
_logger.LogInformation("Sync terminée: {Count} consentements",
result.Value.Count());
}
}
Vérification des consentements obligatoires
public async Task<bool> TousConsentementsObligatoiresAcceptesAsync(string idExterne)
{
var objetsObligatoires = new[] { "Conditions d'utilisation", "Politique de vie privée" };
var result = await _consentementClient.GetConsentementsParIdExterne(idExterne);
if (result.IsError)
{
return false;
}
foreach (var objet in objetsObligatoires)
{
var consentement = result.Value
.FirstOrDefault(c => c.ObjetConsentement.Nom == objet);
if (consentement?.Accepte != true)
{
return false;
}
}
return true;
}
Types associés
B2BConsentementItem- Informations d'un consentementB2BConsentementItemObjetConsentement- Objet de consentement associé