diff --git a/Project/adminBlazor/adminBlazor.Api/Properties/launchSettings.json b/Project/adminBlazor/adminBlazor.Api/Properties/launchSettings.json
index 53872a0..b083e63 100644
--- a/Project/adminBlazor/adminBlazor.Api/Properties/launchSettings.json
+++ b/Project/adminBlazor/adminBlazor.Api/Properties/launchSettings.json
@@ -1,14 +1,23 @@
{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:51530",
+ "sslPort": 44598
+ }
+ },
"profiles": {
"Minecraft.Crafting.Api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
+ "applicationUrl": "https://localhost:7234;http://localhost:5234",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
- "dotnetRunMessages": true,
- "applicationUrl": "https://localhost:7234;http://localhost:5234"
+ "dotnetRunMessages": true
},
"IIS Express": {
"commandName": "IISExpress",
@@ -22,17 +31,9 @@
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
- "publishAllPorts": true,
- "useSSL": true
- }
- },
- "$schema": "https://json.schemastore.org/launchsettings.json",
- "iisSettings": {
- "windowsAuthentication": false,
- "anonymousAuthentication": true,
- "iisExpress": {
- "applicationUrl": "http://localhost:51530",
- "sslPort": 44598
+ "environmentVariables": {},
+ "useSSL": true,
+ "publishAllPorts": true
}
}
}
\ No newline at end of file
diff --git a/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj b/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj
index ba75d66..c4d939b 100644
--- a/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj
+++ b/Project/adminBlazor/adminBlazor.Api/adminBlazor.Api.csproj
@@ -6,9 +6,10 @@
enable
+
-
-
+
+
diff --git a/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs b/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs
new file mode 100644
index 0000000..431e46a
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs
@@ -0,0 +1,45 @@
+using adminBlazor.Models;
+using Blazorise;
+using Blazorise.Extensions;
+using System.Data;
+using System.Text.RegularExpressions;
+using System.Xml.Linq;
+
+namespace adminBlazor.Factories
+{
+ public static class VocListFactory
+ {
+ public static VocabularyListModel ToModel(VocabularyList voc)
+ {
+ return new VocabularyListModel
+ {
+ id = voc.id,
+ name = voc.name,
+ image = voc.image,
+ aut = voc.aut
+ };
+ }
+
+ public static VocabularyList Create(VocabularyListModel voc)
+ {
+ return new VocabularyList
+ {
+ id = voc.id,
+ name = voc.name,
+ image = voc.image,
+ aut = voc.aut
+ };
+ }
+ public static void Update(VocabularyList item, VocabularyListModel voc)
+ {
+ if (!string.IsNullOrEmpty(voc.name))
+ item.name = voc.name;
+
+ if (!string.IsNullOrEmpty(voc.image))
+ item.image = voc.image;
+ }
+
+ }
+
+}
+
diff --git a/Project/adminBlazor/adminBlazor/Models/Translation.cs b/Project/adminBlazor/adminBlazor/Models/Translation.cs
new file mode 100644
index 0000000..1189cc4
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Models/Translation.cs
@@ -0,0 +1,12 @@
+using System;
+namespace adminBlazor.Models
+{
+ public class Translation
+ {
+ private int id;
+ private string word1;
+ private string word2;
+ private int listVoc;
+ }
+}
+
diff --git a/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs b/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs
new file mode 100644
index 0000000..acd427c
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs
@@ -0,0 +1,12 @@
+using System;
+namespace adminBlazor.Models
+{
+ public class VocabularyList
+ {
+ public int id;
+ public string name;
+ public string image;
+ public int? aut;
+ }
+}
+
diff --git a/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs b/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs
new file mode 100644
index 0000000..977e4eb
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs
@@ -0,0 +1,18 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace adminBlazor.Models
+{
+ public class VocabularyListModel
+ {
+ [Required]
+ public int id { get; set; }
+
+ public string name { get; set; }
+
+ public string image { get; set; }
+
+ public int? aut { get; set; }
+ }
+}
+
diff --git a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor
new file mode 100644
index 0000000..fe6710d
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor
@@ -0,0 +1,26 @@
+@page "/editVoc/{Id:int}"
+@using adminBlazor.Models
+
+
+Edit
+Voc id : @Id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs
new file mode 100644
index 0000000..a46d330
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor.cs
@@ -0,0 +1,44 @@
+using adminBlazor.Factories;
+using adminBlazor.Models;
+using adminBlazor.Services;
+using Blazored.LocalStorage;
+using Microsoft.AspNetCore.Components;
+using Microsoft.AspNetCore.Hosting;
+
+
+namespace adminBlazor.Pages
+{
+ public partial class EditVoc
+ {
+ [Parameter]
+ public int Id { get; set; }
+
+ [Inject]
+ public IVocListService VocListService { get; set; }
+
+ [Inject]
+ public NavigationManager NavigationManager { get; set; }
+
+ [Inject]
+ public IWebHostEnvironment WebHostEnvironment { get; set; }
+
+ public VocabularyList currVoc;
+
+ private VocabularyListModel voc = new VocabularyListModel();
+
+ private async void HandleValidSubmit()
+ {
+ await VocListService.Update(Id, voc);
+
+ NavigationManager.NavigateTo("list");
+ }
+
+
+ protected async Task OnInitializedAsync()
+ {
+ var item = await VocListService.GetById(Id);
+
+ voc = VocListFactory.ToModel(item);
+ }
+ }
+}
diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor b/Project/adminBlazor/adminBlazor/Pages/Voc.razor
new file mode 100644
index 0000000..ec108a0
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor
@@ -0,0 +1,43 @@
+@page "/voc"
+@using adminBlazor.Models
+
+
+
+
+
+
+Vocabulary Lists
+
+
+
+
+
+
+
+
+ @if (context is VocabularyList voc)
+ {
+ @if (voc.aut != null)
+ {
+ @voc.aut
+ }
+ else
+ {
+ No author
+ }
+ }
+
+
+
+
+
+ Editer
+
+
+
diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs
new file mode 100644
index 0000000..94a73f0
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs
@@ -0,0 +1,71 @@
+using adminBlazor.Modals;
+using adminBlazor.Models;
+using adminBlazor.Services;
+using Blazored.LocalStorage;
+using Blazored.Modal;
+using Blazored.Modal.Services;
+using Blazorise.DataGrid;
+using Microsoft.AspNetCore.Components;
+
+namespace adminBlazor.Pages
+{
+ public partial class Voc
+ {
+ private List _vocList;
+
+ private int totalVocList;
+
+ [Inject]
+ public HttpClient Http { get; set; }
+
+ [Inject]
+ public ILocalStorageService LocalStorage { get; set; }
+
+ [Inject]
+ public NavigationManager NavigationManager { get; set; }
+
+ [CascadingParameter]
+ public IModalService Modal { get; set; }
+
+ [Inject]
+ public IVocListService VocListService { get; set; }
+
+
+ protected async Task OnAfterRenderAsync(bool firstRender)
+ {
+ // Do not treat this action if is not the first render
+ if (firstRender)
+ {
+ return;
+ }
+
+ var currentData = await LocalStorage.GetItemAsync("voc");
+
+ // Check if data exist in the local storage
+ if (currentData == null)
+ {
+ // this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method)
+ var originalData = Http.GetFromJsonAsync($"{NavigationManager.BaseUri}voc.json").Result;
+ await LocalStorage.SetItemAsync("voc", originalData);
+ }
+ }
+
+ private async Task OnReadData(DataGridReadDataEventArgs e)
+ {
+ if (e.CancellationToken.IsCancellationRequested)
+ {
+ return;
+ }
+
+ // When you use a real API, we use this follow code
+ //var response = await Http.GetJsonAsync( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
+ //var response = (await LocalStorage.GetItemAsync("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
+
+ if (!e.CancellationToken.IsCancellationRequested)
+ {
+ _vocList = await VocListService.List(e.Page, e.PageSize);
+ totalVocList = await VocListService.Count();// an actual data for the current page
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Project/adminBlazor/adminBlazor/Program.cs b/Project/adminBlazor/adminBlazor/Program.cs
index b449153..2262fec 100644
--- a/Project/adminBlazor/adminBlazor/Program.cs
+++ b/Project/adminBlazor/adminBlazor/Program.cs
@@ -29,7 +29,12 @@ builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton();
builder.Services.AddScoped();
+<<<<<<< HEAD
builder.Services.AddScoped();
+=======
+builder.Services.AddScoped();
+//builder.Services.AddScoped();
+>>>>>>> f62a4611bcbbfe0ed449a38e75f10df8ce6a5bbe
builder.Services.AddHttpClient();
builder.Services.AddBlazoredLocalStorage();
diff --git a/Project/adminBlazor/adminBlazor/Services/IVocListService.cs b/Project/adminBlazor/adminBlazor/Services/IVocListService.cs
new file mode 100644
index 0000000..d345522
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Services/IVocListService.cs
@@ -0,0 +1,25 @@
+using adminBlazor.Models;
+using Microsoft.AspNetCore.Hosting;
+using Blazored.LocalStorage;
+using adminBlazor.Factories;
+using Microsoft.AspNetCore.Components;
+
+namespace adminBlazor.Services
+{
+
+ public interface IVocListService
+ {
+
+ Task Add(VocabularyListModel model);
+
+ Task Count();
+
+ Task> List(int currentPage, int pageSize);
+
+ Task GetById(int id);
+
+ Task Update(int id, VocabularyListModel model);
+
+ Task Delete(int id);
+ }
+}
\ No newline at end of file
diff --git a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs
new file mode 100644
index 0000000..229ccb5
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs
@@ -0,0 +1,92 @@
+using adminBlazor.Factories;
+using adminBlazor.Models;
+using Blazored.LocalStorage;
+using Blazorise.Extensions;
+using Microsoft.AspNetCore.Components;
+using Microsoft.AspNetCore.Hosting;
+
+namespace adminBlazor.Services
+{
+ public class VocListLocalService : IVocListService
+ {
+ private readonly HttpClient _http;
+ private readonly ILocalStorageService _localStorage;
+ private readonly NavigationManager _navigationManager;
+ private readonly IWebHostEnvironment _webHostEnvironment;
+
+ public VocListLocalService(
+ ILocalStorageService localStorage,
+ HttpClient http,
+ IWebHostEnvironment webHostEnvironment,
+ NavigationManager navigationManager)
+ {
+ _localStorage = localStorage;
+ _http = http;
+ _webHostEnvironment = webHostEnvironment;
+ _navigationManager = navigationManager;
+ }
+ public VocListLocalService(ILocalStorageService localStorage)
+ {
+ _localStorage = localStorage; // Assure-toi que LocalStorage est initialisé correctement ici
+ }
+
+ public async Task Add(VocabularyListModel model)
+ {
+ var currentList = await _localStorage.GetItemAsync>("voc");
+
+ model.id = currentList.Max(s => s.id) + 1;
+
+ currentList.Add(VocListFactory.Create(model));
+
+ await _localStorage.SetItemAsync("voc", currentList);
+ }
+
+ public async Task Count()
+ {
+ var currentList = await _localStorage.GetItemAsync("voc");
+
+ // Check if data exist in the local storage
+ if (currentList == null)
+ {
+ // this code add in the local storage the fake data
+ var originalList = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}voc.json");
+ await _localStorage.SetItemAsync("voc", originalList);
+ }
+
+ return (await _localStorage.GetItemAsync("voc")).Length;
+ }
+
+ public async Task> List(int currentPage, int pageSize)
+ {
+ var currentList = await _localStorage.GetItemAsync("voc");
+
+ // Check if data exist in the local storage
+ if (currentList == null)
+ {
+ // this code add in the local storage the fake data
+ var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}voc.json");
+ await _localStorage.SetItemAsync("voc", originalData);
+ }
+
+ return (await _localStorage.GetItemAsync("voc")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
+
+ }
+
+ public async Task GetById(int id)
+ {
+ var currentLists = await _localStorage.GetItemAsync>("voc");
+
+ return new VocabularyList();
+ }
+
+ public Task Update(int id, VocabularyListModel model)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task Delete(int id)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Project/adminBlazor/adminBlazor/wwwroot/voc.json b/Project/adminBlazor/adminBlazor/wwwroot/voc.json
new file mode 100644
index 0000000..fb1e289
--- /dev/null
+++ b/Project/adminBlazor/adminBlazor/wwwroot/voc.json
@@ -0,0 +1,14 @@
+[
+ {
+ "id": 1,
+ "name": "Entreprise",
+ "image": "link",
+ "aut": null
+ },
+ {
+ "id": 2,
+ "name": "Animaux",
+ "image": "link",
+ "aut" : 1
+ }
+]
\ No newline at end of file