Aller au contenu principal

IQuestionsClient

Client pour la gestion des questions au sein d'une campagne de vote.

public interface IQuestionsClient : IBaseClient

Méthodes

GetQuestionsByCampagne

Récupère toutes les questions d'une campagne.

Task<ErrorOr<IEnumerable<B2BQuestionItem>>> GetQuestionsByCampagne(Guid campagneId)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne

Retour: Liste des questions avec leurs options de réponse.

Exemple:

var result = await _questionsClient.GetQuestionsByCampagne(campagneId);

if (result.IsError)
{
_logger.LogError("Erreur: {Error}", result.FirstError.Description);
return;
}

foreach (var question in result.Value)
{
Console.WriteLine($"Q{question.Ordre}: {question.Nom}");
Console.WriteLine($" Type: {question.TypeQuestion}");
Console.WriteLine($" Options: {question.NombreOptions}");

foreach (var option in question.Options)
{
Console.WriteLine($" - {option.Texte}");
}
}

GetQuestionById

Récupère une question par son identifiant.

Task<ErrorOr<B2BQuestionItem>> GetQuestionById(Guid campagneId, int questionId)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdintIdentifiant de la question

Retour: Informations complètes de la question.

Exemple:

var result = await _questionsClient.GetQuestionById(campagneId, questionId);

if (result.IsError)
{
if (result.FirstError.Type == ErrorType.NotFound)
{
Console.WriteLine("Question non trouvée");
}
return;
}

var question = result.Value;
Console.WriteLine($"Question: {question.Nom}");
Console.WriteLine($"Texte: {question.Texte}");
Console.WriteLine($"Min/Max réponses: {question.MinReponses}/{question.MaxReponses}");

AddQuestion

Ajoute une question à une campagne.

Task<ErrorOr<int>> AddQuestion(Guid campagneId, B2BCreateQuestionDto dto)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
dtoB2BCreateQuestionDtoDonnées de la question à créer

Retour: Identifiant de la question créée.

Exemple:

var nouvelleQuestion = new B2BCreateQuestionDto
{
Nom = "Élection du président",
Texte = "<p>Veuillez choisir le prochain président du conseil.</p>",
TypeQuestion = "Election",
MinReponses = 1,
MaxReponses = 1,
AbstentionPermise = true,
Options = new List<B2BCreateOptionReponseDto>
{
new() { Texte = "Jean Dupont", Information = "Candidat sortant" },
new() { Texte = "Marie Martin", Information = "Nouvelle candidate" }
}
};

var result = await _questionsClient.AddQuestion(campagneId, nouvelleQuestion);

if (result.IsError)
{
_logger.LogError("Erreur création: {Error}", result.FirstError.Description);
return;
}

var questionId = result.Value;
_logger.LogInformation("Question créée: {Id}", questionId);

Types de questions

TypeDescriptionCas d'usage
ChoixLibreChoix multiples parmi des options textuellesSondages, préférences
PropositionVote pour/contre une propositionApprobation de résolutions
ElectionÉlection de personnesConseil d'administration

UpdateQuestion

Met à jour une question existante.

Task<ErrorOr<Success>> UpdateQuestion(Guid campagneId, int questionId, B2BUpdateQuestionDto dto)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdintIdentifiant de la question
dtoB2BUpdateQuestionDtoNouvelles données
attention

Une question ne peut être modifiée que si la campagne n'a pas encore reçu de votes.

Exemple:

var miseAJour = new B2BUpdateQuestionDto
{
Nom = "Élection du président - Modifié",
Texte = "<p>Texte mis à jour.</p>",
MinReponses = 1,
MaxReponses = 2, // Permettre 2 choix
AbstentionPermise = true
};

var result = await _questionsClient.UpdateQuestion(campagneId, questionId, miseAJour);

if (result.IsError)
{
_logger.LogError("Erreur mise à jour: {Error}", result.FirstError.Description);
}

DeleteQuestion

Supprime une question.

Task<ErrorOr<Success>> DeleteQuestion(Guid campagneId, int questionId)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdintIdentifiant de la question

Exemple:

var result = await _questionsClient.DeleteQuestion(campagneId, questionId);

if (result.IsError)
{
_logger.LogError("Erreur suppression: {Error}", result.FirstError.Description);
return;
}

_logger.LogInformation("Question supprimée");

ReorderQuestions

Réorganise l'ordre des questions dans une campagne.

Task<ErrorOr<Success>> ReorderQuestions(Guid campagneId, int[] questionIds)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdsint[]IDs des questions dans le nouvel ordre

Exemple:

// Inverser l'ordre de deux questions
var nouvelOrdre = new[] { 3, 1, 2 };

var result = await _questionsClient.ReorderQuestions(campagneId, nouvelOrdre);

if (result.IsError)
{
_logger.LogError("Erreur réorganisation: {Error}", result.FirstError.Description);
}

AddOption

Ajoute une option de réponse à une question.

Task<ErrorOr<Guid>> AddOption(Guid campagneId, int questionId, B2BCreateOptionReponseDto dto)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdintIdentifiant de la question
dtoB2BCreateOptionReponseDtoDonnées de l'option

Retour: Identifiant de l'option créée.

Exemple:

var nouvelleOption = new B2BCreateOptionReponseDto
{
Texte = "Pierre Tremblay",
Information = "Candidat de dernière minute"
};

var result = await _questionsClient.AddOption(campagneId, questionId, nouvelleOption);

if (result.IsError)
{
_logger.LogError("Erreur création option: {Error}", result.FirstError.Description);
return;
}

var optionId = result.Value;
_logger.LogInformation("Option créée: {Id}", optionId);

UpdateOption

Met à jour une option de réponse.

Task<ErrorOr<Success>> UpdateOption(Guid campagneId, int questionId, Guid optionId, B2BCreateOptionReponseDto dto)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdintIdentifiant de la question
optionIdGuidIdentifiant de l'option
dtoB2BCreateOptionReponseDtoNouvelles données

Exemple:

var miseAJour = new B2BCreateOptionReponseDto
{
Texte = "Pierre Tremblay (retraité)",
Information = "S'est retiré de la course"
};

var result = await _questionsClient.UpdateOption(campagneId, questionId, optionId, miseAJour);

if (result.IsError)
{
_logger.LogError("Erreur mise à jour option: {Error}", result.FirstError.Description);
}

DeleteOption

Supprime une option de réponse.

Task<ErrorOr<Success>> DeleteOption(Guid campagneId, int questionId, Guid optionId)

Paramètres:

NomTypeDescription
campagneIdGuidIdentifiant de la campagne
questionIdintIdentifiant de la question
optionIdGuidIdentifiant de l'option

Exemple:

var result = await _questionsClient.DeleteOption(campagneId, questionId, optionId);

if (result.IsError)
{
_logger.LogError("Erreur suppression option: {Error}", result.FirstError.Description);
return;
}

_logger.LogInformation("Option supprimée");

Types associés