(response); // an actual data for the current page
+ }
+ }
+
+ private async void Export()
+ {
+ StringBuilder sb = new StringBuilder();
+ HttpResponseMessage response = await Http.GetAsync("https://trusting-panini.87-106-126-109.plesk.page/api/chapters");
+ var json = await response.Content.ReadAsStringAsync();
+ using (var jsonFile = ChoJSONReader.LoadText(json))
+ {
+ using (var csvFile = new ChoCSVWriter(sb).WithFirstLineHeader())
+ {
+ csvFile.Write(jsonFile);
+ }
+ }
+
+ var sentFile = new MemoryStream(Encoding.UTF32.GetBytes(sb.ToString()));
+
+ using (var streamRef = new DotNetStreamReference(stream: sentFile))
+ {
+ await IJSRuntime.InvokeVoidAsync("downloadFileFromStream", "data.csv", streamRef);
+ }
+ }
+}
diff --git a/Blazor/Blazor/Pages/Chapters.razor.js b/Blazor/Blazor/Pages/Chapters.razor.js
new file mode 100644
index 0000000..37f904d
--- /dev/null
+++ b/Blazor/Blazor/Pages/Chapters.razor.js
@@ -0,0 +1,11 @@
+window.downloadFileFromStream = async (fileName, contentStreamReference) => {
+ const arrayBuffer = await contentStreamReference.arrayBuffer();
+ const blob = new Blob([arrayBuffer]);
+ const url = URL.createObjectURL(blob);
+ const anchorElement = document.createElement('a');
+ anchorElement.href = url;
+ anchorElement.download = fileName ?? '';
+ anchorElement.click();
+ anchorElement.remove();
+ URL.revokeObjectURL(url);
+}
\ No newline at end of file
diff --git a/Blazor/Blazor/Pages/Index.razor.cs b/Blazor/Blazor/Pages/Index.razor.cs
new file mode 100644
index 0000000..20708a0
--- /dev/null
+++ b/Blazor/Blazor/Pages/Index.razor.cs
@@ -0,0 +1,6 @@
+namespace Blazor.Pages;
+
+public partial class Index
+{
+}
+
diff --git a/Blazor/Blazor/Pages/Questions.razor b/Blazor/Blazor/Pages/Questions.razor
new file mode 100644
index 0000000..a123a0c
--- /dev/null
+++ b/Blazor/Blazor/Pages/Questions.razor
@@ -0,0 +1,47 @@
+@page "/questions"
+@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/Questions.razor.cs b/Blazor/Blazor/Pages/Questions.razor.cs
new file mode 100644
index 0000000..2a62003
--- /dev/null
+++ b/Blazor/Blazor/Pages/Questions.razor.cs
@@ -0,0 +1,6 @@
+namespace Blazor.Pages;
+
+public partial class Questions
+{
+}
+
diff --git a/Blazor/Blazor/Program.cs b/Blazor/Blazor/Program.cs
index 2d9e404..5c73e4b 100644
--- a/Blazor/Blazor/Program.cs
+++ b/Blazor/Blazor/Program.cs
@@ -13,6 +13,13 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton();
+builder.Services.AddHttpClient();
+
+builder.Services
+ .AddBlazorise()
+ .AddBootstrapProviders()
+ .AddFontAwesomeIcons();
+builder.Services.AddBlazoredLocalStorage();
builder.Services.AddHttpClient();
diff --git a/Blazor/Blazor/Services/DataLocalService.cs b/Blazor/Blazor/Services/DataLocalService.cs
index 5fb1137..08146b7 100644
--- a/Blazor/Blazor/Services/DataLocalService.cs
+++ b/Blazor/Blazor/Services/DataLocalService.cs
@@ -1,4 +1,5 @@
using Blazor.Models;
+using Blazor.ViewClasses;
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components;
diff --git a/Blazor/Blazor/Services/IDataService.cs b/Blazor/Blazor/Services/IDataService.cs
index bdc1468..844d98d 100644
--- a/Blazor/Blazor/Services/IDataService.cs
+++ b/Blazor/Blazor/Services/IDataService.cs
@@ -1,4 +1,5 @@
using Blazor.Models;
+using Blazor.ViewClasses;
namespace Blazor.Services
{
diff --git a/Blazor/Blazor/ViewClasses/Administrator.cs b/Blazor/Blazor/ViewClasses/Administrator.cs
new file mode 100644
index 0000000..e0ec189
--- /dev/null
+++ b/Blazor/Blazor/ViewClasses/Administrator.cs
@@ -0,0 +1,15 @@
+namespace Blazor.ViewClasses;
+
+public class Administrator
+{
+ public int Id { get; private set; }
+ public string Username { get; private set; }
+ public string hashedPassword { get; set; }
+
+ public Administrator(int id, string username, string hashedPassword)
+ {
+ Id = id;
+ Username = username;
+ this.hashedPassword = hashedPassword;
+ }
+}
diff --git a/Blazor/Blazor/ViewClasses/Answer.cs b/Blazor/Blazor/ViewClasses/Answer.cs
new file mode 100644
index 0000000..d14ebff
--- /dev/null
+++ b/Blazor/Blazor/ViewClasses/Answer.cs
@@ -0,0 +1,15 @@
+namespace Blazor.ViewClasses;
+
+public class Answer
+{
+ public int Id { get; private set; }
+ public string Content { get; set; }
+ public int IdQuestion { get; private set; }
+
+ public Answer(int id, string content, int idQuestion)
+ {
+ Id = id;
+ Content = content;
+ IdQuestion = idQuestion;
+ }
+}
diff --git a/Blazor/Blazor/ViewClasses/Chapter.cs b/Blazor/Blazor/ViewClasses/Chapter.cs
new file mode 100644
index 0000000..942eb72
--- /dev/null
+++ b/Blazor/Blazor/ViewClasses/Chapter.cs
@@ -0,0 +1,7 @@
+namespace Blazor.ViewClasses;
+
+public class Chapter
+{
+ public int Id { get; set; }
+ public string Name { get; set; }
+}
diff --git a/Blazor/Blazor/ViewClasses/Player.cs b/Blazor/Blazor/ViewClasses/Player.cs
new file mode 100644
index 0000000..7fd1f4e
--- /dev/null
+++ b/Blazor/Blazor/ViewClasses/Player.cs
@@ -0,0 +1,16 @@
+namespace Blazor.ViewClasses;
+
+public class Player
+{
+ public int Id { get; private set; }
+ public string Nickname { get; private set; }
+ public string HashedPassword { get; set; }
+
+ public Player(int id, string nickname, string hashedPassword)
+ {
+ Id = id;
+ Nickname = nickname;
+ HashedPassword = hashedPassword;
+ }
+
+}
diff --git a/Blazor/Blazor/ViewClasses/Question.cs b/Blazor/Blazor/ViewClasses/Question.cs
new file mode 100644
index 0000000..db4e7bf
--- /dev/null
+++ b/Blazor/Blazor/ViewClasses/Question.cs
@@ -0,0 +1,21 @@
+namespace Blazor.ViewClasses;
+
+public class Question
+{
+ public int Id { get; private set; }
+ public string Content { get; set; }
+ public int IdChapter { get; set; }
+ public int IdAnswerGood { get; set; }
+ public int Difficulty { get; set; }
+ public int nbFails { get; set; }
+
+ public Question(int id, string content, int idChapter, int idAnswerGood, int difficulty, int nbFails = 0)
+ {
+ Id = id;
+ Content = content;
+ IdChapter = idChapter;
+ IdAnswerGood = idAnswerGood;
+ Difficulty = difficulty;
+ this.nbFails = nbFails;
+ }
+}
diff --git a/Blazor/Blazor/_Imports.razor b/Blazor/Blazor/_Imports.razor
index 9665bbe..0bfa3cd 100644
--- a/Blazor/Blazor/_Imports.razor
+++ b/Blazor/Blazor/_Imports.razor
@@ -9,4 +9,3 @@
@using Blazor
@using Blazor.Shared
@using Blazorise.DataGrid
-