modification QuizServiceStub/DeleteUser/ModifQuote

pull/26/head
Kevin MONDEJAR 3 months ago
parent f79e01ea05
commit bfc54acd19

@ -12,6 +12,21 @@
else
{
<DataGrid TItem="User"
Data="@users"
PageSize="@MaxValue"
ReadData="@OnReadData"
TotalItems="@totalItem"
ShowPager
Responsive>
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="Id" />
<DataGridColumn TItem="User" Field="@nameof(User.IsAdmin)" Caption="Admin" />
<DataGridColumn TItem="User" Field="@nameof(User.Name)" Caption="Nom" />
<DataGridColumn TItem="User" Field="@nameof(User.Email)" Caption="Email" />
<DataGridColumn TItem="User" Field="@nameof(User.DateCreation)" Caption="Date de création"/>
</DataGrid>
<p>Utilisateurs présents:</p>
@foreach (var user in users)
{
@ -19,11 +34,11 @@ else
<img class="imgProfil" src="@user.Image" />
@if (user.IsAdmin)
{
<p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name <strong>(Administrateur)</strong></p>
<p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name <strong>(Administrateur)</strong>[id:@user.Id]</p>
}
else
{
<p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name</p>
<p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name [id: @user.Id]</p>
}
<p class="mail"><strong>Email de l'utilisateur :</strong> @user.Email</p>
@ -55,14 +70,6 @@ else
</div>
@*
<DataGrid TItem="User"
Data="@users"
PageSize="@MaxValue">
</DataGrid>*@
<!-- Fenêtre de confirmation de suppression -->
@if (showPopupDelete)
{

@ -36,7 +36,7 @@ namespace WF_WebAdmin.Pages
users = await userService.getAllUser();
}
private async Task OnReadData(DataGridReadDataEventArgs<Quote> e)
private async Task OnReadData(DataGridReadDataEventArgs<User> e)
{
if (e.CancellationToken.IsCancellationRequested)
{

@ -23,10 +23,10 @@
<DataGridColumn TItem="Quote" Field="@nameof(Quote.DateSrc)" Caption="Date" DisplayFormat="{0:d}" DisplayFormatProvider="@System.Globalization.CultureInfo.GetCultureInfo("fr-FR")" />
<DataGridColumn TItem="Quote" Field="@nameof(Quote.Id)" Caption="Action">
<DisplayTemplate>
<button @onclick="() => OnEditButtonClicked(context) " style="background-color: lightgray; padding: 0">
@* <button @onclick="() => OnEditButtonClicked(context) " style="background-color: lightgray; padding: 0">
<img alt="Bouton Modifier" src="edit.png" width="30" height="30"/>
</button>
@*<a href="Edit/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>*@
</button> *@
<a href="Edit/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>
</DisplayTemplate>
</DataGridColumn>

@ -17,11 +17,11 @@ namespace WF_WebAdmin.Pages
public NavigationManager NavigationManager { get; set; }
[Inject]
public IQuizServiceJson QuizService { get; set; }
public IQuizService QuizService { get; set; }
protected override async Task OnInitializedAsync()
{
quizzes = await QuizService.getQuizzesToValidateJson();
quizzes = await QuizService.getQuizzesToValidate();
}
private void OnValidButton(Quiz quiz)
@ -37,7 +37,7 @@ namespace WF_WebAdmin.Pages
newQuiz.IsValid = true;
// Mis à jour de l'état du quiz
QuizService.updateQuizJson(quiz);
QuizService.updateQuiz(quiz);
}
private void OnRejectButton(Quiz quiz)
@ -49,7 +49,7 @@ namespace WF_WebAdmin.Pages
{
Console.WriteLine($"Quiz {quiz.Id} rejected!");
QuizService.removeQuizJson(quiz.Id);
QuizService.removeQuiz(quiz.Id);
}
}
}

@ -14,7 +14,8 @@ builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
builder.Services.AddScoped<IQuoteService,QuoteServiceStub>();
builder.Services.AddScoped<IQuizServiceJson,QuizServiceStub>();
builder.Services.AddScoped<IQuizService,QuizServiceStub>();
builder.Services.AddScoped<IUserService, UserServiceStub>();
builder.Services.AddHttpClient();
builder.Services.AddScoped<UserLogin>();

@ -18,6 +18,8 @@ namespace WF_WebAdmin.Service
public Task<Quiz> getQuiz(int id);
public Task<List<Quiz>> getSommeQuiz(int nb, int page);
public Task<int> getNbQuiz();
}
}

@ -1,17 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IQuizServiceJson
{
public Task<List<Quiz>> getQuizzesJson();
public Task<List<Quiz>> getQuizzesToValidateJson();
public Task removeQuizJson(int id);
public Task updateQuizJson(Quiz quiz);
public Task saveQuizJson(List<Quiz> quiz);
}
}

@ -1,17 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IQuoteServiceJson
{
public Task<List<User>> GetQuoteJson();
public Task SaveQuoteJson(List<User> users);
public Task AddQuoteJson(User user);
public Task DeleteQuoteJson(int id);
public Task UpdateQuoteJson(User user);
}
}

@ -1,17 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IUserServiceJson
{
public Task<List<User>> GetUsersJson();
public Task SaveUsersJson(List<User> users);
public Task AddUserJson(User user);
public Task DeleteUserJson(int id);
public Task UpdateUserJson(User user);
}
}

@ -3,12 +3,56 @@ using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service;
public class QuizServiceStub: IQuizServiceJson
public class QuizServiceStub: IQuizService
{
private readonly string _jsonFilePath =
Path.Combine(Environment.CurrentDirectory, "wwwroot", "fake_data_quiz.json");
private readonly string _jsonFilePath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "fake_data_quiz.json");
public async Task<List<Quiz>> getQuizzesJson()
public async Task saveQuizJson(List<Quiz> quizzes)
{
var json = JsonSerializer.Serialize(quizzes, new JsonSerializerOptions { WriteIndented = true });
await File.WriteAllTextAsync(_jsonFilePath, json);
}
public Task addQuiz(Quiz quiz)
{
throw new NotImplementedException();
}
public async Task updateQuiz(Quiz quiz)
{
var data = await getQuizzes();
var existingQuiz = data.FirstOrDefault(q => q.Id == quiz.Id);
if (existingQuiz != null)
{
existingQuiz.Question = quiz.Question;
existingQuiz.AnswerA = quiz.AnswerA;
existingQuiz.AnswerB = quiz.AnswerB;
existingQuiz.AnswerC = quiz.AnswerC;
existingQuiz.AnswerD = quiz.AnswerD;
existingQuiz.CAnswer = quiz.CAnswer;
existingQuiz.IsValid = quiz.IsValid;
existingQuiz.UserProposition = quiz.UserProposition;
await saveQuizJson(data);
}
}
public async Task removeQuiz(int id)
{
var data = await getQuizzes();
var quiz = data.FirstOrDefault(q => q.Id == id);
if (quiz != null)
{
data.Remove(quiz);
await saveQuizJson(data);
}
}
public Task validateQuiz(int id)
{
throw new NotImplementedException();
}
public async Task<List<Quiz>> getQuizzes()
{
if (!File.Exists(_jsonFilePath))
{
@ -20,44 +64,36 @@ public class QuizServiceStub: IQuizServiceJson
return JsonSerializer.Deserialize<List<Quiz>>(json) ?? new List<Quiz>();
}
public async Task<List<Quiz>> getQuizzesToValidateJson()
public async Task<List<Quiz>> getQuizzesToValidate()
{
var quizzes = await getQuizzesJson();
return quizzes.Where(quiz => quiz.IsValid == false).ToList();;
var quizzes = await getQuizzes();
return quizzes.Where(quiz => quiz.IsValid == false).ToList();
}
public async Task removeQuizJson(int id)
public async Task<Quiz> getQuiz(int id)
{
var data = await getQuizzesJson();
var quiz = data.FirstOrDefault(q => q.Id == id);
if (quiz != null)
var data = await getQuizzes();
var q = data.FirstOrDefault(p => p.Id == id);
if (q != null)
{
data.Remove(quiz);
await saveQuizJson(data);
return q;
}
return null;
}
public async Task updateQuizJson(Quiz quiz)
public async Task<List<Quiz>> getSommeQuiz(int nb, int page)
{
var data = await getQuizzesJson();
var existingQuiz = data.FirstOrDefault(q => q.Id == quiz.Id);
if (existingQuiz != null)
var data = await getQuizzes();
if ((page - 1) * nb + nb > data.Count())
{
existingQuiz.Question = quiz.Question;
existingQuiz.AnswerA = quiz.AnswerA;
existingQuiz.AnswerB = quiz.AnswerB;
existingQuiz.AnswerC = quiz.AnswerC;
existingQuiz.AnswerD = quiz.AnswerD;
existingQuiz.CAnswer = quiz.CAnswer;
existingQuiz.IsValid = quiz.IsValid;
existingQuiz.UserProposition = quiz.UserProposition;
await saveQuizJson(data);
return data.GetRange(data.Count() - nb, nb);
}
return data.GetRange((page - 1) * nb, nb);
}
public async Task saveQuizJson(List<Quiz> quizzes)
public async Task<int> getNbQuiz()
{
var json = JsonSerializer.Serialize(quizzes, new JsonSerializerOptions { WriteIndented = true });
await File.WriteAllTextAsync(_jsonFilePath, json);
var data = await getQuizzes();
return data.Count;
}
}

@ -1,26 +1,4 @@
[
{
"Id": 7,
"Question": "Lorem proident exercitation elit fugiat do amet aute labore consectetur pariatur consequat.",
"AnswerA": "eiusmod nulla",
"AnswerB": "eu Id",
"AnswerC": "proident tempor",
"AnswerD": "amet proident",
"CAnswer": "A",
"IsValid": false,
"UserProposition": "Mia Peterson"
},
{
"Id": 8,
"Question": "Incididunt magna commodo laborum do incididunt commodo proident non cillum magna elit irure voluptate.",
"AnswerA": "laborum fugiat",
"AnswerB": "laboris est",
"AnswerC": "in ea",
"AnswerD": "duis ullamco",
"CAnswer": "A",
"IsValid": false,
"UserProposition": "Juliet Fox"
},
{
"Id": 9,
"Question": "Qui labore fugiat sint Lorem ut minim in ex dolor.",

@ -66,10 +66,10 @@
{
"Id": 7,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "admin_joe",
"Name": "test_n1",
"Email": "admin.joe@gmail.com",
"DateCreation": "2024-05-30T00:00:00",
"IsAdmin": true,
"IsAdmin": false,
"Comments": null
},
{
@ -97,7 +97,7 @@
},
{
"Id": 10,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Image": "https://th.bing.com/th/id/OIP.24T00MDK-RUhFnm1Do5PFwHaFj?w=229\u0026h=180\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "dev_susan",
"Email": "dev.susan@gmail.com",
"DateCreation": "2024-08-12T00:00:00",
@ -124,7 +124,7 @@
"Name": "admin_lucas",
"Email": "admin.lucas@gmail.com",
"DateCreation": "2024-09-22T00:00:00",
"IsAdmin": true,
"IsAdmin": false,
"Comments": null
},
{
@ -144,23 +144,5 @@
"DateCreation": "2024-11-02T00:00:00",
"IsAdmin": false,
"Comments": null
},
{
"Id": 15,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "test_user_01",
"Email": "test.user01@gmail.com",
"DateCreation": "2024-06-10T00:00:00",
"IsAdmin": false,
"Comments": null
},
{
"Id": 16,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "admin_kate",
"Email": "admin.kate@gmail.com",
"DateCreation": "2024-04-16T00:00:00",
"IsAdmin": true,
"Comments": null
}
]
Loading…
Cancel
Save