Aller au contenu principal

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:

NomTypeDescription
depuisDateTimeDate 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:

NomTypeDescription
idExternestringIdentifiant 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