feat : page addAdmin

pull/38/head
Maxence GUITARD 2 years ago
parent 2a565522e2
commit e2052f136b

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
namespace Blazor.Models
{
public class AdministratorModel
{
public int Id { get; private set; }
[Required(ErrorMessage = "Username is required")]
[StringLength(50, ErrorMessage = "Username is too long.")]
public string Username { get; private set; }
[Required(ErrorMessage = "Password is required")]
public string hashedPassword { get; set; }
}
}

@ -0,0 +1,23 @@
@page "/addAdministrators"
@using Blazor.Models
<h3>AddAdministrators</h3>
<EditForm Model="@administratorModel" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<p>
<label for="username">
Username:
<InputText id="username" @bind-Value="administratorModel.Username" />
</label>
<label>
Password:
<InputText id="hashedpassword" @bind-Value="administratorModel.hashedPassword" />
</label>
</p>
<button type="submit">Submit</button>
</EditForm>

@ -0,0 +1,27 @@
using Blazored.LocalStorage;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Components;
using Blazor.Models;
using Blazor.Services;
namespace Blazor.Pages
{
public partial class AddAdministrators
{
private AdministratorModel administratorModel = new();
[Inject]
public IDataService DataService { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async void HandleValidSubmit()
{
await DataService.Add(administratorModel);
NavigationManager.NavigateTo("administrators");
}
}
}

@ -114,5 +114,64 @@ namespace Blazor.Services
return (await _localStorage.GetItemAsync<Chapter[]>("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList(); return (await _localStorage.GetItemAsync<Chapter[]>("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
} }
public async Task<Administrator> GetAdminById(int id)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Administrator>>("data");
// Get the chapter int the list
var admin = currentData.FirstOrDefault(w => w.Id == id);
// Check if chapter exist
if (admin == null)
{
throw new Exception($"Unable to found the item with ID: {id}");
}
return admin;
}
public async Task Update(int id, AdministratorModel model)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Administrator>>("data");
// Get the chapter int the list
var admin = currentData.FirstOrDefault(w => w.Id == id);
// Check if chapter exist
if (admin == null)
{
throw new Exception($"Unable to found the item with ID: {id}");
}
// Modify the content of the chapter
admin.Username = model.Username;
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
public async Task Add(AdministratorModel model)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Chapter>>("data");
// Simulate the Id
model.Id = currentData.Max(s => s.Id) + 1;
// Add the chapter to the current data
currentData.Add(new Chapter
{
Id = model.Id,
Name = model.Name
});
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
} }
} }

@ -13,5 +13,14 @@ namespace Blazor.Services
Task<Chapter> GetById(int id); Task<Chapter> GetById(int id);
Task Update(int id, ChapterModel model); Task Update(int id, ChapterModel model);
Task Add(AdministratorModel model);
Task Update(int id, AdministratorModel model);
Task<Administrator> GetAdminById(int id);
Task<int> CountAdmin();
Task<List<Administrator>> ListAdmin(int currentPage, int pageSize);
} }
} }

@ -24,6 +24,11 @@
<span class="oi oi-plus" aria-hidden="true"></span> Chapters <span class="oi oi-plus" aria-hidden="true"></span> Chapters
</NavLink> </NavLink>
</div> </div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="chapters">
<span class="oi oi-plus" aria-hidden="true"></span> Questions
</NavLink>
</div>
<div class="nav-item px-3"> <div class="nav-item px-3">
<NavLink class="nav-link" href="fetchdata"> <NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data <span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data

Loading…
Cancel
Save