Compare commits

...

4 Commits

@ -1,4 +1,3 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34330.188

@ -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,11 +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 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,37 +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-data.json").Result;
await LocalStorage.SetItemAsync("data", originalData);
}
}
public IUserDataService UserService { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<User> e)
{
@ -53,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