travail sur la page de modification, c'est bon il y a juste un leger bug

blazor
Patrick BRUGIERE 1 year ago
parent 6954e4a4c1
commit fc94001fb0

@ -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");
}
}
}
}
}
}
} }
}

@ -11,7 +11,7 @@
<p> <p>
<label for="name"> <label for="name">
Name: Name:
<InputText id="name" @bind-Value="user.Name" /> <InputText id="name" @bind-Value="user.Name" />
</label> </label>
</p> </p>
<p> <p>
@ -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.
@ -41,9 +43,9 @@ namespace adminBlazor.Pages
private async void HandleValidSubmit() private async void HandleValidSubmit()
{ {
UserModel item = UserFactory.ToModel(user); UserModel item = UserFactory.ToModel(user);
await DataService.Update(Id,item); await DataService.Update(Id, item);
NavigationManager.NavigateTo("list"); NavigationManager.NavigateTo("list");
} }
@ -52,11 +54,12 @@ 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);
// var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); // currentUser = item;
// 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"))
{ {
// fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.Name}.png"); // fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.Name}.png");
} }
// Set the model with the item // Set the model with the item
@ -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,51 +129,30 @@ 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;
if (isStudentChecked) isStudentChecked = (bool)checkedValue;
{
// Activer les autres cases à cocher si "Étudiant" est cochée if (isStudentChecked)
disableOtherCheckboxes = true; {
if (!user.Roles.Contains(item)) // Activer les autres cases à cocher si "Étudiant" est cochée
{ disableOtherCheckboxes = true;
user.Roles.Add(item); if (!user.Roles.Contains(item))
}
}
else
{ {
// Désactiver les autres cases à cocher si "Étudiant" est décochée user.Roles.Add(item);
disableOtherCheckboxes = false;
user.Roles.Remove(item);
} }
} }
else else
{ {
if (disableOtherCheckboxes) // Désactiver les autres cases à cocher si "Étudiant" est décochée
{ disableOtherCheckboxes = false;
//la case student a été coché ducoup on n'ajoute pas les autres rôles cochés //user.Roles.Remove(item);
return;
if ((bool)checkedValue)
{
if (!user.Roles.Contains(item))
{
user.Roles.Add(item);
}
}
else
{
user.Roles.Remove(item);
}
}
} }
} }
}
}
} }

@ -64,7 +64,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);

Loading…
Cancel
Save