ICampagnesClient
Client pour la gestion des campagnes de vote dans MCM Votez.
public interface ICampagnesClient : IBaseClient
Méthodes
GetAllCampagnes
Récupère toutes les campagnes de votre organisation avec filtres optionnels.
Task<ErrorOr<IEnumerable<B2BCampagneItem>>> GetAllCampagnes(B2BCampagneSearchRequest? searchRequest = null)
Paramètres:
| Nom | Type | Description |
|---|---|---|
searchRequest | B2BCampagneSearchRequest? | Filtres de recherche (optionnel) |
Retour: Liste des campagnes correspondant aux critères.
Exemple:
// Récupérer toutes les campagnes
var result = await _campagnesClient.GetAllCampagnes();
if (result.IsError)
{
_logger.LogError("Erreur: {Error}", result.FirstError.Description);
return;
}
foreach (var campagne in result.Value)
{
Console.WriteLine($"{campagne.Titre} - {campagne.Etat}");
}
// Avec filtres
var searchRequest = new B2BCampagneSearchRequest
{
Etat = "VoteOuvert",
Titre = "Élection"
};
var filteredResult = await _campagnesClient.GetAllCampagnes(searchRequest);
GetCampagneById
Récupère une campagne par son identifiant.
Task<ErrorOr<B2BCampagneItem>> GetCampagneById(Guid id)
Paramètres:
| Nom | Type | Description |
|---|---|---|
id | Guid | Identifiant unique de la campagne |
Retour: Informations complètes de la campagne.
Exemple:
var result = await _campagnesClient.GetCampagneById(campagneId);
if (result.IsError)
{
if (result.FirstError.Type == ErrorType.NotFound)
{
Console.WriteLine("Campagne non trouvée");
}
return;
}
var campagne = result.Value;
Console.WriteLine($"Campagne: {campagne.Titre}");
Console.WriteLine($"Votants: {campagne.NombreVotants}");
Console.WriteLine($"Questions: {campagne.NombreQuestions}");
GetCampagneStats
Récupère les statistiques agrégées d'une campagne terminée.
Task<ErrorOr<B2BCampagneStatsItem>> GetCampagneStats(Guid id)
Paramètres:
| Nom | Type | Description |
|---|---|---|
id | Guid | Identifiant de la campagne |
Retour: Statistiques de participation et résultats par question.
Exemple:
var result = await _campagnesClient.GetCampagneStats(campagneId);
if (result.IsError)
{
_logger.LogError("Erreur: {Error}", result.FirstError.Description);
return;
}
var stats = result.Value;
Console.WriteLine($"Participation: {stats.TauxParticipation}%");
Console.WriteLine($"Votants: {stats.VotantsAyantVote}/{stats.TotalVotants}");
foreach (var question in stats.Questions)
{
Console.WriteLine($"\n{question.Nom}: {question.TotalVotes} votes");
foreach (var option in question.Options)
{
Console.WriteLine($" - {option.Texte}: {option.Pourcentage}%");
}
}
AddCampagne
Crée une nouvelle campagne de vote.
Task<ErrorOr<Guid>> AddCampagne(B2BCreateCampagneDto toAdd)
Paramètres:
| Nom | Type | Description |
|---|---|---|
toAdd | B2BCreateCampagneDto | Données de la campagne à créer |
Retour: Identifiant de la campagne créée.
Exemple:
var nouvelleCampagne = new B2BCreateCampagneDto
{
Titre = "Élection du conseil 2025",
OuvertureDuVoteUtc = new DateTime(2025, 3, 1, 8, 0, 0, DateTimeKind.Utc),
FermetureDuVoteUtc = new DateTime(2025, 3, 15, 17, 0, 0, DateTimeKind.Utc),
TextePageAccueil = "<p>Bienvenue à l'élection annuelle.</p>",
LibelleAbstention = "Je m'abstiens",
OrdreReponsesAleatoire = true
};
var result = await _campagnesClient.AddCampagne(nouvelleCampagne);
if (result.IsError)
{
_logger.LogError("Erreur création: {Error}", result.FirstError.Description);
return;
}
var campagneId = result.Value;
_logger.LogInformation("Campagne créée: {Id}", campagneId);
UpdateCampagne
Met à jour une campagne existante.
Task<ErrorOr<Success>> UpdateCampagne(Guid id, B2BUpdateCampagneDto toUpdate)
Paramètres:
| Nom | Type | Description |
|---|---|---|
id | Guid | Identifiant de la campagne |
toUpdate | B2BUpdateCampagneDto | Nouvelles données |
Exemple:
var miseAJour = new B2BUpdateCampagneDto
{
Titre = "Élection du conseil 2025 - Modifié",
OuvertureDuVoteUtc = new DateTime(2025, 3, 5, 8, 0, 0, DateTimeKind.Utc),
FermetureDuVoteUtc = new DateTime(2025, 3, 20, 17, 0, 0, DateTimeKind.Utc),
TextePageAccueil = "<p>Bienvenue! Les dates ont été ajustées.</p>",
OrdreReponsesAleatoire = true
};
var result = await _campagnesClient.UpdateCampagne(campagneId, miseAJour);
if (result.IsError)
{
_logger.LogError("Erreur mise à jour: {Error}", result.FirstError.Description);
}
DeleteCampagne
Supprime une campagne.
Task<ErrorOr<Success>> DeleteCampagne(Guid id)
Paramètres:
| Nom | Type | Description |
|---|---|---|
id | Guid | Identifiant de la campagne à supprimer |
Une campagne ne peut être supprimée que si elle est en état "Brouillon" et n'a pas encore reçu de votes.
Exemple:
var result = await _campagnesClient.DeleteCampagne(campagneId);
if (result.IsError)
{
_logger.LogError("Erreur suppression: {Error}", result.FirstError.Description);
return;
}
_logger.LogInformation("Campagne supprimée");
PublierCampagne
Publie une campagne pour la rendre accessible aux votants.
Task<ErrorOr<Success>> PublierCampagne(Guid id)
Paramètres:
| Nom | Type | Description |
|---|---|---|
id | Guid | Identifiant de la campagne |
Exemple:
var result = await _campagnesClient.PublierCampagne(campagneId);
if (result.IsError)
{
_logger.LogError("Erreur publication: {Error}", result.FirstError.Description);
return;
}
_logger.LogInformation("Campagne publiée avec succès");
DepublierCampagne
Dépublie une campagne pour la rendre inaccessible aux votants.
Task<ErrorOr<Success>> DepublierCampagne(Guid id)
Paramètres:
| Nom | Type | Description |
|---|---|---|
id | Guid | Identifiant de la campagne |
Une campagne ne peut être dépubliée que si le vote n'a pas encore commencé.
Exemple:
var result = await _campagnesClient.DepublierCampagne(campagneId);
if (result.IsError)
{
_logger.LogError("Erreur dépublication: {Error}", result.FirstError.Description);
return;
}
_logger.LogInformation("Campagne dépubliée");
Types associés
B2BCampagneItem- Informations d'une campagneB2BCreateCampagneDto- DTO pour créationB2BUpdateCampagneDto- DTO pour modificationB2BCampagneSearchRequest- Paramètres de rechercheB2BCampagneStatsItem- Statistiques de campagne