feat : Composant DisplayQuestions

Multiplayer_Php
Yvan CALATAYUD 1 year ago
parent 756cd07091
commit 41387fddd2

@ -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));
}
}
}
}

@ -21,13 +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>

@ -12,6 +12,7 @@ using Blazor.Modals;
using Blazored.Modal; using Blazored.Modal;
using Blazor.Pages.Admins; using Blazor.Pages.Admins;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Blazor.Components;
namespace Blazor.Pages.Questions; namespace Blazor.Pages.Questions;
@ -43,7 +44,7 @@ public partial class Questions
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;
@ -98,6 +99,14 @@ public partial class Questions
if (!e.CancellationToken.IsCancellationRequested) if (!e.CancellationToken.IsCancellationRequested)
{ {
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
}); });

Loading…
Cancel
Save