(response); // an actual data for the current page
- }
- }
- }
-}
diff --git a/Blazor/Blazor/Pages/Admins.razor b/Blazor/Blazor/Pages/Admins.razor
deleted file mode 100644
index 74ddbb0..0000000
--- a/Blazor/Blazor/Pages/Admins.razor
+++ /dev/null
@@ -1,47 +0,0 @@
-@page "/admins"
-@using Blazor.Data
-@inject WeatherForecastService ForecastService
-
-Weather forecast
-
-Weather forecast
-
-This component demonstrates fetching data from a service.
-
-@if (forecasts == null)
-{
- Loading...
-}
-else
-{
-
-
-
- Date |
- Temp. (C) |
- Temp. (F) |
- Summary |
-
-
-
- @foreach (var forecast in forecasts)
- {
-
- @forecast.Date.ToShortDateString() |
- @forecast.TemperatureC |
- @forecast.TemperatureF |
- @forecast.Summary |
-
- }
-
-
-}
-
-@code {
- private WeatherForecast[]? forecasts;
-
- protected override async Task OnInitializedAsync()
- {
- forecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now));
- }
-}
diff --git a/Blazor/Blazor/Pages/Admins.razor.cs b/Blazor/Blazor/Pages/Admins.razor.cs
deleted file mode 100644
index af73c75..0000000
--- a/Blazor/Blazor/Pages/Admins.razor.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using Blazor.Models;
-using Blazored.LocalStorage;
-using Blazorise.DataGrid;
-using Microsoft.AspNetCore.Components;
-
-namespace Blazor.Pages;
-public partial class Admins
-{
- private List items;
-
- private int totalItem;
-
- [Inject]
- public IWebHostEnvironment WebHostEnvironment { get; set; }
-
- [Inject]
- public HttpClient Http { get; set; }
-
- [Inject]
- public ILocalStorageService LocalStorage { get; set; }
-
- [Inject]
- public NavigationManager NavigationManager { get; set; }
-
- protected override async Task OnAfterRenderAsync(bool firstRender)
- {
- // Do not treat this action if is not the first render
- if (!firstRender)
- {
- return;
- }
-
- var currentData = await LocalStorage.GetItemAsync("data");
-
- // 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($"trusting-panini.87-106-126-109.plesk.page/api/chapters").Result;
- await LocalStorage.SetItemAsync("data", 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)
- {
- totalItem = (await LocalStorage.GetItemAsync>("data")).Count;
- items = new List(response); // an actual data for the current page
- }
- }
-}
\ No newline at end of file
diff --git a/Blazor/Blazor/Pages/Administrators.razor b/Blazor/Blazor/Pages/Admins/Administrators.razor
similarity index 100%
rename from Blazor/Blazor/Pages/Administrators.razor
rename to Blazor/Blazor/Pages/Admins/Administrators.razor
diff --git a/Blazor/Blazor/Pages/Admins/Administrators.razor.cs b/Blazor/Blazor/Pages/Admins/Administrators.razor.cs
new file mode 100644
index 0000000..f76c86a
--- /dev/null
+++ b/Blazor/Blazor/Pages/Admins/Administrators.razor.cs
@@ -0,0 +1,36 @@
+using Microsoft.AspNetCore.Components;
+using Blazorise.DataGrid;
+using Blazor.ViewClasses;
+
+namespace Blazor.Pages.Admins;
+
+public partial class Administrators
+{
+ public List administrators;
+
+ private int totalItem;
+
+ [Inject]
+ public HttpClient Http { get; set; }
+
+ [Inject]
+ public NavigationManager NavigationManager { get; set; }
+
+ 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 Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake-administrator.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
+
+ if (!e.CancellationToken.IsCancellationRequested)
+ {
+ totalItem = (await Http.GetFromJsonAsync
>($"{NavigationManager.BaseUri}fake-administrator.json")).Count;
+ administrators = new List(response); // an actual data for the current page
+ }
+ }
+}
diff --git a/Blazor/Blazor/Pages/AddChapter.razor b/Blazor/Blazor/Pages/Chapters/AddChapter.razor
similarity index 100%
rename from Blazor/Blazor/Pages/AddChapter.razor
rename to Blazor/Blazor/Pages/Chapters/AddChapter.razor
diff --git a/Blazor/Blazor/Pages/Chapters/AddChapter.razor.cs b/Blazor/Blazor/Pages/Chapters/AddChapter.razor.cs
new file mode 100644
index 0000000..67e2c17
--- /dev/null
+++ b/Blazor/Blazor/Pages/Chapters/AddChapter.razor.cs
@@ -0,0 +1,27 @@
+using Blazored.LocalStorage;
+using Microsoft.AspNetCore.Components.Forms;
+using Microsoft.AspNetCore.Components;
+using Blazor.Models;
+using Blazor.Services;
+
+namespace Blazor.Pages.Chapters;
+
+public partial class AddChapter
+{
+ private ChapterModel chapterModel = new();
+
+ [Inject]
+ public IDataService DataService { get; set; }
+
+ [Inject]
+ public NavigationManager NavigationManager { get; set; }
+
+
+ private async void HandleValidSubmit()
+ {
+ await DataService.Add(chapterModel);
+
+ NavigationManager.NavigateTo("chapters");
+ }
+
+}
diff --git a/Blazor/Blazor/Pages/Chapters.razor b/Blazor/Blazor/Pages/Chapters/Chapters.razor
similarity index 80%
rename from Blazor/Blazor/Pages/Chapters.razor
rename to Blazor/Blazor/Pages/Chapters/Chapters.razor
index f705ba1..fd6c3cb 100644
--- a/Blazor/Blazor/Pages/Chapters.razor
+++ b/Blazor/Blazor/Pages/Chapters/Chapters.razor
@@ -10,6 +10,10 @@
Exporter
+
+ Importer
+
+
chapters;
+{
+ public List chapters;
private int totalChapter;
- [Inject]
- public IDataService DataService { get; set; }
+ [Inject]
+ public IDataService DataService { get; set; }
public IWebHostEnvironment WebHostEnvironment { get; set; }
- [Inject]
+ [Inject]
public HttpClient Http { get; set; }
[Inject]
@@ -51,18 +53,18 @@ public partial class Chapters
}
private async Task OnReadData(DataGridReadDataEventArgs e)
+ {
+ if (e.CancellationToken.IsCancellationRequested)
{
- if (e.CancellationToken.IsCancellationRequested)
- {
- return;
- }
+ return;
+ }
// When you use a real API, we use this follow code
//var response = await Http.GetFromJsonAsync( $"https://trusting-panini.87-106-126-109.plesk.page/api/chapters?page={e.Page}&pageSize={e.PageSize}" );
var response = Http.GetFromJsonAsync($"https://trusting-panini.87-106-126-109.plesk.page/api/chapters").Result;
- if (!e.CancellationToken.IsCancellationRequested)
- {
+ if (!e.CancellationToken.IsCancellationRequested)
+ {
totalChapter = (await LocalStorage.GetItemAsync>("data")).Count;
chapters = new List(response); // an actual data for the current page
}
@@ -79,7 +81,7 @@ public partial class Chapters
{
csvFile.Write(jsonFile);
}
- }
+ }
var sentFile = new MemoryStream(Encoding.UTF32.GetBytes(sb.ToString()));
@@ -88,4 +90,71 @@ public partial class Chapters
await IJSRuntime.InvokeVoidAsync("downloadFileFromStream", "data.csv", streamRef);
}
}
+ private async void Import()
+ {
+
+ // for
+ // {
+ // var formData = new MultipartFormDataContent();
+ // }
+ }
+ private async Task SingleUpload(InputFileChangeEventArgs e)
+ {
+ using (MemoryStream ms = new MemoryStream())
+ {
+ await e.File.OpenReadStream().CopyToAsync(ms);
+ var bytes = ms.ToArray();
+ string s = Encoding.UTF8.GetString(bytes);
+
+ char[] invalidChars = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '\r', '\n', ',', ' ' };
+
+ List filteredStrings = new List();
+ StringBuilder filteredString = new StringBuilder();
+
+ foreach (var c in s)
+ {
+ if (!invalidChars.Contains(c))
+ {
+ filteredString.Append(c);
+ }
+ else
+ {
+ if (filteredString.Length > 0)
+ {
+ filteredStrings.Add(filteredString.ToString());
+ filteredString.Clear();
+ }
+ }
+ }
+
+ if (filteredString.Length > 0)
+ {
+ filteredStrings.Add(filteredString.ToString());
+ }
+ foreach (var filteredStr in filteredStrings)
+ {
+ var formData = new List>();
+ formData.Add(new KeyValuePair("name", filteredStr));
+
+
+ var formContent = new FormUrlEncodedContent(formData);
+
+ string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/add/chapters";
+
+ 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/Chapters.razor.js b/Blazor/Blazor/Pages/Chapters/Chapters.razor.js
similarity index 100%
rename from Blazor/Blazor/Pages/Chapters.razor.js
rename to Blazor/Blazor/Pages/Chapters/Chapters.razor.js
diff --git a/Blazor/Blazor/Pages/EditChapter.razor b/Blazor/Blazor/Pages/Chapters/EditChapter.razor
similarity index 100%
rename from Blazor/Blazor/Pages/EditChapter.razor
rename to Blazor/Blazor/Pages/Chapters/EditChapter.razor
diff --git a/Blazor/Blazor/Pages/Chapters/EditChapter.razor.cs b/Blazor/Blazor/Pages/Chapters/EditChapter.razor.cs
new file mode 100644
index 0000000..6fb7e9c
--- /dev/null
+++ b/Blazor/Blazor/Pages/Chapters/EditChapter.razor.cs
@@ -0,0 +1,41 @@
+using Blazor.Models;
+using Blazor.Services;
+using Microsoft.AspNetCore.Components;
+
+namespace Blazor.Pages.Chapters;
+
+public partial class EditChapter
+{
+ [Parameter]
+ public int Id { get; set; }
+
+ private ChapterModel chapterModel = new();
+
+ [Inject]
+ public IDataService DataService { get; set; }
+
+ [Inject]
+ public NavigationManager NavigationManager { get; set; }
+
+ [Inject]
+ public IWebHostEnvironment WebHostEnvironment { get; set; }
+
+ protected override async Task OnInitializedAsync()
+ {
+ var chapter = await DataService.GetById(Id);
+
+ // Set the model with the chapter
+ chapterModel = new ChapterModel
+ {
+ Id = chapter.Id,
+ Name = chapter.Name
+ };
+ }
+
+ private async void HandleValidSubmit()
+ {
+ await DataService.Update(Id, chapterModel);
+
+ NavigationManager.NavigateTo("chapters");
+ }
+}
diff --git a/Blazor/Blazor/Pages/Counter.razor b/Blazor/Blazor/Pages/Counter.razor
deleted file mode 100644
index ef23cb3..0000000
--- a/Blazor/Blazor/Pages/Counter.razor
+++ /dev/null
@@ -1,18 +0,0 @@
-@page "/counter"
-
-Counter
-
-Counter
-
-Current count: @currentCount
-
-
-
-@code {
- private int currentCount = 0;
-
- private void IncrementCount()
- {
- currentCount++;
- }
-}
diff --git a/Blazor/Blazor/Pages/EditChapter.razor.cs b/Blazor/Blazor/Pages/EditChapter.razor.cs
deleted file mode 100644
index 52af970..0000000
--- a/Blazor/Blazor/Pages/EditChapter.razor.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using Blazor.Models;
-using Blazor.Services;
-using Microsoft.AspNetCore.Components;
-
-namespace Blazor.Pages
-{
- public partial class EditChapter
- {
- [Parameter]
- public int Id { get; set; }
-
- private ChapterModel chapterModel = new();
-
- [Inject]
- public IDataService DataService { get; set; }
-
- [Inject]
- public NavigationManager NavigationManager { get; set; }
-
- [Inject]
- public IWebHostEnvironment WebHostEnvironment { get; set; }
-
- protected override async Task OnInitializedAsync()
- {
- var chapter = await DataService.GetById(Id);
-
- // Set the model with the chapter
- chapterModel = new ChapterModel
- {
- Id = chapter.Id,
- Name = chapter.Name
- };
- }
-
- private async void HandleValidSubmit()
- {
- await DataService.Update(Id, chapterModel);
-
- NavigationManager.NavigateTo("chapters");
- }
- }
-}
diff --git a/Blazor/Blazor/Pages/Questions.razor.cs b/Blazor/Blazor/Pages/Questions.razor.cs
deleted file mode 100644
index 2a62003..0000000
--- a/Blazor/Blazor/Pages/Questions.razor.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Blazor.Pages;
-
-public partial class Questions
-{
-}
-
diff --git a/Blazor/Blazor/Pages/Questions.razor b/Blazor/Blazor/Pages/Questions/Questions.razor
similarity index 100%
rename from Blazor/Blazor/Pages/Questions.razor
rename to Blazor/Blazor/Pages/Questions/Questions.razor
diff --git a/Blazor/Blazor/Pages/Questions/Questions.razor.cs b/Blazor/Blazor/Pages/Questions/Questions.razor.cs
new file mode 100644
index 0000000..86bf53b
--- /dev/null
+++ b/Blazor/Blazor/Pages/Questions/Questions.razor.cs
@@ -0,0 +1,6 @@
+namespace Blazor.Pages.Questions;
+
+public partial class Questions
+{
+}
+