Aller au contenu principal

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:

NomTypeDescription
searchRequestB2BCampagneSearchRequest?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:

NomTypeDescription
idGuidIdentifiant 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:

NomTypeDescription
idGuidIdentifiant 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:

NomTypeDescription
toAddB2BCreateCampagneDtoDonné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:

NomTypeDescription
idGuidIdentifiant de la campagne
toUpdateB2BUpdateCampagneDtoNouvelles 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:

NomTypeDescription
idGuidIdentifiant de la campagne à supprimer
attention

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:

NomTypeDescription
idGuidIdentifiant 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:

NomTypeDescription
idGuidIdentifiant de la campagne
attention

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