Lucie GOIGOUX 1 year ago
commit 36d3cc89e5

@ -26,9 +26,9 @@ namespace adminBlazor.Factories
}; };
} }
public static UserModel Create(UserModel user) public static User Create(UserModel user)
{ {
return new UserModel return new User
{ {
Id = user.Id, Id = user.Id,
Name = user.Name, Name = user.Name,
@ -55,13 +55,12 @@ namespace adminBlazor.Factories
if (!string.IsNullOrEmpty(user.Nickname)) if (!string.IsNullOrEmpty(user.Nickname))
item.Nickname = user.Nickname; item.Nickname = user.Nickname;
if (user.ExtraTime!=null)
item.ExtraTime = user.ExtraTime; item.ExtraTime = user.ExtraTime;
if (!string.IsNullOrEmpty(user.Image)) if (!string.IsNullOrEmpty(user.Image))
item.Image = user.Image; item.Image = user.Image;
if (user.Group!=null) if (user.Group != 0)
item.Group = user.Group; item.Group = user.Group;
if (!string.IsNullOrEmpty(user.Password)) if (!string.IsNullOrEmpty(user.Password))
@ -71,8 +70,33 @@ namespace adminBlazor.Factories
item.Email = user.Email; item.Email = user.Email;
if (user.Roles != null) if (user.Roles != null)
item.Roles = user.Roles; {
if (user.Roles.Contains("student"))
{
item.Roles = new List<string>();
item.Roles.Add("Student");
}
else
{
if (user.Roles.Contains("teacher") || user.Roles.Contains("admin"))
{
item.Roles = new List<string>();
if (user.Roles.Contains("teacher"))
{
item.Roles.Add("Teacher");
}
if (user.Roles.Contains("admin"))
{
item.Roles.Add("Admin");
}
}
}
} }
} }
} }
}

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using adminBlazor.Models; using adminBlazor.Models;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using adminBlazor.Services;
namespace adminBlazor.Pages namespace adminBlazor.Pages
{ {
@ -12,6 +13,8 @@ namespace adminBlazor.Pages
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
[Inject] [Inject]
public ILocalStorageService LocalStorage { get; set; } public ILocalStorageService LocalStorage { get; set; }
[Inject]
public IDataService DataService { get; set; }
[Inject] [Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; } public IWebHostEnvironment WebHostEnvironment { get; set; }
@ -33,44 +36,8 @@ namespace adminBlazor.Pages
private async void HandleValidSubmit() private async void HandleValidSubmit()
{ {
// Get the current data await DataService.Add(user);
var currentData = await LocalStorage.GetItemAsync<List<UserModel>>("data");
// Simulate the Id
user.Id = currentData.Max(s => s.Id) + 1;
// Add the item to the current data
currentData.Add(new UserModel
{
Id = user.Id,
Name = user.Name,
Surname = user.Surname,
Nickname = user.Nickname,
ExtraTime = user.ExtraTime,
Image = user.Image,
Group = user.Group,
Password = user.Password,
Email = user.Email,
Roles = user.Roles
});
// Save the image
var imagePathInfo = new DirectoryInfo($"{WebHostEnvironment.WebRootPath}/images");
// Check if the folder "images" exist
if (!imagePathInfo.Exists)
{
imagePathInfo.Create();
}
// Determine the image name
var fileName = new FileInfo($"{imagePathInfo}/{user.Image}.png");
// Write the file content
//await File.WriteAllBytesAsync(fileName.FullName, users.Image);
// Save the data
await LocalStorage.SetItemAsync("data", currentData);
NavigationManager.NavigateTo("list"); NavigationManager.NavigateTo("list");
} }

@ -47,16 +47,9 @@
@foreach (var role in roles) @foreach (var role in roles)
{ {
var currentItem = role; // Capturer la variable locale pour éviter les problèmes de fermeture var currentItem = role; // Capturer la variable locale pour éviter les problèmes de fermeture
@if (currentItem == "student")
{
<label> <label>
<input type="checkbox" @onchange="@(e => RolesCategoriesChange(role, e.Value))" checked="@(user.Roles.Contains(currentItem) ? "checked" : null)" /> <input type="checkbox" @onchange="@(e => RolesCategoriesChange(role, e.Value))" checked="@(user.Roles.Contains(currentItem) ? "checked" : null)" />
Student
</label>
break;
}
<label>
<input type="checkbox" @onchange="@(e => RolesCategoriesChange(role, e.Value))" disabled="@disableOtherCheckboxes" checked="@(user.Roles.Contains(currentItem) ? "checked" : null)" />
@currentItem @currentItem
</label> </label>
<br /> <br />

@ -23,6 +23,8 @@ namespace adminBlazor.Pages
[Inject] [Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; } public IWebHostEnvironment WebHostEnvironment { get; set; }
public User currUser;
/// <summary> /// <summary>
/// The default enchant categories. /// The default enchant categories.
@ -52,6 +54,7 @@ namespace adminBlazor.Pages
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
var item = await DataService.GetById(Id); var item = await DataService.GetById(Id);
// currentUser = item;
// var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); // var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png");
if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{user.Name}.png")) if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{user.Name}.png"))
@ -106,7 +109,7 @@ namespace adminBlazor.Pages
{ {
// Désactiver les autres cases à cocher si "Étudiant" est décochée // Désactiver les autres cases à cocher si "Étudiant" est décochée
disableOtherCheckboxes = false; disableOtherCheckboxes = false;
user.Roles.Remove(currentItem); //user.Roles.Remove(currentItem);
} }
} }
} }
@ -126,13 +129,12 @@ namespace adminBlazor.Pages
{ {
// Sinon, activer les autres cases // Sinon, activer les autres cases
disableOtherCheckboxes = false; disableOtherCheckboxes = false;
user.Roles.Remove(currentItem); //user.Roles.Remove(currentItem);
} }
} }
private void RolesCategoriesChange(string item, object checkedValue) private void RolesCategoriesChange(string item, object checkedValue)
{ {
if (item == "student")
{
isStudentChecked = (bool)checkedValue; isStudentChecked = (bool)checkedValue;
if (isStudentChecked) if (isStudentChecked)
@ -148,29 +150,9 @@ namespace adminBlazor.Pages
{ {
// Désactiver les autres cases à cocher si "Étudiant" est décochée // Désactiver les autres cases à cocher si "Étudiant" est décochée
disableOtherCheckboxes = false; disableOtherCheckboxes = false;
user.Roles.Remove(item); //user.Roles.Remove(item);
}
}
else
{
if (disableOtherCheckboxes)
{
//la case student a été coché ducoup on n'ajoute pas les autres rôles cochés
return;
if ((bool)checkedValue)
{
if (!user.Roles.Contains(item))
{
user.Roles.Add(item);
}
}
else
{
user.Roles.Remove(item);
}
}
}
} }
} }
} }
}

@ -30,9 +30,35 @@ namespace adminBlazor.Services
_localStorage = localStorage; // Assure-toi que LocalStorage est initialisé correctement ici _localStorage = localStorage; // Assure-toi que LocalStorage est initialisé correctement ici
} }
public Task Add(User model) public async Task Add(UserModel model)
{ {
throw new NotImplementedException(); var currentData = await _localStorage.GetItemAsync<List<User>>("data");
// Simulate the Id
model.Id = currentData.Max(s => s.Id) + 1;
// Add the item to the current data
currentData.Add(UserFactory.Create(model));
// Save the image
var imagePathInfo = new DirectoryInfo($"{_webHostEnvironment.WebRootPath}/images");
// Check if the folder "images" exist
if (!imagePathInfo.Exists)
{
imagePathInfo.Create();
}
// Determine the image name
var fileName = new FileInfo($"{imagePathInfo}/{model.Name}.png");
// Write the file content
//await File.WriteAllBytesAsync(fileName.FullName, model.ImageContent);
// Save the data
await _localStorage.SetItemAsync("data", currentData);
} }
public Task<int> Count() public Task<int> Count()
@ -64,7 +90,7 @@ namespace adminBlazor.Services
public async Task Update(int id, UserModel model) public async Task Update(int id, UserModel model)
{ {
// Get the current data // Get the current data
var currentData = await _localStorage.GetItemAsync<List<User>>("data"); var currentData = await _localStorage.GetItemAsync<User[]>("data");
var user = currentData.FirstOrDefault(w => w.Id == id); var user = currentData.FirstOrDefault(w => w.Id == id);

@ -7,7 +7,7 @@ namespace adminBlazor.Services
public interface IDataService public interface IDataService
{ {
Task Add(User model); Task Add(UserModel model);
Task<int> Count(); Task<int> Count();

Loading…
Cancel
Save