Feat : Import/export Question (API may not be implemented now)

pull/41/head
Jade VAN BRABANDT 2 years ago
parent e9fbf7c15a
commit 23da554720

@ -1,4 +1,4 @@
@page "/addAdministrator"
@page "/addQuestion"
@using Blazor.Models
<h3>AddQuestion</h3>

@ -1,4 +1,6 @@
<h3>EditQuestion</h3>
@page "/editQuestion"
<h3>EditQuestion</h3>
@code {

@ -8,6 +8,10 @@
<NavLink class="btn btn-primary" href="addQuestion" Match="NavLinkMatch.All">
<i class="fa fa-plus"></i> Ajouter
</NavLink>
<NavLink class="btn btn-primary" @onclick="Export">
<i class="fa fa-plus"></i> Exporter
</NavLink>
<InputFile OnChange="@SingleUpload" />
</div>
<DataGrid TItem="Question"

@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Components.Forms;
using Blazor.Modals;
using Blazored.Modal;
using Blazor.Pages.Admins;
using System.Text.RegularExpressions;
namespace Blazor.Pages.Questions;
@ -98,7 +99,7 @@ public partial class Questions
private async void Export()
{
StringBuilder sb = new StringBuilder();
HttpResponseMessage response = await Http.GetAsync("https://trusting-panini.87-106-126-109.plesk.page/api/chapters");
HttpResponseMessage response = await Http.GetAsync("https://trusting-panini.87-106-126-109.plesk.page/api/questionsExport");
var json = await response.Content.ReadAsStringAsync();
using (var jsonFile = ChoJSONReader.LoadText(json))
{
@ -115,6 +116,7 @@ public partial class Questions
await IJSRuntime.InvokeVoidAsync("downloadFileFromStream", "data.csv", streamRef);
}
}
private async Task SingleUpload(InputFileChangeEventArgs e)
{
using (MemoryStream ms = new MemoryStream())
@ -123,53 +125,51 @@ public partial class Questions
var bytes = ms.ToArray();
string s = Encoding.UTF8.GetString(bytes);
char[] invalidChars = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '\r', '\n', ',', ' ' };
List<string> filteredStrings = new List<string>();
StringBuilder filteredString = new StringBuilder();
s = s.Replace("\r\n", "\n");
var rows = s.Split('\n');
rows = rows.Skip(1).ToArray();
foreach (var c in s)
foreach (var row in rows)
{
if (!invalidChars.Contains(c))
var field = row.Split(';');
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("content", field[0]));
formData.Add(new KeyValuePair<string, string>("answerContent1", field[2]));
formData.Add(new KeyValuePair<string, string>("answerContent2", field[3]));
formData.Add(new KeyValuePair<string, string>("answerContent3", field[4]));
formData.Add(new KeyValuePair<string, string>("answerContent4", field[5]));
formData.Add(new KeyValuePair<string, string>("idanswergood", field[6]));
string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/chapters/name/"+field[1];
var response = await Http.GetAsync(apiUri);
if (response.IsSuccessStatusCode)
{
filteredString.Append(c);
var responseBody = await response.Content.ReadAsStringAsync();
Match match = Regex.Match(responseBody, @"\d+");
int result = int.Parse(match.Value);
formData.Add(new KeyValuePair<string, string>("idchapter", result.ToString()));
}
else
{
if (filteredString.Length > 0)
{
filteredStrings.Add(filteredString.ToString());
filteredString.Clear();
}
var errorResponse = await response.Content.ReadAsStringAsync();
formData.Add(new KeyValuePair<string, string>("idchapter", "Unknown_Chapter_Error"));
}
}
if (filteredString.Length > 0)
{
filteredStrings.Add(filteredString.ToString());
}
foreach (var filteredStr in filteredStrings)
{
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("name", filteredStr));
var formContent = new FormUrlEncodedContent(formData);
apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/add/questions";
string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/add/chapters";
response = await Http.PostAsync(apiUri, formContent);
using (var httpClient = new HttpClient())
if (response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
}
else
{
var response = await httpClient.PostAsync(apiUri, formContent);
if (response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
}
else
{
var errorResponse = await response.Content.ReadAsStringAsync();
}
var errorResponse = await response.Content.ReadAsStringAsync();
}
}
}

@ -28,7 +28,7 @@
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="Pages/Chapters/Chapters.razor.js"></script>
<script src="_framework/blazor.server.js"></script>
</body>
</html>

@ -6,6 +6,8 @@
<script src="_content/Blazored.Modal/blazored.modal.js"></script>
<script src="_framework/blazor.server.js"></script>
<script src="Pages/Chapters/Chapters.razor.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">

@ -6,5 +6,4 @@
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
<script src="Pages/Chapters.razor.js"></script>
<SurveyPrompt Title="How is Blazor working for you?" />
Loading…
Cancel
Save