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é | Type | Description |
|---|---|---|
IdExterneEmploye | string | Identifiant 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é | Type | Description |
|---|---|---|
IdExterneEmploye | string | Identifiant de l'employé destinataire |
FormulaireId | int | ID 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
B2BEnvoyerDerniereCarteMembreRequest- Requête envoi carteB2BEnvoyerFormulaire- Requête envoi formulaire