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");

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éTypeDescription
IdExterneEmploistringIdentifiant externe de l'emploi ciblé
CourrielstringAdresse 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");
astuce

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éTypeDescription
IdExterneEmploistringIdentifiant externe de l'emploi ciblé
CourrielstringAdresse courriel du destinataire
IdFormulaireintIdentifiant 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");
astuce

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éTypeDescription
DestinatairestringAdresse courriel du destinataire
SujetstringObjet du courriel
ContenustringCorps du courriel (HTML par défaut)
EstHtmlbooltrue pour HTML, false pour texte brut (défaut: true)
ReplyTostring?Adresse de réponse (optionnel)
OmettrePiedDePagebooltrue pour omettre le pied de page système (défaut: false)
FournisseurB2BMailerProviderType?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