Compare commits

...

4 Commits

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

@ -11,7 +11,6 @@ This is banned users list of this website.
<i class="fa fa-plus"></i> Ajouter <i class="fa fa-plus"></i> Ajouter
</NavLink> </NavLink>
</div> </div>
<SurveyPrompt Title="How is Blazor working for you?" />
<DataGrid TItem="User" <DataGrid TItem="User"
Data="@users" Data="@users"
@ -20,11 +19,32 @@ This is banned users list of this website.
PageSize="10" PageSize="10"
ShowPager ShowPager
Responsive> Responsive>
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="Id" /> <DataGridColumn TItem="User" Field="@nameof(User.Username)" Caption="Username" />
<DataGridColumn TItem="User" Field="@nameof(User.Username)" Caption="@Localizer["Username"]" /> <DataGridColumn TItem="User" Field="@nameof(User.isBan)" Caption="#">
<DataGridColumn TItem="User" Field="@nameof(User.Nom)" Caption="@Localizer["FirstN"]" /> <DisplayTemplate>
<DataGridColumn TItem="User" Field="@nameof(User.Prenom)" Caption="@Localizer["LastN"]" /> @if(context.isBan)
<DataGridColumn Caption="" /> {
<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> </DataGrid>

@ -2,8 +2,12 @@
using Blazorise; using Blazorise;
using Blazorise.DataGrid; using Blazorise.DataGrid;
using HeartTrack.Models; using HeartTrack.Models;
using HeartTrack.Services.TicketDataService;
using HeartTrack.Services.UserDataService;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using static MudBlazor.CategoryTypes;
using System.Net.Http;
namespace HeartTrack.Pages namespace HeartTrack.Pages
{ {
@ -13,37 +17,15 @@ namespace HeartTrack.Pages
private int totalUser; private int totalUser;
[Inject] [Inject]
public HttpClient Http { get; set; } public HttpClient Http { get; set; }
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
[Inject] [Inject]
public ILocalStorageService LocalStorage { get; set; } public ILocalStorageService LocalStorage { get; set; }
[Inject] [Inject]
public IStringLocalizer<BannedUsers> Localizer { get; set; } public IUserDataService UserService { 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);
}
}
private async Task OnReadData(DataGridReadDataEventArgs<User> e) 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 // 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 Http.GetJsonAsync<Item[]>( $"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.GetFromJsonAsync<User[]>($"{NavigationManager.BaseUri}fake-users.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested) 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 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.ReportDataService;
using HeartTrack.Services.UserDataService; using HeartTrack.Services.UserDataService;
using HeartTrack.Services.TicketDataService; 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 MudBlazor.Services;
using HeartTrack.Services.TicketDataServiceFactice; using HeartTrack.Services.TicketDataServiceFactice;

@ -16,6 +16,8 @@ namespace HeartTrack.Services.UserDataService
public Task UpdateUser(User u); public Task UpdateUser(User u);
public Task<User> getUserById(int id); 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"); 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.RemoveUser(u);
await this.AddUser(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