feat : ajouter question

Multiplayer_Php
Maxence GUITARD 1 year ago
commit ca51465a17

@ -0,0 +1,32 @@
@page "/displayquestions/{QuestionId:int}"
@if (question != null)
{
<div class="text-center pb-2">
<h3>Question n°@question.Id</h3>
</div>
<div class="text-center pb-5 mt-3">
<h5>@question.Content</h5>
</div>
<div class="container-fluid text-center justify-content-center row">
@foreach (var answer in answers)
{
<div class="col-3 text-center">
@if (answer.Id == question.IdAnswerGood)
{
<p class="text-success"><strong>@answer.Content</strong></p>
}
else
{
<p class="text-danger">@answer.Content</p>
}
</div>
}
</div>
}
else
{
<p>Question not found</p>
}

@ -0,0 +1,42 @@
using Blazor.Models;
using Blazor.Pages;
using Blazor.Pages.Questions;
using Blazor.ViewClasses;
using Microsoft.AspNetCore.Components;
using static System.Net.WebRequestMethods;
namespace Blazor.Components
{
public partial class DisplayQuestions
{
[Parameter]
public int QuestionId { get; set; }
public Question question = new();
private List<Answer> answers = new();
public List<Question> questions;
[Inject]
public HttpClient Http { get; set; }
protected override async Task OnInitializedAsync()
{
var response = Http.GetFromJsonAsync<Question[]>(API.API_URL + "questions/" + API.TOKEN).Result;
questions = new List<Question>(response);
question = questions.Find(q => q.Id == QuestionId);
IEnumerable<Question> foundQuestions = questions.Where(q => q.Id == QuestionId);
foreach (var q in foundQuestions)
{
answers.Add(new Answer(q.A_id, q.A_content, q.Id));
}
}
}
}

@ -5,7 +5,6 @@ using System.Diagnostics;
namespace Blazor.Pages; namespace Blazor.Pages;
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
[IgnoreAntiforgeryToken]
public class ErrorModel : PageModel public class ErrorModel : PageModel
{ {
public string? RequestId { get; set; } public string? RequestId { get; set; }

@ -18,13 +18,10 @@ namespace Blazor.Pages.Questions
public List<Checkbox> checkboxs; public List<Checkbox> checkboxs;
[Inject] [Inject]
public IDataService DataService { get; set; } public required IDataService DataService { get; set; }
[Inject] [Inject]
public HttpClient Http { get; set; } public required NavigationManager NavigationManager { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject] [Inject]
public ILogger<AddAdministrator> Logger { get; set; } public ILogger<AddAdministrator> Logger { get; set; }

@ -1,5 +1,4 @@
using Blazor.Models; using Blazor.Models;
using Blazor.Pages.Admins;
using Blazor.Services; using Blazor.Services;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
@ -14,16 +13,16 @@ namespace Blazor.Pages.Questions
private QuestionModel questionModel = new(); private QuestionModel questionModel = new();
[Inject] [Inject]
public IDataService DataService { get; set; } public required IDataService DataService { get; set; }
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public required NavigationManager NavigationManager { get; set; }
[Inject] [Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; } public required IWebHostEnvironment WebHostEnvironment { get; set; }
[Inject] [Inject]
public ILogger<EditQuestion> Logger { get; set; } public required ILogger<EditQuestion> Logger { get; set; }
private async Task HandleValidSubmit() private async Task HandleValidSubmit()

@ -21,16 +21,14 @@
PageSize="10" PageSize="10"
ShowPager ShowPager
Responsive> Responsive>
<DataGridColumn TItem="Question" Field="@nameof(Question.Q_id)" Caption="#" /> <DataGridColumn TItem="Question" Field="@nameof(Question.Id)" Caption="#" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Q_content)" Caption="Display content" /> <DataGridColumn TItem="Question" Field="@nameof(Question.Content)" Caption="Display content" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Q_id)" Caption="Action"> <DataGridColumn TItem="Question" Field="@nameof(Question.Id)" Caption="Action">
<DisplayTemplate> <DisplayTemplate>
<a href="editQuestion/@(context.Q_id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a> <a href="editQuestion/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>
<button type="button" class="btn btn-primary" @onclick="() => OnDelete(context.Q_id)"><i class="fa fa-trash"></i> Supprimer</button> <button type="button" class="btn btn-primary" @onclick="() => OnDelete(context.Id)"><i class="fa fa-trash"></i> Supprimer</button>
<a href="displayquestions/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Afficher</a>
</DisplayTemplate> </DisplayTemplate>
</DataGridColumn> </DataGridColumn>
</DataGrid> </DataGrid>
<script src="Questions/Questions.razor.js"></script>

@ -11,38 +11,39 @@ using Microsoft.AspNetCore.Components.Forms;
using Blazor.Modals; using Blazor.Modals;
using Blazored.Modal; using Blazored.Modal;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Blazor.Components;
namespace Blazor.Pages.Questions; namespace Blazor.Pages.Questions;
public partial class Questions public partial class Questions
{ {
public List<Question> questions; public List<Question> questions = new();
private int totalQuestion; private int totalQuestion;
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public required NavigationManager NavigationManager { get; set; }
[CascadingParameter] [CascadingParameter]
public IModalService Modal { get; set; } public required IModalService Modal { get; set; }
[Inject] [Inject]
public IDataService DataService { get; set; } public required IDataService DataService { get; set; }
public IWebHostEnvironment WebHostEnvironment { get; set; } public required IWebHostEnvironment WebHostEnvironment { get; set; }
[Inject] [Inject]
public HttpClient Http { get; set; } public required HttpClient Http { get; set; }
[Inject] [Inject]
public ILocalStorageService LocalStorage { get; set; } public required ILocalStorageService LocalStorage { get; set; }
[Inject] [Inject]
public IJSRuntime IJSRuntime { get; set; } public required IJSRuntime IJSRuntime { get; set; }
private async void OnDelete(int id) private async void OnDelete(int id)
{ {
var parameters = new ModalParameters(); var parameters = new ModalParameters();
parameters.Add(nameof(Question.Q_id), id); parameters.Add(nameof(Question.Id), id);
var modal = Modal.Show<DeleteConfirmation>("Delete Confirmation", parameters); var modal = Modal.Show<DeleteConfirmation>("Delete Confirmation", parameters);
var result = await modal.Result; var result = await modal.Result;
@ -81,9 +82,17 @@ public partial class Questions
var response = Http.GetFromJsonAsync<Question[]>(API.API_URL+"questions/"+API.TOKEN).Result; var response = Http.GetFromJsonAsync<Question[]>(API.API_URL+"questions/"+API.TOKEN).Result;
if (!e.CancellationToken.IsCancellationRequested) if (!e.CancellationToken.IsCancellationRequested && response != null)
{ {
questions = new List<Question>(response); // an actual data for the current page questions = new List<Question>(response); // an actual data for the current page
List<Question> selectedQuestions = new List<Question>();
for (int i = 0; i < questions.Count; i += 4)
{
selectedQuestions.Add(questions[i]);
}
questions = selectedQuestions;
totalQuestion = questions.Count; totalQuestion = questions.Count;
var currentData = await LocalStorage.GetItemAsync<Question[]>("data"); var currentData = await LocalStorage.GetItemAsync<Question[]>("data");

@ -230,7 +230,7 @@ namespace Blazor.Services
var currentData = _http.GetFromJsonAsync<List<Question>>(API.API_URL+"questions/"+API.TOKEN).Result; var currentData = _http.GetFromJsonAsync<List<Question>>(API.API_URL+"questions/"+API.TOKEN).Result;
// Get the question int the list // Get the question int the list
var question = currentData.FirstOrDefault(w => w.Q_id == id); var question = currentData.FirstOrDefault(w => w.Id == id);
// Check if question exist // Check if question exist
if (question == null) if (question == null)
@ -247,7 +247,7 @@ namespace Blazor.Services
var currentData = await _localStorage.GetItemAsync<List<Question>>("data"); var currentData = await _localStorage.GetItemAsync<List<Question>>("data");
// Get the admin int the list // Get the admin int the list
var question = currentData.FirstOrDefault(w => w.Q_id == id); var question = currentData.FirstOrDefault(w => w.Id == id);
// Check if admin exist // Check if admin exist
if (question == null) if (question == null)
@ -256,7 +256,7 @@ namespace Blazor.Services
} }
// Modify the content of the adminnistrator // Modify the content of the adminnistrator
question.Q_content = model.Content; question.Content = model.Content;
// Save the data // Save the data
await _localStorage.SetItemAsync("data", currentData); await _localStorage.SetItemAsync("data", currentData);
@ -268,13 +268,13 @@ namespace Blazor.Services
var currentData = await _localStorage.GetItemAsync<List<Question>>("data"); var currentData = await _localStorage.GetItemAsync<List<Question>>("data");
// Simulate the Id // Simulate the Id
model.Id = currentData.Max(s => s.Q_id) + 1; model.Id = currentData.Max(s => s.Id) + 1;
// Add the admin to the current data // Add the admin to the current data
currentData.Add(new Question currentData.Add(new Question
{ {
Q_id = model.Id, Id = model.Id,
Q_content = model.Content Content = model.Content
}); });

@ -1,12 +1,22 @@
namespace Blazor.ViewClasses; using System.Text.Json.Serialization;
namespace Blazor.ViewClasses;
public class Question public class Question
{ {
public int Q_id { get; set; } [JsonPropertyName("q_id")]
public string Q_content { get; set; } public int Id { get; set; }
public int IdChapter { get; set; }
public int IdAnswerGood { get; set; } [JsonPropertyName("q_content")]
public string Content { get; set; }
public int Difficulty { get; set; } public int Difficulty { get; set; }
public int nbFails { get; set; } public int nbFails { get; set; }
public int IdChapter { get; set; }
public string ChapterName { get; set; }
public int IdAnswerGood { get; set; }
public int A_id { get; set; }
public string A_content { get; set; }
} }

Loading…
Cancel
Save