Aller au contenu principal

ICourrielClient

Client pour envoyer des courriels aux employés via MCM.

public interface ICourrielClient : IBaseClient

Méthodes

EnvoyerDerniereCarteMembre

Envoie la dernière carte de membre à un employé.

Task<ErrorOr<Success>> EnvoyerDerniereCarteMembre(B2BEnvoyerDerniereCarteMembreRequest request)

Paramètres:

Le B2BEnvoyerDerniereCarteMembreRequest contient :

PropriétéTypeDescription
IdExterneEmployestringIdentifiant de l'employé destinataire

Exemple:

var request = new B2BEnvoyerDerniereCarteMembreRequest
{
IdExterneEmploye = "EMP-12345"
};

var result = await _courrielClient.EnvoyerDerniereCarteMembre(request);

if (result.IsError)
{
_logger.LogError("Erreur envoi carte: {Error}", result.FirstError.Description);
return;
}

_logger.LogInformation("Carte de membre envoyée à l'employé EMP-12345");

EnvoyerFormulaire

Envoie une invitation à remplir un formulaire.

Task<ErrorOr<Success>> EnvoyerFormulaire(B2BEnvoyerFormulaire request)

Paramètres:

Le B2BEnvoyerFormulaire contient :

PropriétéTypeDescription
IdExterneEmployestringIdentifiant de l'employé destinataire
FormulaireIdintID du formulaire à envoyer

Exemple:

// D'abord, récupérer les formulaires disponibles
var formulaires = await _formulaireClient.GetAllFormulaires();
var formulaireAdhesion = formulaires.Value
.FirstOrDefault(f => f.Nom == "Formulaire d'adhésion");

if (formulaireAdhesion is null)
{
_logger.LogError("Formulaire non trouvé");
return;
}

// Envoyer l'invitation
var request = new B2BEnvoyerFormulaire
{
IdExterneEmploye = "EMP-12345",
FormulaireId = formulaireAdhesion.Id
};

var result = await _courrielClient.EnvoyerFormulaire(request);

if (result.IsError)
{
_logger.LogError("Erreur envoi formulaire: {Error}", result.FirstError.Description);
return;
}

_logger.LogInformation("Invitation envoyée");

Cas d'utilisation

Envoi groupé de cartes de membre

public class CourrielService
{
private readonly ICourrielClient _courrielClient;
private readonly IEmployesClient _employesClient;
private readonly ILogger<CourrielService> _logger;

public CourrielService(
ICourrielClient courrielClient,
IEmployesClient employesClient,
ILogger<CourrielService> logger)
{
_courrielClient = courrielClient;
_employesClient = employesClient;
_logger = logger;
}

public async Task EnvoyerCartesMembreATousAsync()
{
var employesResult = await _employesClient.GetAllEmployes();

if (employesResult.IsError)
{
_logger.LogError("Impossible de récupérer les employés");
return;
}

var resultats = new { Succes = 0, Echecs = 0 };

foreach (var employe in employesResult.Value)
{
var request = new B2BEnvoyerDerniereCarteMembreRequest
{
IdExterneEmploye = employe.IdExterne
};

var result = await _courrielClient.EnvoyerDerniereCarteMembre(request);

if (result.IsError)
{
_logger.LogWarning("Échec envoi à {IdExterne}: {Error}",
employe.IdExterne, result.FirstError.Description);
}
else
{
_logger.LogDebug("Carte envoyée à {IdExterne}", employe.IdExterne);
}

// Délai pour éviter de surcharger le serveur
await Task.Delay(100);
}
}
}

Envoi conditionnel de formulaire

public async Task EnvoyerFormulaireAdhesionSiNecessaireAsync(string idExterne)
{
// Vérifier si l'employé a une adhésion active
var employe = await _employesClient.GetEmployeById(idExterne);

if (employe.IsError)
{
return;
}

// Logique de vérification d'adhésion
// ...

// Envoyer le formulaire si nécessaire
var request = new B2BEnvoyerFormulaire
{
IdExterneEmploye = idExterne,
FormulaireId = _config.FormulaireAdhesionId
};

await _courrielClient.EnvoyerFormulaire(request);
}

Types associés