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"
ShowPager
Responsive>
<DataGridColumn TItem="Question" Field="@nameof(Question.Q_id)" Caption="#" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Q_content)" Caption="Display content" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Id)" Caption="#" />
<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>
<a href="editQuestion/@(context.Q_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>
<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.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>
</DataGridColumn>
</DataGrid>

@ -12,6 +12,7 @@ using Blazor.Modals;
using Blazored.Modal;
using Blazor.Pages.Admins;
using System.Text.RegularExpressions;
using Blazor.Components;
namespace Blazor.Pages.Questions;
@ -43,7 +44,7 @@ public partial class Questions
private async void OnDelete(int id)
{
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 result = await modal.Result;
@ -98,6 +99,14 @@ public partial class Questions
if (!e.CancellationToken.IsCancellationRequested)
{
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;
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;
// 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
if (question == null)
@ -247,7 +247,7 @@ namespace Blazor.Services
var currentData = await _localStorage.GetItemAsync<List<Question>>("data");
// 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
if (question == null)
@ -256,7 +256,7 @@ namespace Blazor.Services
}
// Modify the content of the adminnistrator
question.Q_content = model.Content;
question.Content = model.Content;
// Save the data
await _localStorage.SetItemAsync("data", currentData);
@ -268,13 +268,13 @@ namespace Blazor.Services
var currentData = await _localStorage.GetItemAsync<List<Question>>("data");
// 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
currentData.Add(new Question
{
Q_id = model.Id,
Q_content = model.Content
Id = model.Id,
Content = model.Content
});

Loading…
Cancel
Save