debut sur l'ajout

blazor
Patrick BRUGIERE 1 year ago
parent 78d26380eb
commit 8cc5ca1794

@ -1,17 +1,33 @@
namespace adminBlazor.Models
using System.ComponentModel.DataAnnotations;
namespace adminBlazor.Models
{
public class User
{
public int id { get; set; }
public string password { get; set; }
public string email { get; set; }
public string name { get; set; }
public string surname { get; set; }
public string nickname { get; set; }
public string image { get; set; }
public bool extraTime { get; set; }
public int group { get; set; }
public string[] roles { get; set; }
[Required]
public int Id { get; set; }
[StringLength(50, ErrorMessage = "Name length can't be more than 50.")]
public string Password { get; set; }
[EmailAddress]
public string Email { get; set; }
[StringLength(50, ErrorMessage = "Name length can't be more than 50.")]
public string Name { get; set; }
[StringLength(50, ErrorMessage = "Name length can't be more than 50.")]
public string Surname { get; set; }
[StringLength(50, ErrorMessage = "Name length can't be more than 50.")]
public string Nickname { get; set; }
[StringLength(50, ErrorMessage = "Name length can't be more than 50.")]
public string Image { get; set; }
public bool ExtraTime { get; set; }
public int Group { get; set; }
public string[] Roles { get; set; }
}
}

@ -0,0 +1,52 @@
@page "/add"
<h3>Add</h3>
<EditForm Model="@user" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<p>
<label for="name">
Name:
<InputText id="name" @bind-Value="user.Name" />
</label>
</p>
<p>
<label for="stack-size">
Password:
<InputText id="stack-size" @bind-Value="user.Password" />
</label>
</p>
<p>
<label for="max-durability">
Email:
<InputText id="max-durability" @bind-Value="user.Email" />
</label>
</p>
<p>
Roles categories:
<div>
@foreach (var item in roles)
{
<label>
<input type="checkbox" @onchange="@(e => OnEnchantCategoriesChange(item, e.Value))" />@item
</label>
}
</div>
</p>
<p>
<label>
Item image:
<InputFile OnChange="@LoadImage" accept=".png" />
</label>
</p>
<p>
<label>
Accept Condition:
<InputCheckbox @bind-Value="user.AcceptCondition" />
</label>
</p>
<button type="submit">Submit</button>
</EditForm>

@ -0,0 +1,98 @@
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Components;
using adminBlazor.Models;
namespace adminBlazor.Pages
{
public partial class Add
{
[Inject]
public ILocalStorageService LocalStorage { get; set; }
[Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; }
/// <summary>
/// The default enchant categories.
/// </summary>
private List<string> roles = new List<string>() { "admin","teacher","student" };
/// <summary>
/// The current item model
/// </summary>
private User user = new User()
{
Roles = new string[] { "admin", "teacher", "student" }
};
private async void HandleValidSubmit()
{
// Get the current data
var currentData = await LocalStorage.GetItemAsync<List<User>>("data");
// Simulate the Id
user.Id = currentData.Max(s => s.Id) + 1;
// Add the item to the current data
currentData.Add(new User
{
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.Name}.png");
// Write the file content
//await File.WriteAllBytesAsync(fileName.FullName, users.Image);
// Save the data
await LocalStorage.SetItemAsync("data", currentData);
}
/*
private async Task LoadImage(InputFileChangeEventArgs e)
{
// Set the content of the image to the model
using (var memoryStream = new MemoryStream())
{
await e.File.OpenReadStream().CopyToAsync(memoryStream);
user.Image = memoryStream.ToArray();
}
}
*/
/*
private void OnEnchantCategoriesChange(string item, object checkedValue)
{
if ((bool)checkedValue)
{
if (!user.Roles.Contains(item))
{
user.Roles.Add(item);
}
return;
}
}
*/
}
}

@ -22,18 +22,18 @@
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="User" Field="@nameof(User.id)" Caption="id" />
<!-- <DataGridColumn TItem="User" Field="@nameof(User.password)" Caption="Password" /> -->
<DataGridColumn TItem="User" Field="@nameof(User.name)" Caption="Name" />
<DataGridColumn TItem="User" Field="@nameof(User.email)" Caption="Email" />
<DataGridColumn TItem="User" Field="@nameof(User.surname)" Caption="Surname" />
<DataGridColumn TItem="User" Field="@nameof(User.nickname)" Caption="Nickname" />
<!-- <DataGridColumn TItem="User" Field="@nameof(User.image)" Caption="Image" /> -->
<DataGridColumn TItem="User" Field="@nameof(User.extraTime)" Caption="Extra Time" />
<DataGridColumn TItem="User" Field="@nameof(User.group)" Caption="Group" />
<DataGridColumn TItem="User" Field="@nameof(User.roles)" Caption="Rôles">
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="id" />
<!-- <DataGridColumn TItem="User" Field="@nameof(User.Password)" Caption="Password" /> -->
<DataGridColumn TItem="User" Field="@nameof(User.Name)" Caption="Name" />
<DataGridColumn TItem="User" Field="@nameof(User.Email)" Caption="Email" />
<DataGridColumn TItem="User" Field="@nameof(User.Surname)" Caption="Surname" />
<DataGridColumn TItem="User" Field="@nameof(User.Nickname)" Caption="Nickname" />
<!-- <DataGridColumn TItem="User" Field="@nameof(User.Image)" Caption="Image" /> -->
<DataGridColumn TItem="User" Field="@nameof(User.ExtraTime)" Caption="Extra Time" />
<DataGridColumn TItem="User" Field="@nameof(User.Group)" Caption="Group" />
<DataGridColumn TItem="User" Field="@nameof(User.Roles)" Caption="Rôles">
<DisplayTemplate>
@(string.Join(", ", ((User)context).roles))
@(string.Join(", ", ((User)context).Roles))
</DisplayTemplate>
</DataGridColumn>

Loading…
Cancel
Save