Add QuizService

pull/26/head
tomivt 3 months ago
parent 35e33f14fc
commit 944c620e80

@ -9,6 +9,7 @@ namespace WF_WebAdmin.Model
public string AnswerC { get; set; } public string AnswerC { get; set; }
public string AnswerD { get; set; } public string AnswerD { get; set; }
public string CAnswer { get; set; } public string CAnswer { get; set; }
public bool IsValid { get; set; }
public string UserProposition { get; set; } public string UserProposition { get; set; }
} }
} }

@ -1,13 +1,14 @@
using Blazorise.DataGrid; using Blazorise.DataGrid;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using WF_WebAdmin.Model; using WF_WebAdmin.Model;
using WF_WebAdmin.Service;
namespace WF_WebAdmin.Pages namespace WF_WebAdmin.Pages
{ {
public partial class ValidQuiz public partial class ValidQuiz
{ {
private Quiz[] quizzes; private List<Quiz> quizzes;
private int totalQuizzes;
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
@ -15,9 +16,12 @@ namespace WF_WebAdmin.Pages
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
[Inject]
public IQuizServiceJson QuizService { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
quizzes = await Http.GetFromJsonAsync<Quiz[]>($"{NavigationManager.BaseUri}fake-dataQuiz.json"); quizzes = await QuizService.getQuizzesToValidateJson();
} }
private void OnValidButton(Quiz quiz) private void OnValidButton(Quiz quiz)
@ -28,6 +32,12 @@ namespace WF_WebAdmin.Pages
private void ValidateQuiz(Quiz quiz) private void ValidateQuiz(Quiz quiz)
{ {
Console.WriteLine($"Quiz {quiz.Id} validated!"); Console.WriteLine($"Quiz {quiz.Id} validated!");
Quiz newQuiz = quiz;
newQuiz.IsValid = true;
// Mis à jour de l'état du quiz
QuizService.updateQuizJson(quiz);
} }
private void OnRejectButton(Quiz quiz) private void OnRejectButton(Quiz quiz)
@ -38,6 +48,8 @@ namespace WF_WebAdmin.Pages
private void RejectQuiz(Quiz quiz) private void RejectQuiz(Quiz quiz)
{ {
Console.WriteLine($"Quiz {quiz.Id} rejected!"); Console.WriteLine($"Quiz {quiz.Id} rejected!");
QuizService.removeQuizJson(quiz.Id);
} }
} }
} }

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

@ -0,0 +1,24 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IQuizService
{
public Task addQuiz(Quiz quiz);
public Task updateQuiz(Quiz quiz);
public Task removeQuiz(int id);
public Task validateQuiz(int id);
public Task<List<Quiz>> getQuizzes();
public Task<List<Quiz>> getQuizzesToValidate();
public Task<Quiz> getQuiz(int id);
public Task<int> getNbQuiz();
}
}

@ -0,0 +1,17 @@
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,25 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service;
public class QuizService
{
public List<Quiz> GetQuizToConfirm()
{
var res = new List<Quiz>();
return res;
}
public bool AddQuiz(Quiz quiz)
{
var res = false;
return res;
}
public bool RemoveQuiz(Quiz quiz)
{
var res = false;
return res;
}
}

@ -0,0 +1,63 @@
using System.Text.Json;
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service;
public class QuizServiceStub: IQuizServiceJson
{
private readonly string _jsonFilePath =
Path.Combine(Environment.CurrentDirectory, "wwwroot", "fake_data_quiz.json");
public async Task<List<Quiz>> getQuizzesJson()
{
if (!File.Exists(_jsonFilePath))
{
Console.Out.WriteLine($"{_jsonFilePath} not found");
return new List<Quiz>();
}
var json = await File.ReadAllTextAsync(_jsonFilePath);
return JsonSerializer.Deserialize<List<Quiz>>(json) ?? new List<Quiz>();
}
public async Task<List<Quiz>> getQuizzesToValidateJson()
{
var quizzes = await getQuizzesJson();
return quizzes.Where(quiz => quiz.IsValid == false).ToList();;
}
public async Task removeQuizJson(int id)
{
var data = await getQuizzesJson();
var quiz = data.FirstOrDefault(q => q.Id == id);
if (quiz != null)
{
data.Remove(quiz);
await saveQuizJson(data);
}
}
public async Task updateQuizJson(Quiz quiz)
{
var data = await getQuizzesJson();
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 saveQuizJson(List<Quiz> quizzes)
{
var json = JsonSerializer.Serialize(quizzes, new JsonSerializerOptions { WriteIndented = true });
await File.WriteAllTextAsync(_jsonFilePath, json);
}
}

@ -1,282 +0,0 @@
[
{
"id": 1,
"question": "Voluptate nulla laborum pariatur excepteur consequat officia ea esse ut nisi amet non.",
"answerA": "sit ullamco",
"answerB": "deserunt reprehenderit",
"answerC": "cupidatat deserunt",
"answerD": "ullamco aliqua",
"cAnswer": "B",
"userProposition": "Lori Myers"
},
{
"id": 2,
"question": "Ea elit esse minim aute aliquip cillum amet cupidatat fugiat exercitation.",
"answerA": "ullamco excepteur",
"answerB": "aliquip occaecat",
"answerC": "incididunt duis",
"answerD": "sunt dolor",
"cAnswer": "A",
"userProposition": "Louella Robinson"
},
{
"id": 3,
"question": "Aute commodo est proident sunt nulla est cillum eiusmod est voluptate dolore sit aliqua incididunt.",
"answerA": "reprehenderit mollit",
"answerB": "laboris consectetur",
"answerC": "cillum deserunt",
"answerD": "deserunt fugiat",
"cAnswer": "B",
"userProposition": "Richmond Joyner"
},
{
"id": 4,
"question": "Fugiat duis excepteur non amet tempor deserunt ut occaecat cupidatat eiusmod et amet enim.",
"answerA": "amet aute",
"answerB": "excepteur ad",
"answerC": "laboris veniam",
"answerD": "veniam in",
"cAnswer": "B",
"userProposition": "Brady Patrick"
},
{
"id": 5,
"question": "Occaecat minim velit dolor est ad ut irure eu labore velit in dolore exercitation.",
"answerA": "eu aliqua",
"answerB": "labore ipsum",
"answerC": "labore reprehenderit",
"answerD": "anim excepteur",
"cAnswer": "C",
"userProposition": "Mavis Boone"
},
{
"id": 6,
"question": "Non laboris adipisicing anim fugiat labore excepteur tempor elit in.",
"answerA": "in excepteur",
"answerB": "nostrud dolor",
"answerC": "nisi aliqua",
"answerD": "sint nisi",
"cAnswer": "C",
"userProposition": "Douglas Dejesus"
},
{
"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",
"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",
"userProposition": "Juliet Fox"
},
{
"id": 9,
"question": "Qui labore fugiat sint Lorem ut minim in ex dolor.",
"answerA": "et deserunt",
"answerB": "labore sit",
"answerC": "in eiusmod",
"answerD": "amet incididunt",
"cAnswer": "C",
"userProposition": "Earnestine Poole"
},
{
"id": 10,
"question": "Voluptate pariatur ipsum magna sint Lorem adipisicing.",
"answerA": "sint velit",
"answerB": "non culpa",
"answerC": "nisi ut",
"answerD": "excepteur labore",
"cAnswer": "B",
"userProposition": "Alexis Cross"
},
{
"id": 11,
"question": "In labore sunt est cupidatat cillum.",
"answerA": "ut ad",
"answerB": "non deserunt",
"answerC": "do officia",
"answerD": "ut nostrud",
"cAnswer": "C",
"userProposition": "Brooks Martinez"
},
{
"id": 12,
"question": "Irure occaecat sit laborum nulla ea dolore et aliqua sunt Lorem enim esse.",
"answerA": "excepteur occaecat",
"answerB": "pariatur in",
"answerC": "reprehenderit excepteur",
"answerD": "laborum adipisicing",
"cAnswer": "D",
"userProposition": "Shields Roth"
},
{
"id": 13,
"question": "Laboris sint in sit exercitation nisi id cillum ex ea culpa fugiat in cupidatat.",
"answerA": "labore mollit",
"answerB": "in veniam",
"answerC": "labore eiusmod",
"answerD": "consequat veniam",
"cAnswer": "B",
"userProposition": "Carmella Chase"
},
{
"id": 14,
"question": "Proident dolor Lorem anim proident laborum sint minim sit laborum aliquip.",
"answerA": "velit exercitation",
"answerB": "voluptate esse",
"answerC": "occaecat cupidatat",
"answerD": "enim adipisicing",
"cAnswer": "D",
"userProposition": "Johns Solomon"
},
{
"id": 15,
"question": "Do magna dolore enim laborum consequat reprehenderit nisi consequat nostrud.",
"answerA": "proident do",
"answerB": "labore minim",
"answerC": "in elit",
"answerD": "in irure",
"cAnswer": "A",
"userProposition": "Alana Moore"
},
{
"id": 16,
"question": "Culpa anim id elit dolore veniam.",
"answerA": "ipsum nisi",
"answerB": "officia voluptate",
"answerC": "in excepteur",
"answerD": "ullamco non",
"cAnswer": "B",
"userProposition": "Russo Rios"
},
{
"id": 17,
"question": "Ea est consectetur exercitation aute ut mollit pariatur irure aute adipisicing dolore.",
"answerA": "fugiat elit",
"answerB": "pariatur nulla",
"answerC": "exercitation ipsum",
"answerD": "exercitation laboris",
"cAnswer": "A",
"userProposition": "Bobbi Lara"
},
{
"id": 18,
"question": "Laborum consectetur incididunt ad fugiat fugiat proident culpa mollit laborum.",
"answerA": "elit duis",
"answerB": "amet aute",
"answerC": "culpa nostrud",
"answerD": "do pariatur",
"cAnswer": "D",
"userProposition": "Lewis Mullins"
},
{
"id": 19,
"question": "Culpa anim aliquip mollit non labore.",
"answerA": "labore incididunt",
"answerB": "laborum non",
"answerC": "sunt laborum",
"answerD": "est sunt",
"cAnswer": "B",
"userProposition": "Mccray Mccoy"
},
{
"id": 20,
"question": "Ex exercitation deserunt aute cillum dolor.",
"answerA": "proident magna",
"answerB": "pariatur exercitation",
"answerC": "ipsum veniam",
"answerD": "culpa quis",
"cAnswer": "C",
"userProposition": "Moss Jefferson"
},
{
"id": 21,
"question": "Do mollit aute dolore anim id non aliqua.",
"answerA": "ipsum aute",
"answerB": "irure ex",
"answerC": "ex duis",
"answerD": "ipsum cupidatat",
"cAnswer": "B",
"userProposition": "Roth Valdez"
},
{
"id": 22,
"question": "Commodo sunt reprehenderit tempor sit ut ea Lorem esse minim elit et sunt sint qui.",
"answerA": "et do",
"answerB": "officia culpa",
"answerC": "et commodo",
"answerD": "irure tempor",
"cAnswer": "D",
"userProposition": "Adrienne Carpenter"
},
{
"id": 23,
"question": "Excepteur cupidatat ut sit commodo magna elit.",
"answerA": "pariatur tempor",
"answerB": "proident non",
"answerC": "velit elit",
"answerD": "pariatur fugiat",
"cAnswer": "D",
"userProposition": "Mcknight Cain"
},
{
"id": 24,
"question": "Laborum eu nisi consequat voluptate in laboris cillum in aute sint excepteur aliqua Lorem in.",
"answerA": "pariatur in",
"answerB": "voluptate qui",
"answerC": "et cillum",
"answerD": "adipisicing id",
"cAnswer": "D",
"userProposition": "Gay Barlow"
},
{
"id": 25,
"question": "Laborum ullamco occaecat excepteur deserunt nostrud dolor.",
"answerA": "magna labore",
"answerB": "ullamco veniam",
"answerC": "reprehenderit irure",
"answerD": "magna dolore",
"cAnswer": "B",
"userProposition": "Hannah Battle"
},
{
"id": 26,
"question": "Commodo in amet laboris Lorem et qui anim ea ullamco dolor dolor commodo.",
"answerA": "amet nulla",
"answerB": "laborum mollit",
"answerC": "amet in",
"answerD": "irure amet",
"cAnswer": "D",
"userProposition": "Dawson Mcpherson"
},
{
"id": 27,
"question": "Veniam non consectetur sit cillum.",
"answerA": "aliqua cupidatat",
"answerB": "nostrud culpa",
"answerC": "anim ullamco",
"answerD": "adipisicing et",
"cAnswer": "A",
"userProposition": "Reeves Love"
},
{
"id": 28,
"question": "Ullamco laboris voluptate nostrud commodo Lorem enim ad ipsum.",
"answerA": "id aute",
"answerB": "aliquip incididunt",
"answerC": "duis elit",
"answerD": "mollit ad",
"cAnswer": "B",
"userProposition": "Michael Holmes"
}
]

@ -0,0 +1,68 @@
[
{
"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.",
"AnswerA": "et deserunt",
"AnswerB": "labore sit",
"AnswerC": "in eiusmod",
"AnswerD": "amet incididunt",
"CAnswer": "C",
"IsValid": false,
"UserProposition": "Earnestine Poole"
},
{
"Id": 10,
"Question": "Voluptate pariatur ipsum magna sint Lorem adipisicing.",
"AnswerA": "sint velit",
"AnswerB": "non culpa",
"AnswerC": "nisi ut",
"AnswerD": "excepteur labore",
"CAnswer": "B",
"IsValid": false,
"UserProposition": "Alexis Cross"
},
{
"Id": 11,
"Question": "In labore sunt est cupidatat cillum.",
"AnswerA": "ut ad",
"AnswerB": "non deserunt",
"AnswerC": "do officia",
"AnswerD": "ut nostrud",
"CAnswer": "C",
"IsValid": false,
"UserProposition": "Brooks Martinez"
},
{
"Id": 12,
"Question": "Irure occaecat sit laborum nulla ea dolore et aliqua sunt Lorem enim esse.",
"AnswerA": "excepteur occaecat",
"AnswerB": "pariatur in",
"AnswerC": "reprehenderit excepteur",
"AnswerD": "laborum adipisicing",
"CAnswer": "D",
"IsValid": false,
"UserProposition": "Shields Roth"
}
]
Loading…
Cancel
Save