doc sur Pages

Service
parent 60183a2d3a
commit 6f16e134ca

@ -3,25 +3,45 @@ using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using WF_WebAdmin.Model; using WF_WebAdmin.Model;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Page d'accueil qui affiche des citations quotidiennes.
/// </summary>
public partial class Accueil public partial class Accueil
{ {
/// <summary>
/// Tableau contenant les citations quotidiennes.
/// </summary>
private Quote[] Dailyquote; private Quote[] Dailyquote;
/// <summary>
/// Service HttpClient pour faire des requêtes HTTP.
/// </summary>
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
/// <summary>
/// Service NavigationManager pour la gestion de la navigation dans l'application.
/// </summary>
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
/// <summary>
/// Service pour la localisation des ressources (traductions) sur la page.
/// </summary>
[Inject] [Inject]
public IStringLocalizer<Accueil> Localizer { get; set; } public IStringLocalizer<Accueil> Localizer { get; set; }
/// <summary>
/// Méthode appelée lors de l'initialisation du composant.
/// Elle charge les citations quotidiennes depuis un fichier JSON.
/// </summary>
/// <returns>Une tâche représentant l'opération asynchrone.</returns>
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// Chargement des citations quotidiennes depuis le fichier JSON
Dailyquote = await Http.GetFromJsonAsync<Quote[]>($"{NavigationManager.BaseUri}fake-dataDailyQuote.json"); Dailyquote = await Http.GetFromJsonAsync<Quote[]>($"{NavigationManager.BaseUri}fake-dataDailyQuote.json");
} }
} }
} }

@ -3,7 +3,7 @@ using WF_WebAdmin.Service;
using WF_WebAdmin.Model; using WF_WebAdmin.Model;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
@ -17,12 +17,16 @@ namespace WF_WebAdmin.Pages
private QuizModel QuizModel = new(); private QuizModel QuizModel = new();
/// <summary>
/// Handles the form submission to create a new quiz.
/// </summary>
private async void HandleValidSubmit() private async void HandleValidSubmit()
{ {
int id; int id;
id = await quizService.getNbQuiz(); id = await quizService.getNbQuiz(); // Fetch the current quiz count
id++; id++; // Increment the quiz ID to create a new quiz ID
// Create and add the quiz using the validated inputs
await quizService.addQuiz(new Quiz( await quizService.addQuiz(new Quiz(
id, id,
validateInformation(QuizModel.Question), validateInformation(QuizModel.Question),
@ -32,48 +36,56 @@ namespace WF_WebAdmin.Pages
validateInformation(QuizModel.AnswerD), validateInformation(QuizModel.AnswerD),
validateReponse(QuizModel.CAnswer) validateReponse(QuizModel.CAnswer)
)); ));
// Navigate to the quiz management page after adding the quiz
NavigationManager.NavigateTo("modifquiz"); NavigationManager.NavigateTo("modifquiz");
} }
/// <summary>
/// Handles the change in the correct answer selection.
/// </summary>
private void OnCAwnserChange(string item, object checkedValue) private void OnCAwnserChange(string item, object checkedValue)
{ {
QuizModel.CAnswer = item; QuizModel.CAnswer = item;
} }
/// <summary>
/// Validates each input (question or answers) to ensure it isn't null or empty.
/// </summary>
private static string validateInformation(string item) private static string validateInformation(string item)
{ {
return item; // VALIDATION A FAIRE if (string.IsNullOrWhiteSpace(item))
{
throw new ArgumentException("Input cannot be empty or whitespace.");
}
return item; // Return the valid input
} }
/// <summary>
/// Validates the selected correct answer to be one of the valid options (A, B, C, D).
/// </summary>
private static string validateReponse(string item) private static string validateReponse(string item)
{ {
try try
{ {
if (!string.IsNullOrEmpty(item)) if (string.IsNullOrEmpty(item))
{
switch (item)
{ {
case "A": throw new ArgumentNullException("Correct answer must be selected.");
break;
case "B":
break;
case "C":
break;
case "D":
break;
default:
throw new InvalidDataException("Invalid item (validateReponse) : item must be A,B,C or D " + item + "give.");
}
} }
else
// Ensure the answer is one of A, B, C, or D
if (!Regex.IsMatch(item, "^[A-D]$"))
{ {
throw new ArgumentNullException("Invalid item (validateReponse): null given."); throw new InvalidDataException($"Invalid answer choice: '{item}'. Answer must be one of A, B, C, or D.");
} }
return item;
return item; // Return the valid answer
} }
catch (Exception ex) catch (Exception ex)
{ {
return "A"; //Default Argument // Log error or show a message to the user
Console.WriteLine(ex.Message);
return "A"; // Return default answer "A" if validation fails
} }
} }
} }

@ -1,6 +1,5 @@
using Blazorise.DataGrid; using Blazorise.DataGrid;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Configuration.UserSecrets;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using System.Collections.Generic; using System.Collections.Generic;
using WF_WebAdmin.Model; using WF_WebAdmin.Model;
@ -8,21 +7,65 @@ using WF_WebAdmin.Service;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Page permettant de gérer les utilisateurs, y compris la suppression, la modification, et l'attribution du rôle admin.
/// </summary>
public partial class DeleteUser public partial class DeleteUser
{ {
/// <summary>
/// Indicateur pour afficher ou non la popup de confirmation de suppression.
/// </summary>
private bool showDeletePopup = false; private bool showDeletePopup = false;
/// <summary>
/// Indicateur pour afficher ou non la popup de confirmation de modification d'utilisateur.
/// </summary>
private bool showModifyPopup = false; private bool showModifyPopup = false;
/// <summary>
/// Liste des utilisateurs à afficher dans la page.
/// </summary>
private List<User> users; private List<User> users;
/// <summary>
/// Utilisateur sélectionné pour la suppression.
/// </summary>
private User userToDelete = null; private User userToDelete = null;
/// <summary>
/// Utilisateur sélectionné pour la modification.
/// </summary>
private User selectedUser; private User selectedUser;
/// <summary>
/// Indicateur pour afficher ou non la popup de confirmation de suppression.
/// </summary>
private bool showPopupDelete = false; private bool showPopupDelete = false;
/// <summary>
/// Indicateur pour afficher ou non la popup de confirmation de l'attribution du rôle admin.
/// </summary>
private bool showPopupAdmin = false; private bool showPopupAdmin = false;
/// <summary>
/// Utilisateur sélectionné pour devenir administrateur.
/// </summary>
private User userToAdmin = null; private User userToAdmin = null;
/// <summary>
/// Nombre maximum d'utilisateurs à afficher par page.
/// </summary>
private int MaxValue = 5; private int MaxValue = 5;
/// <summary>
/// Nombre total d'utilisateurs dans la base de données.
/// </summary>
private int totalItem; private int totalItem;
private int page = 1;
/// <summary>
/// Numéro de la page actuelle dans le DataGrid.
/// </summary>
private int page = 1;
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
@ -30,19 +73,30 @@ namespace WF_WebAdmin.Pages
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
/// <summary>
/// Service permettant de gérer les utilisateurs (CRUD).
/// </summary>
[Inject] [Inject]
private IUserService userService { get; set; } private IUserService userService { get; set; }
/// <summary>
/// Localisateur de chaîne pour gérer la localisation de la page.
/// </summary>
[Inject] [Inject]
public IStringLocalizer<DeleteUser> Localizer { get; set; } public IStringLocalizer<DeleteUser> Localizer { get; set; }
/// <summary>
/// Méthode appelée lors de l'initialisation de la page. Charge les utilisateurs à afficher.
/// </summary>
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// Charge la première page des utilisateurs
users = await userService.getSomeUser(MaxValue, 1); users = await userService.getSomeUser(MaxValue, 1);
} }
/// <summary>
/// Méthode appelée lors de la lecture des données dans le DataGrid. Gère la pagination et l'affichage des utilisateurs.
/// </summary>
private async Task OnReadData(DataGridReadDataEventArgs<User> e) private async Task OnReadData(DataGridReadDataEventArgs<User> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
@ -50,48 +104,62 @@ namespace WF_WebAdmin.Pages
return; return;
} }
// Récupère les utilisateurs pour la page demandée
var response = await userService.getSomeUser(e.PageSize, e.Page); var response = await userService.getSomeUser(e.PageSize, e.Page);
if (!e.CancellationToken.IsCancellationRequested) if (!e.CancellationToken.IsCancellationRequested)
{ {
totalItem = await userService.getNbUser(); totalItem = await userService.getNbUser(); // Récupère le nombre total d'utilisateurs
users = new List<User>(response.ToArray()); users = new List<User>(response.ToArray()); // Met à jour la liste des utilisateurs
page = e.Page; page = e.Page; // Met à jour le numéro de la page
} }
} }
// ------- Popup remove user ------- // ------- Popup remove user -------
/// <summary>
/// Affiche la popup de confirmation de suppression de l'utilisateur sélectionné.
/// </summary>
private void ShowConfirmation(User user) private void ShowConfirmation(User user)
{ {
userToDelete = user; userToDelete = user;
showPopupDelete = true; showPopupDelete = true;
} }
/// <summary>
/// Affiche la popup de modification de l'utilisateur sélectionné.
/// </summary>
private void ShowModifyConfirmation(User user) private void ShowModifyConfirmation(User user)
{ {
// Afficher la modale et mémoriser l'utilisateur à supprimer
selectedUser = user; selectedUser = user;
showModifyPopup = true; showModifyPopup = true;
} }
/// <summary>
/// Supprime l'utilisateur sélectionné et met à jour la liste des utilisateurs affichés.
/// </summary>
private async Task RemoveUser() private async Task RemoveUser()
{ {
if (userToDelete != null) if (userToDelete != null)
{ {
await userService.removeUser(userToDelete); await userService.removeUser(userToDelete); // Appelle le service pour supprimer l'utilisateur
ClosePopup(); ClosePopup(); // Ferme les popups
var response = await userService.getSomeUser(MaxValue, page); var response = await userService.getSomeUser(MaxValue, page); // Récupère à nouveau les utilisateurs
users = new List<User>(response.ToArray()); users = new List<User>(response.ToArray()); // Met à jour la liste des utilisateurs
} }
} }
/// <summary>
/// Met à jour l'utilisateur sélectionné.
/// </summary>
private async Task ModifyUser() private async Task ModifyUser()
{ {
await userService.updateUser(selectedUser); await userService.updateUser(selectedUser); // Appelle le service pour mettre à jour l'utilisateur
ClosePopup(); ClosePopup(); // Ferme les popups
} }
/// <summary>
/// Ferme toutes les popups actuellement ouvertes.
/// </summary>
private void ClosePopup() private void ClosePopup()
{ {
showDeletePopup = false; showDeletePopup = false;
@ -100,31 +168,33 @@ namespace WF_WebAdmin.Pages
showPopupAdmin = false; showPopupAdmin = false;
} }
// ------- Popup admin ------- // ------- Popup admin -------
/// <summary>
/// Affiche la popup de confirmation pour attribuer ou révoquer le rôle d'administrateur.
/// </summary>
private void ShowConfirmationAdmin(User user) private void ShowConfirmationAdmin(User user)
{ {
userToAdmin = user; userToAdmin = user;
showPopupAdmin = true; showPopupAdmin = true;
} }
/// <summary>
/// Attribue ou révoque le rôle d'administrateur pour l'utilisateur sélectionné.
/// </summary>
private async Task setAdmin() private async Task setAdmin()
{ {
if (!userToAdmin.IsAdmin) if (!userToAdmin.IsAdmin) // Si l'utilisateur n'est pas administrateur, on l'attribue comme admin
{ {
userToAdmin.IsAdmin = true; userToAdmin.IsAdmin = true;
await userService.updateUser(userToAdmin); await userService.updateUser(userToAdmin); // Met à jour l'utilisateur
ClosePopup(); ClosePopup(); // Ferme les popups
} }
else else // Si l'utilisateur est déjà administrateur, on révoque ce rôle
{ {
userToAdmin.IsAdmin = false; userToAdmin.IsAdmin = false;
await userService.updateUser(userToAdmin); await userService.updateUser(userToAdmin); // Met à jour l'utilisateur
ClosePopup(); ClosePopup(); // Ferme les popups
} }
} }
} }
} }

@ -4,28 +4,59 @@ using WF_WebAdmin.Service;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Page permettant de modifier une citation existante.
/// </summary>
public partial class Edit public partial class Edit
{ {
/// <summary>
/// Identifiant de la citation à éditer passé en paramètre de la route.
/// </summary>
[Parameter] [Parameter]
public int Id { get; set; } public int Id { get; set; }
/// <summary>
/// Service pour gérer les citations.
/// </summary>
[Inject] [Inject]
private IQuoteService quoteService { get; set; } private IQuoteService quoteService { get; set; }
/// <summary>
/// Service pour la navigation entre les pages.
/// </summary>
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
private Quote q{ get; set; } /// <summary>
/// Citation actuelle à éditer.
/// </summary>
private Quote q { get; set; }
/// <summary>
/// Modèle de données pour l'édition de la citation.
/// </summary>
private QuoteModel quoteModel = new(); private QuoteModel quoteModel = new();
/// <summary>
/// Liste des personnages disponibles pour l'édition.
/// </summary>
private List<Character> charac = new List<Character>(); private List<Character> charac = new List<Character>();
/// <summary>
/// Liste des sources disponibles pour l'édition.
/// </summary>
private List<Source> src = new List<Source>(); private List<Source> src = new List<Source>();
/// <summary>
/// Méthode appelée lors de l'initialisation de la page.
/// Elle charge la citation à éditer ainsi que les données associées (personnages, sources).
/// </summary>
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// Récupère la citation à éditer à partir de l'ID
q = await quoteService.getOnequote(Id); q = await quoteService.getOnequote(Id);
// Initialise le modèle de données avec les informations de la citation
quoteModel.Content = q.Content; quoteModel.Content = q.Content;
quoteModel.Langue = q.Langue; quoteModel.Langue = q.Langue;
quoteModel.Charac = q.Charac; quoteModel.Charac = q.Charac;
@ -36,30 +67,43 @@ namespace WF_WebAdmin.Pages
quoteModel.DateSrc = q.DateSrc; quoteModel.DateSrc = q.DateSrc;
quoteModel.UserProposition = q.UserProposition; quoteModel.UserProposition = q.UserProposition;
quoteModel.IsValid = q.IsValid; quoteModel.IsValid = q.IsValid;
// Charge la liste des personnages et des sources
charac = await quoteService.getChar(); charac = await quoteService.getChar();
src = await quoteService.getSrc(); src = await quoteService.getSrc();
} }
/// <summary>
/// Méthode appelée lors de la soumission valide du formulaire d'édition.
/// Elle met à jour la citation avec les nouvelles données.
/// </summary>
protected async void HandleValidSubmit() protected async void HandleValidSubmit()
{ {
// Met à jour les informations de la citation
q.Content = quoteModel.Content; q.Content = quoteModel.Content;
q.Langue = quoteModel.Langue; q.Langue = quoteModel.Langue;
q.TitleSrc = quoteModel.TitleSrc; q.TitleSrc = quoteModel.TitleSrc;
q.Charac = quoteModel.Charac; q.Charac = quoteModel.Charac;
// Appelle le service pour mettre à jour la citation dans la base de données
await quoteService.updateQuote(q); await quoteService.updateQuote(q);
// Redirige vers la page des citations à modifier
NavigationManager.NavigateTo("modifquote"); NavigationManager.NavigateTo("modifquote");
} }
/// <summary>
/// Méthode appelée lors du changement de langue dans le formulaire.
/// </summary>
/// <param name="item">Langue sélectionnée.</param>
/// <param name="checkedValue">Valeur de l'élément vérifié.</param>
private void OnlangChange(string item, object checkedValue) private void OnlangChange(string item, object checkedValue)
{ {
if(item == "fr" || item == "en") // Si la langue est "fr" ou "en", met à jour la langue dans le modèle de données
if (item == "fr" || item == "en")
{ {
quoteModel.Langue = item; quoteModel.Langue = item;
} }
} }
} }
} }

@ -4,23 +4,41 @@ using System.Diagnostics;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Modèle de page Razor pour afficher les erreurs dans l'application.
/// </summary>
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
[IgnoreAntiforgeryToken] [IgnoreAntiforgeryToken]
public class ErrorModel : PageModel public class ErrorModel : PageModel
{ {
/// <summary>
/// Identifiant unique de la requête pour le suivi des erreurs.
/// </summary>
public string? RequestId { get; set; } public string? RequestId { get; set; }
/// <summary>
/// Indicateur pour afficher l'ID de la requête si ce dernier est disponible.
/// </summary>
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
private readonly ILogger<ErrorModel> _logger; private readonly ILogger<ErrorModel> _logger;
/// <summary>
/// Constructeur pour initialiser le modèle de page avec le service de journalisation.
/// </summary>
/// <param name="logger">Service de journalisation pour capturer les erreurs.</param>
public ErrorModel(ILogger<ErrorModel> logger) public ErrorModel(ILogger<ErrorModel> logger)
{ {
_logger = logger; _logger = logger;
} }
/// <summary>
/// Méthode appelée lors de l'accès à la page d'erreur.
/// Elle enregistre l'ID de la requête pour la journalisation et l'affichage des erreurs.
/// </summary>
public void OnGet() public void OnGet()
{ {
// Capture de l'ID de la requête à partir de l'activité en cours ou du trace identifier
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
} }
} }

@ -1,70 +1,101 @@
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Configuration.UserSecrets;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using WF_WebAdmin.Model; using WF_WebAdmin.Model;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Composant Blazor pour la gestion de la connexion des utilisateurs.
/// </summary>
public partial class Login public partial class Login
{ {
/// <summary>
/// Service de localisation pour gérer les textes multilingues dans la page de connexion.
/// </summary>
[Inject] [Inject]
public IStringLocalizer<Login> Localizer { get; set; } public IStringLocalizer<Login> Localizer { get; set; }
/// <summary>
/// Objet représentant les informations de connexion de l'utilisateur.
/// </summary>
private UserLogin userLogin = new UserLogin(); private UserLogin userLogin = new UserLogin();
/// <summary>
/// Objet représentant l'utilisateur connecté.
/// </summary>
[Inject] [Inject]
public UserLogin uLogin { get; set; } public UserLogin uLogin { get; set; }
/// <summary>
/// Message d'erreur affiché en cas de connexion échouée.
/// </summary>
private string ErrorConnexion; private string ErrorConnexion;
/// <summary>
/// Liste des utilisateurs enregistrés pour la connexion.
/// </summary>
private List<UserLogin> usersConnexion; private List<UserLogin> usersConnexion;
/// <summary>
/// Service HTTP pour effectuer des requêtes.
/// </summary>
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
/// <summary>
/// Service de gestion de la navigation dans l'application Blazor.
/// </summary>
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
/// <summary>
/// Méthode appelée lors de l'initialisation du composant pour charger les données des utilisateurs.
/// </summary>
/// <returns>Une tâche asynchrone représentant l'initialisation du composant.</returns>
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// Chargement des utilisateurs depuis un fichier JSON simulé.
usersConnexion = await Http.GetFromJsonAsync<List<UserLogin>>($"{NavigationManager.BaseUri}fake-dataUserLogin.json"); usersConnexion = await Http.GetFromJsonAsync<List<UserLogin>>($"{NavigationManager.BaseUri}fake-dataUserLogin.json");
} }
/// <summary>
/// Méthode pour valider les informations de connexion de l'utilisateur.
/// </summary>
public void validlogin() public void validlogin()
{ {
// Vérification si les informations de connexion sont renseignées
if (!string.IsNullOrEmpty(userLogin.Name) || !string.IsNullOrEmpty(userLogin.Mdp)) if (!string.IsNullOrEmpty(userLogin.Name) || !string.IsNullOrEmpty(userLogin.Mdp))
{ {
foreach (var user in usersConnexion) foreach (var user in usersConnexion)
{ {
if(userLogin.Name == user.Name && userLogin.Mdp == user.Mdp) // Vérification si les identifiants correspondent
if (userLogin.Name == user.Name && userLogin.Mdp == user.Mdp)
{ {
if(user.IsAdmin) // Vérification si l'utilisateur est un administrateur
if (user.IsAdmin)
{ {
// Assignation de l'utilisateur à la session
uLogin.Id = userLogin.Id; uLogin.Id = userLogin.Id;
uLogin.Name = user.Name; uLogin.Name = user.Name;
uLogin.Image = user.Image; uLogin.Image = user.Image;
// Redirection vers la page d'accueil
NavigationManager.NavigateTo(NavigationManager.BaseUri + "accueil"); NavigationManager.NavigateTo(NavigationManager.BaseUri + "accueil");
return; return;
} }
else else
{ {
// Message d'erreur pour utilisateur non admin
ErrorConnexion = "Connexion échouée, le nom ou le mot de passe sont incorrectes"; ErrorConnexion = "Connexion échouée, le nom ou le mot de passe sont incorrectes";
} }
} }
else else
{ {
// Message d'erreur pour informations invalides
ErrorConnexion = "Connexion échouée, le nom ou le mot de passe sont incorrectes"; ErrorConnexion = "Connexion échouée, le nom ou le mot de passe sont incorrectes";
} }
} }
} }
} }
} }
} }

@ -5,25 +5,56 @@ using WF_WebAdmin.Service;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Composant Blazor pour la gestion des quiz, permettant leur modification et suppression.
/// </summary>
public partial class ModifQuiz public partial class ModifQuiz
{ {
/// <summary>
/// Liste des quiz à afficher dans le tableau.
/// </summary>
private Quiz[] quiz; private Quiz[] quiz;
/// <summary>
/// Valeur maximale d'éléments par page.
/// </summary>
private int MaxValue = 5; private int MaxValue = 5;
/// <summary>
/// Nombre total d'éléments dans la liste des quiz.
/// </summary>
private int totalItem; private int totalItem;
/// <summary>
/// Indicateur de l'affichage de la popup de modification du quiz.
/// </summary>
private bool showEditQuiz = false; private bool showEditQuiz = false;
/// <summary>
/// Quiz actuellement sélectionné pour modification.
/// </summary>
private Quiz? selectedQuiz; private Quiz? selectedQuiz;
/// <summary>
/// Indicateur de l'affichage de la popup de suppression.
/// </summary>
private bool showPopupDelete = false; private bool showPopupDelete = false;
/// <summary>
/// Numéro de la page actuellement affichée.
/// </summary>
private int page = 1; private int page = 1;
/// <summary>
/// Service pour gérer les quiz injecté.
/// </summary>
[Inject] [Inject]
public IQuizService QuizService { get; set; } public IQuizService QuizService { get; set; }
/// <summary>
/// Méthode appelée pour récupérer les données de la page actuelle dans le tableau.
/// </summary>
/// <param name="e">Arguments de lecture de données pour le DataGrid.</param>
private async Task OnReadData(DataGridReadDataEventArgs<Quiz> e) private async Task OnReadData(DataGridReadDataEventArgs<Quiz> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
@ -41,6 +72,10 @@ namespace WF_WebAdmin.Pages
} }
} }
/// <summary>
/// Méthode pour afficher la popup de modification d'un quiz.
/// </summary>
/// <param name="quiz">Quiz à modifier.</param>
private void OnEditButtonClicked(Quiz quiz) private void OnEditButtonClicked(Quiz quiz)
{ {
if (quiz == null) return; if (quiz == null) return;
@ -48,6 +83,9 @@ namespace WF_WebAdmin.Pages
showEditQuiz = true; showEditQuiz = true;
} }
/// <summary>
/// Méthode pour fermer la popup (modification ou suppression).
/// </summary>
private void ClosePopup() private void ClosePopup()
{ {
showEditQuiz = false; showEditQuiz = false;
@ -55,19 +93,32 @@ namespace WF_WebAdmin.Pages
selectedQuiz = null; selectedQuiz = null;
} }
/// <summary>
/// Méthode pour modifier un quiz sélectionné.
/// </summary>
private async Task EditQuiz() private async Task EditQuiz()
{
if (selectedQuiz != null)
{ {
await QuizService.updateQuiz(selectedQuiz); await QuizService.updateQuiz(selectedQuiz);
selectedQuiz = null; selectedQuiz = null;
ClosePopup(); ClosePopup();
} }
}
/// <summary>
/// Méthode pour afficher la popup de suppression d'un quiz.
/// </summary>
/// <param name="q">Quiz à supprimer.</param>
private void OnDelete(Quiz q) private void OnDelete(Quiz q)
{ {
selectedQuiz = q; selectedQuiz = q;
showPopupDelete = true; showPopupDelete = true;
} }
/// <summary>
/// Méthode pour supprimer un quiz sélectionné.
/// </summary>
private async void RemoveQuote() private async void RemoveQuote()
{ {
if (selectedQuiz != null) if (selectedQuiz != null)
@ -77,7 +128,7 @@ namespace WF_WebAdmin.Pages
var response = await QuizService.getSommeQuiz(MaxValue, page); var response = await QuizService.getSommeQuiz(MaxValue, page);
quiz = response.ToArray(); quiz = response.ToArray();
} }
showPopupDelete= false; showPopupDelete = false;
} }
} }
} }

@ -5,25 +5,51 @@ using WF_WebAdmin.Service;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Composant Blazor pour la gestion des citations, permettant la modification et la suppression de celles-ci.
/// </summary>
public partial class ModifQuote public partial class ModifQuote
{ {
/// <summary>
/// Liste des citations à afficher dans le tableau.
/// </summary>
private Quote[] quotes; private Quote[] quotes;
/// <summary>
/// Valeur maximale d'éléments par page.
/// </summary>
private int MaxValue = 5; private int MaxValue = 5;
/// <summary>
/// Nombre total d'éléments dans la liste des citations.
/// </summary>
private int totalItem; private int totalItem;
/*private bool showEditQuote = false;*/ /// <summary>
/// Citation actuellement sélectionnée pour modification.
/// </summary>
private Quote? selectedQuote; private Quote? selectedQuote;
/// <summary>
/// Indicateur de l'affichage de la popup de suppression.
/// </summary>
private bool showPopupDelete = false; private bool showPopupDelete = false;
/// <summary>
/// Numéro de la page actuellement affichée.
/// </summary>
private int page = 1; private int page = 1;
/// <summary>
/// Service pour gérer les citations injecté.
/// </summary>
[Inject] [Inject]
public IQuoteService QuoteService { get; set; } public IQuoteService QuoteService { get; set; }
/// <summary>
/// Méthode appelée pour récupérer les données de la page actuelle dans le tableau.
/// </summary>
/// <param name="e">Arguments de lecture de données pour le DataGrid.</param>
private async Task OnReadData(DataGridReadDataEventArgs<Quote> e) private async Task OnReadData(DataGridReadDataEventArgs<Quote> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
@ -41,33 +67,28 @@ namespace WF_WebAdmin.Pages
} }
} }
/*private void OnEditButtonClicked(Quote quote) /// <summary>
{ /// Méthode pour fermer la popup (modification ou suppression).
if (selectedQuote == null) return; /// </summary>
selectedQuote = quote;
showEditQuote = true;
}*/
private void ClosePopup() private void ClosePopup()
{ {
/*showEditQuote = false;*/
showPopupDelete = false; showPopupDelete = false;
selectedQuote = null; selectedQuote = null;
} }
/*private async Task EditQuote() /// <summary>
{ /// Méthode appelée pour afficher la popup de suppression d'une citation.
await QuoteService.updateQuote(selectedQuote); /// </summary>
selectedQuote = null; /// <param name="q">Citation à supprimer.</param>
ClosePopup();
}*/
private void OnDelete(Quote q) private void OnDelete(Quote q)
{ {
selectedQuote = q; selectedQuote = q;
showPopupDelete = true; showPopupDelete = true;
} }
/// <summary>
/// Méthode pour supprimer une citation sélectionnée.
/// </summary>
private async void RemoveQuote() private async void RemoveQuote()
{ {
if (selectedQuote != null) if (selectedQuote != null)

@ -5,30 +5,55 @@ using WF_WebAdmin.Service;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Composant Blazor pour gérer la validation des quiz.
/// </summary>
public partial class ValidQuiz public partial class ValidQuiz
{ {
/// <summary>
/// Liste des quiz à valider.
/// </summary>
private List<Quiz> quizzes; private List<Quiz> quizzes;
/// <summary>
/// Client HTTP injecté pour effectuer des requêtes API.
/// </summary>
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
/// <summary>
/// Gestionnaire de navigation injecté pour gérer les URL.
/// </summary>
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
/// <summary>
/// Service pour gérer les quiz injecté.
/// </summary>
[Inject] [Inject]
public IQuizService QuizService { get; set; } public IQuizService QuizService { get; set; }
/// <summary>
/// Méthode appelée lors de l'initialisation du composant. Charge la liste des quiz à valider.
/// </summary>
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
quizzes = await QuizService.getQuizzesToValidate(); quizzes = await QuizService.getQuizzesToValidate();
} }
/// <summary>
/// Méthode appelée lorsqu'on clique sur le bouton de validation d'un quiz.
/// </summary>
/// <param name="quiz">Le quiz à valider.</param>
private void OnValidButton(Quiz quiz) private void OnValidButton(Quiz quiz)
{ {
ValidateQuiz(quiz); ValidateQuiz(quiz);
} }
/// <summary>
/// Valide un quiz en mettant à jour son état.
/// </summary>
/// <param name="quiz">Le quiz à valider.</param>
private void ValidateQuiz(Quiz quiz) private void ValidateQuiz(Quiz quiz)
{ {
Console.WriteLine($"Quiz {quiz.Id} validated!"); Console.WriteLine($"Quiz {quiz.Id} validated!");
@ -40,11 +65,19 @@ namespace WF_WebAdmin.Pages
QuizService.updateQuiz(quiz); QuizService.updateQuiz(quiz);
} }
/// <summary>
/// Méthode appelée lorsqu'on clique sur le bouton de rejet d'un quiz.
/// </summary>
/// <param name="quiz">Le quiz à rejeter.</param>
private void OnRejectButton(Quiz quiz) private void OnRejectButton(Quiz quiz)
{ {
RejectQuiz(quiz); RejectQuiz(quiz);
} }
/// <summary>
/// Rejette un quiz en supprimant son état de validation.
/// </summary>
/// <param name="quiz">Le quiz à rejeter.</param>
private void RejectQuiz(Quiz quiz) private void RejectQuiz(Quiz quiz)
{ {
Console.WriteLine($"Quiz {quiz.Id} rejected!"); Console.WriteLine($"Quiz {quiz.Id} rejected!");

@ -9,16 +9,31 @@ using System.Linq;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
/// <summary>
/// Composant Blazor pour afficher et valider des citations.
/// </summary>
public partial class ValidQuote public partial class ValidQuote
{ {
/// <summary>
/// Tableau contenant les citations à valider.
/// </summary>
private Quote[] quotes; private Quote[] quotes;
/// <summary>
/// Client HTTP injecté pour effectuer des requêtes API.
/// </summary>
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
/// <summary>
/// Gestionnaire de navigation injecté pour gérer les URL.
/// </summary>
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
/// <summary>
/// Méthode appelée à l'initialisation du composant pour charger les citations.
/// </summary>
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
quotes = await Http.GetFromJsonAsync<Quote[]>($"{NavigationManager.BaseUri}fake-dataQuote.json"); quotes = await Http.GetFromJsonAsync<Quote[]>($"{NavigationManager.BaseUri}fake-dataQuote.json");

Loading…
Cancel
Save