From cf83d8d840f5b237b8a0d5f906db73edee76d485 Mon Sep 17 00:00:00 2001 From: "yvan.calatayud" Date: Wed, 20 Dec 2023 17:55:54 +0100 Subject: [PATCH] feat : delete --- Blazor/Blazor/Models/QuestionModel.cs | 15 ++---- .../Pages/Admins/Administrators.razor.cs | 21 +++++++-- .../Blazor/Pages/Chapters/Chapters.razor.cs | 25 ++++++++-- Blazor/Blazor/Pages/Players/Players.razor.cs | 22 +++++++-- .../Blazor/Pages/Questions/AddQuestion.razor | 2 +- .../Blazor/Pages/Questions/EditQuestion.razor | 40 ++++++++++++++-- .../Pages/Questions/EditQuestion.razor.cs | 46 +++++++++++++++++++ .../Blazor/Pages/Questions/Questions.razor.cs | 22 +++++++-- Blazor/Blazor/Services/DataLocalService.cs | 40 ++++++++-------- Blazor/Blazor/Services/IDataService.cs | 4 +- 10 files changed, 187 insertions(+), 50 deletions(-) diff --git a/Blazor/Blazor/Models/QuestionModel.cs b/Blazor/Blazor/Models/QuestionModel.cs index b4a0b22..ecdc5df 100644 --- a/Blazor/Blazor/Models/QuestionModel.cs +++ b/Blazor/Blazor/Models/QuestionModel.cs @@ -2,22 +2,13 @@ public class QuestionModel { - public int Id { get; private set; } + public int Id { get; set; } public string Content { get; set; } - public int IdChapter { get; private set; } + public int IdChapter { get; set; } public int? IdAnswerGood { get; set; } public int Difficulty { get; set; } - public int NbFails { get; private set; } + public int NbFails { get; set; } - public QuestionModel(int id, string content, int idChapter, int difficulty, int nbFails, int? idAnswerGood = null) - { - Id = id; - Content = content; - IdChapter = idChapter; - Difficulty = difficulty; - NbFails = nbFails; - IdAnswerGood = idAnswerGood; - } public void addFails(int nb) { NbFails += nb; } public void removeFails(int nb) { NbFails -= nb; } diff --git a/Blazor/Blazor/Pages/Admins/Administrators.razor.cs b/Blazor/Blazor/Pages/Admins/Administrators.razor.cs index 5773514..3eb7cda 100644 --- a/Blazor/Blazor/Pages/Admins/Administrators.razor.cs +++ b/Blazor/Blazor/Pages/Admins/Administrators.razor.cs @@ -85,14 +85,29 @@ public partial class Administrators parameters.Add(nameof(Administrator.Id), id); var modal = Modal.Show("Delete Confirmation", parameters); - var result = modal.Result; + var result = await modal.Result; - if (result.IsCanceled) + if (result.Cancelled) { return; } - await DataService.Delete(id); + string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/delete/administrator/" + id; + + using (var httpClient = new HttpClient()) + { + var response = await httpClient.DeleteAsync(apiUri); + + if (response.IsSuccessStatusCode) + { + var responseBody = await response.Content.ReadAsStringAsync(); + } + else + { + var errorResponse = await response.Content.ReadAsStringAsync(); + } + } + //await DataService.Delete(id); // Reload the page NavigationManager.NavigateTo("administrators", true); diff --git a/Blazor/Blazor/Pages/Chapters/Chapters.razor.cs b/Blazor/Blazor/Pages/Chapters/Chapters.razor.cs index eec53b1..f79c412 100644 --- a/Blazor/Blazor/Pages/Chapters/Chapters.razor.cs +++ b/Blazor/Blazor/Pages/Chapters/Chapters.razor.cs @@ -10,6 +10,8 @@ using ChoETL; using Microsoft.AspNetCore.Components.Forms; using Blazor.Modals; using Blazored.Modal; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Blazor.Models; namespace Blazor.Pages.Chapters; public partial class Chapters @@ -44,14 +46,31 @@ public partial class Chapters parameters.Add(nameof(Chapter.Id), id); var modal = Modal.Show("Delete Confirmation", parameters); - var result = modal.Result; + var result = await modal.Result; - if (result.IsCanceled) + if (result.Cancelled) { return; } - await DataService.Delete(id); + string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/delete/chapter/" + id; + + using (var httpClient = new HttpClient()) + { + var response = await httpClient.DeleteAsync(apiUri); + + if (response.IsSuccessStatusCode) + { + var responseBody = await response.Content.ReadAsStringAsync(); + } + else + { + var errorResponse = await response.Content.ReadAsStringAsync(); + } + } + // /api/delete/player/ +chapterid + + //await DataService.Delete(id); // Reload the page NavigationManager.NavigateTo("chapters", true); diff --git a/Blazor/Blazor/Pages/Players/Players.razor.cs b/Blazor/Blazor/Pages/Players/Players.razor.cs index 7cb9b95..aa9bc5a 100644 --- a/Blazor/Blazor/Pages/Players/Players.razor.cs +++ b/Blazor/Blazor/Pages/Players/Players.razor.cs @@ -46,14 +46,30 @@ public partial class Players parameters.Add(nameof(Player.Id), id); var modal = Modal.Show("Delete Confirmation", parameters); - var result = modal.Result; + var result = await modal.Result; - if (result.IsCanceled) + if (result.Cancelled) { return; } - await DataService.Delete(id); + string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/delete/player/" + id; + + using (var httpClient = new HttpClient()) + { + var response = await httpClient.DeleteAsync(apiUri); + + if (response.IsSuccessStatusCode) + { + var responseBody = await response.Content.ReadAsStringAsync(); + } + else + { + var errorResponse = await response.Content.ReadAsStringAsync(); + } + } + + //await DataService.Delete(id); // Reload the page NavigationManager.NavigateTo("Players", true); diff --git a/Blazor/Blazor/Pages/Questions/AddQuestion.razor b/Blazor/Blazor/Pages/Questions/AddQuestion.razor index a39c7f4..1fef3d7 100644 --- a/Blazor/Blazor/Pages/Questions/AddQuestion.razor +++ b/Blazor/Blazor/Pages/Questions/AddQuestion.razor @@ -1,4 +1,4 @@ -@page "/addAdministrator" +@page "/addQuestion" @using Blazor.Models

AddQuestion

diff --git a/Blazor/Blazor/Pages/Questions/EditQuestion.razor b/Blazor/Blazor/Pages/Questions/EditQuestion.razor index e2584ff..5d4a6a6 100644 --- a/Blazor/Blazor/Pages/Questions/EditQuestion.razor +++ b/Blazor/Blazor/Pages/Questions/EditQuestion.razor @@ -1,5 +1,39 @@ -

EditQuestion

+@page "/editQuestion/{Id:int}" -@code { +

EditQuestion

+ + + + + + +

+ + + + + + +

+ + +
-} diff --git a/Blazor/Blazor/Pages/Questions/EditQuestion.razor.cs b/Blazor/Blazor/Pages/Questions/EditQuestion.razor.cs index 43cc64f..7c8130d 100644 --- a/Blazor/Blazor/Pages/Questions/EditQuestion.razor.cs +++ b/Blazor/Blazor/Pages/Questions/EditQuestion.razor.cs @@ -1,4 +1,5 @@ using Blazor.Models; +using Blazor.Pages.Admins; using Blazor.Services; using Microsoft.AspNetCore.Components; @@ -6,5 +7,50 @@ namespace Blazor.Pages.Questions { public partial class EditQuestion { + + [Parameter] + public int Id { get; set; } + + private QuestionModel questionModel = new(); + + [Inject] + public IDataService DataService { get; set; } + + [Inject] + public NavigationManager NavigationManager { get; set; } + + [Inject] + public IWebHostEnvironment WebHostEnvironment { get; set; } + + [Inject] + public ILogger Logger { get; set; } + + + private async void HandleValidSubmit() + { + await DataService.Update(Id, questionModel); + + var formData = new List>(); + formData.Add(new KeyValuePair("content", questionModel.Content)); + + var formContent = new FormUrlEncodedContent(formData); + + string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/update/questions/" + questionModel.Id; + + using (var httpClient = new HttpClient()) + { + var response = await httpClient.PostAsync(apiUri, formContent); + + if (response.IsSuccessStatusCode) + { + var responseBody = await response.Content.ReadAsStringAsync(); + } + else + { + var errorResponse = await response.Content.ReadAsStringAsync(); + } + } + + } } } diff --git a/Blazor/Blazor/Pages/Questions/Questions.razor.cs b/Blazor/Blazor/Pages/Questions/Questions.razor.cs index b30e35e..3b7f8e8 100644 --- a/Blazor/Blazor/Pages/Questions/Questions.razor.cs +++ b/Blazor/Blazor/Pages/Questions/Questions.razor.cs @@ -45,14 +45,30 @@ public partial class Questions parameters.Add(nameof(Question.Id), id); var modal = Modal.Show("Delete Confirmation", parameters); - var result = modal.Result; + var result = await modal.Result; - if (result.IsCanceled) + if (result.Cancelled) { return; } - await DataService.Delete(id); + string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/delete/question/" + id; + + using (var httpClient = new HttpClient()) + { + var response = await httpClient.DeleteAsync(apiUri); + + if (response.IsSuccessStatusCode) + { + var responseBody = await response.Content.ReadAsStringAsync(); + } + else + { + var errorResponse = await response.Content.ReadAsStringAsync(); + } + } + + //await DataService.Delete(id); // Reload the page NavigationManager.NavigateTo("questions", true); diff --git a/Blazor/Blazor/Services/DataLocalService.cs b/Blazor/Blazor/Services/DataLocalService.cs index d8b91cf..93e38a6 100644 --- a/Blazor/Blazor/Services/DataLocalService.cs +++ b/Blazor/Blazor/Services/DataLocalService.cs @@ -2,6 +2,7 @@ using Blazor.ViewClasses; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using static System.Net.WebRequestMethods; namespace Blazor.Services @@ -242,30 +243,29 @@ namespace Blazor.Services return question; } - //public async Task Update(int id, QuestionsModel model) - //{ - // // Get the current data - // var currentData = await _localStorage.GetItemAsync>("data"); + public async Task Update(int id, QuestionModel model) + { + // Get the current data + var currentData = await _localStorage.GetItemAsync>("data"); - // // Get the admin int the list - // var question = currentData.FirstOrDefault(w => w.Id == id); + // Get the admin int the list + var question = currentData.FirstOrDefault(w => w.Id == id); - // // Check if admin exist - // if (question == null) - // { - // throw new Exception($"Unable to found the item with ID: {id}"); - // } + // Check if admin exist + if (question == null) + { + throw new Exception($"Unable to found the item with ID: {id}"); + } - // // Modify the content of the adminnistrator - // question.Username = model.Username; - // question.HashedPassword = model.HashedPassword; + // Modify the content of the adminnistrator + question.Content = model.Content; - // // Save the data - // await _localStorage.SetItemAsync("data", currentData); - //} + // Save the data + await _localStorage.SetItemAsync("data", currentData); + } - //public async Task Add(QuestionsModel model) - //{ + public async Task Add(QuestionModel model) + { // // Get the current data // var currentData = await _localStorage.GetItemAsync>("data"); @@ -283,7 +283,7 @@ namespace Blazor.Services // // Save the data // await _localStorage.SetItemAsync("data", currentData); - //} + } public async Task CountQuestion() { diff --git a/Blazor/Blazor/Services/IDataService.cs b/Blazor/Blazor/Services/IDataService.cs index f453f81..71c6111 100644 --- a/Blazor/Blazor/Services/IDataService.cs +++ b/Blazor/Blazor/Services/IDataService.cs @@ -24,9 +24,9 @@ namespace Blazor.Services Task CountAdmin(); Task> ListAdmin(int currentPage, int pageSize); - //Task Add(QuestionsModel model); + Task Add(QuestionModel model); - //Task Update(int id, QuestionsModel model); + Task Update(int id, QuestionModel model); Task GetQuestionById(int id);