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");
EnvoyerDerniereCarteMembrePourEmploi
Envoie la dernière carte de membre à un employé en ciblant un emploi spécifique. Permet de sélectionner le syndicat via l'emploi (Emploi → Employeur → Syndicat → Adhésion).
Task<ErrorOr<Success>> EnvoyerDerniereCarteMembrePourEmploi(B2BEnvoyerDerniereCarteMembrePourEmploiRequest request)
Paramètres:
Le B2BEnvoyerDerniereCarteMembrePourEmploiRequest contient :
| Propriété | Type | Description |
|---|---|---|
IdExterneEmploi | string | Identifiant externe de l'emploi ciblé |
Courriel | string | Adresse courriel du destinataire |
Exemple:
var request = new B2BEnvoyerDerniereCarteMembrePourEmploiRequest
{
IdExterneEmploi = "EMP-JOB-001",
Courriel = "membre@example.com"
};
var result = await _courrielClient.EnvoyerDerniereCarteMembrePourEmploi(request);
if (result.IsError)
{
_logger.LogError("Erreur envoi carte: {Error}", result.FirstError.Description);
return;
}
_logger.LogInformation("Carte de membre envoyée pour l'emploi EMP-JOB-001");
Utilisez cette méthode lorsqu'un employé a plusieurs emplois et que vous souhaitez envoyer la carte de membre associée à un syndicat spécifique. La méthode résout le syndicat via la chaîne Emploi → Employeur → Syndicat.
EnvoyerFormulairePourEmploi
Envoie une invitation à remplir un formulaire en ciblant un emploi spécifique. Le lien généré inclut le paramètre ?emploiId= pour pré-sélectionner l'emploi.
Task<ErrorOr<Success>> EnvoyerFormulairePourEmploi(B2BEnvoyerFormulairePourEmploiRequest request)
Paramètres:
Le B2BEnvoyerFormulairePourEmploiRequest contient :
| Propriété | Type | Description |
|---|---|---|
IdExterneEmploi | string | Identifiant externe de l'emploi ciblé |
Courriel | string | Adresse courriel du destinataire |
IdFormulaire | int | Identifiant du formulaire à envoyer |
Exemple:
var request = new B2BEnvoyerFormulairePourEmploiRequest
{
IdExterneEmploi = "EMP-JOB-001",
Courriel = "membre@example.com",
IdFormulaire = 42
};
var result = await _courrielClient.EnvoyerFormulairePourEmploi(request);
if (result.IsError)
{
_logger.LogError("Erreur envoi formulaire: {Error}", result.FirstError.Description);
return;
}
_logger.LogInformation("Formulaire envoyé pour l'emploi EMP-JOB-001");
Utilisez cette méthode lorsqu'un employé a plusieurs emplois et que vous souhaitez cibler un emploi spécifique dans le formulaire. Le lien inclut automatiquement ?emploiId= pour pré-sélectionner l'emploi.
EnvoyerCourrielTransactionnel
Envoie un courriel transactionnel via le fournisseur actif configuré ou un fournisseur spécifique.
Task<ErrorOr<Success>> EnvoyerCourrielTransactionnel(B2BEnvoyerCourrielTransactionnelRequest request)
Paramètres:
Le B2BEnvoyerCourrielTransactionnelRequest contient :
| Propriété | Type | Description |
|---|---|---|
Destinataire | string | Adresse courriel du destinataire |
Sujet | string | Objet du courriel |
Contenu | string | Corps du courriel (HTML par défaut) |
EstHtml | bool | true pour HTML, false pour texte brut (défaut: true) |
ReplyTo | string? | Adresse de réponse (optionnel) |
OmettrePiedDePage | bool | true pour omettre le pied de page système (défaut: false) |
Fournisseur | B2BMailerProviderType? | Fournisseur spécifique (Cakemail, SendGrid, Postmark, Smtp) (optionnel) |
Exemple:
var request = new B2BEnvoyerCourrielTransactionnelRequest
{
Destinataire = "membre@example.com",
Sujet = "Confirmation d'adhésion",
Contenu = "<h1>Bienvenue!</h1><p>Votre adhésion a été confirmée.</p>",
EstHtml = true,
ReplyTo = "support@syndicat.com"
};
var result = await _courrielClient.EnvoyerCourrielTransactionnel(request);
if (result.IsError)
{
_logger.LogError("Erreur envoi courriel: {Error}", result.FirstError.Description);
return;
}
_logger.LogInformation("Courriel transactionnel envoyé à membre@example.com");
Exemple avec fournisseur spécifique:
var request = new B2BEnvoyerCourrielTransactionnelRequest
{
Destinataire = "membre@example.com",
Sujet = "Notification urgente",
Contenu = "Votre carte de membre expire bientôt.",
EstHtml = false,
OmettrePiedDePage = true,
Fournisseur = B2BMailerProviderType.SendGrid
};
var result = await _courrielClient.EnvoyerCourrielTransactionnel(request);
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 carteB2BEnvoyerDerniereCarteMembrePourEmploiRequest- Requête envoi carte ciblant un emploiB2BEnvoyerFormulaire- Requête envoi formulaireB2BEnvoyerFormulairePourEmploiRequest- Requête envoi formulaire ciblant un emploiB2BEnvoyerCourrielTransactionnelRequest- Requête envoi courriel transactionnelB2BMailerProviderType- Fournisseur de courriel (Cakemail,SendGrid,Postmark,Smtp)