Fonctionnement de l'affichage utilisateurs bannis

WORK-KMO-BannedUser
Antoine PINAGOT 1 year ago
parent 3dfaa999a9
commit 622dd1c2b4

@ -1,30 +0,0 @@
@page "/banned-users/add"
@using HeartTrack.Models
<PageTitle>Add Banned Users</PageTitle>
<h1>Add Banned Users</h1>
<!-- Votre formulaire d'ajout d'utilisateur banni peut être ajouté ici -->
<DataGrid TItem="User"
Data="@users"
ReadData="@OnReadData"
TotalItems="@totalUser"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="Id" />
<DataGridColumn TItem="User" Field="@nameof(User.Username)" Caption="@Localizer["Username"]" />
<DataGridColumn TItem="User" Field="@nameof(User.Nom)" Caption="@Localizer["FirstN"]" />
<DataGridColumn TItem="User" Field="@nameof(User.Prenom)" Caption="@Localizer["LastN"]" />
<DataGridColumn TItem="User" Field="@nameof(User.isBan)" Caption="@Localizer["isBan"]" />
<DataGridColumn Caption="" />
</DataGrid>
<div>
<NavLink class="btn btn-primary" href="banned-users/" Match="NavLinkMatch.All">
<i class="fa fa-plus"></i> Ajouter à la liste des utilisateurs bannis
</NavLink>
</div>

@ -1,86 +0,0 @@

using Blazored.LocalStorage;
using Blazorise;
using Blazorise.DataGrid;
using HeartTrack.Models;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using MudBlazor;
using static MudBlazor.Colors;
namespace HeartTrack.Pages
{
public partial class AddBannedUsers
{
private List<User> users;
private int totalUser;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject]
public ILocalStorageService LocalStorage { get; set; }
[Inject]
public IStringLocalizer<BannedUsers> Localizer { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
// Do not treat this action if is not the first render
if (!firstRender)
{
return;
}
var currentData = await LocalStorage.GetItemAsync<User[]>("data");
// Check if data exist in the local storage
if (currentData == null)
{
// this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method)
var originalData = Http.GetFromJsonAsync<User[]>($"{NavigationManager.BaseUri}fake-users.json").Result;
await LocalStorage.SetItemAsync("data", originalData);
// Filtrer pour n'afficher que ceux qui ont IsBan à true
//users = users.Where(u => u.isBan = false).ToList();
}
}
private async Task OnReadData(DataGridReadDataEventArgs<User> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Data[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await LocalStorage.GetItemAsync<User[]>("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalUser = (await LocalStorage.GetItemAsync<List<User>>("data")).Count;
users = new List<User>(); // an actual data for the current page
foreach (var user in response) {
if (user.isBan = false)
{
users.Add(user);
}
}
}
}
private void AddBannedUsersList()
{
// Ajoutez ici la logique pour ajouter les utilisateurs cochés à la liste des utilisateurs bannis
}
}
}

@ -11,7 +11,6 @@ This is banned users list of this website.
<i class="fa fa-plus"></i> Ajouter
</NavLink>
</div>
<SurveyPrompt Title="How is Blazor working for you?" />
<DataGrid TItem="User"
Data="@users"
@ -20,12 +19,32 @@ This is banned users list of this website.
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="Id" />
<DataGridColumn TItem="User" Field="@nameof(User.Username)" Caption="@Localizer["Username"]" />
<DataGridColumn TItem="User" Field="@nameof(User.Nom)" Caption="@Localizer["FirstN"]" />
<DataGridColumn TItem="User" Field="@nameof(User.Prenom)" Caption="@Localizer["LastN"]" />
<DataGridColumn TItem="User" Field="@nameof(User.isBan)" Caption="@Localizer["isBan"]" />
<DataGridColumn Caption="" />
<DataGridColumn TItem="User" Field="@nameof(User.Username)" Caption="Username" />
<DataGridColumn TItem="User" Field="@nameof(User.isBan)" Caption="#">
<DisplayTemplate>
@if(context.isBan)
{
<MudChip Variant="Variant.Outlined" Color="Color.Error">Banni</MudChip>
} else
{
<MudChip Variant="Variant.Outlined" Color="Color.Success">Libre</MudChip>
}
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="Actions" Sortable="false" Width="150px">
<DisplayTemplate>
@if (context.isBan)
{
<MudFab Color="Color.Tertiary" StartIcon="@Icons.Material.Filled.LockOpen" Size="Size.Small" @onclick="()=>UnbanOnID(context.Id)" />
}
else
{
<MudFab Color="Color.Secondary" StartIcon="@Icons.Material.Filled.Lock" Size="Size.Small" @onclick="()=>BanOnID(context.Id)" />
}
</DisplayTemplate>
</DataGridColumn>
</DataGrid>

@ -2,8 +2,12 @@
using Blazorise;
using Blazorise.DataGrid;
using HeartTrack.Models;
using HeartTrack.Services.TicketDataService;
using HeartTrack.Services.UserDataService;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using static MudBlazor.CategoryTypes;
using System.Net.Http;
namespace HeartTrack.Pages
{
@ -13,39 +17,15 @@ namespace HeartTrack.Pages
private int totalUser;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject]
public ILocalStorageService LocalStorage { get; set; }
[Inject]
public IStringLocalizer<BannedUsers> Localizer { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
// Do not treat this action if is not the first render
if (!firstRender)
{
return;
}
var currentData = await LocalStorage.GetItemAsync<User[]>("data");
// Check if data exist in the local storage
if (currentData == null)
{
// this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method)
var originalData = Http.GetFromJsonAsync<User[]>($"{NavigationManager.BaseUri}fake-users.json").Result;
await LocalStorage.SetItemAsync("data", originalData);
}
}
public IUserDataService UserService { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<User> e)
{
@ -55,14 +35,24 @@ namespace HeartTrack.Pages
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Data[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await LocalStorage.GetItemAsync<User[]>("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await Http.GetFromJsonAsync<User[]>($"{NavigationManager.BaseUri}fake-users.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalUser = (await LocalStorage.GetItemAsync<List<User>>("data")).Count;
totalUser = (await Http.GetFromJsonAsync<List<User>>($"{NavigationManager.BaseUri}fake-users.json")).Count;
users = new List<User>(response); // an actual data for the current page
}
}
private void BanOnID(int id)
{
UserService.BanOnId(id);
NavigationManager.NavigateTo("/banned-users", true);
}
private void UnbanOnID(int id)
{
UserService.UnbanOnId(id);
NavigationManager.NavigateTo("/banned-users", true);
}
}
}

@ -10,15 +10,6 @@ using HeartTrack.Services.ActivityDataService;
using HeartTrack.Services.ReportDataService;
using HeartTrack.Services.UserDataService;
using HeartTrack.Services.TicketDataService;
using Blazorise;
using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Localization;
using System.Globalization;
using Microsoft.Extensions.Options;
using Blazored.LocalStorage;
using HeartTrack.Services;
using Microsoft.AspNetCore.Components.Authorization;
using MudBlazor.Services;
using HeartTrack.Services.TicketDataServiceFactice;

@ -16,6 +16,8 @@ namespace HeartTrack.Services.UserDataService
public Task UpdateUser(User u);
public Task<User> getUserById(int id);
public void BanOnId(int id);
public void UnbanOnId(int id);
}
}

@ -82,5 +82,13 @@ namespace HeartTrack.Services.UserDataService
Console.WriteLine("API - Problème mise à jour User");
}
}
public async void BanOnId(int id)
{
}
public async void UnbanOnId(int id)
{
}
}
}

@ -135,5 +135,34 @@ namespace HeartTrack.Services.UserDataServiceFactice
await this.RemoveUser(u);
await this.AddUser(u);
}
public async void BanOnId(int id)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<User>>("data");
// Get the item int the list
var item = currentData.FirstOrDefault(w => w.Id == id);
// Update item status
item.isBan = true;
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
public async void UnbanOnId(int id)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<User>>("data");
// Get the item int the list
var item = currentData.FirstOrDefault(w => w.Id == id);
// Update item status
item.isBan = false;
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
}
}
Loading…
Cancel
Save