using Blazored.LocalStorage; using HeartTrack.Models; using Microsoft.AspNetCore.Components; namespace HeartTrack.Services { public class DataLocalService : IDataService { private readonly HttpClient _http; private readonly ILocalStorageService _localStorage; private readonly NavigationManager _navigationManager; private readonly IWebHostEnvironment _webHostEnvironment; public DataLocalService( ILocalStorageService localStorage, HttpClient http, IWebHostEnvironment webHostEnvironment, NavigationManager navigationManager) { _localStorage = localStorage; _http = http; _webHostEnvironment = webHostEnvironment; _navigationManager = navigationManager; } public async Task Add(UserModel model) { // Get the current data var currentData = await _localStorage.GetItemAsync>("data"); // Simulate the Id model.Id = currentData.Max(s => s.Id) + 1; // Add the item to the current data currentData.Add(new User { Id = model.Id, Username = model.Username, Nom = model.FirstName, Prenom = model.LastName, Email = model.Email, Password = model.Password, Sexe = model.Sexe, Taille = model.Taille, Poids = model.Poids, BirthDate = model.BirthDate }); // Save the data await _localStorage.SetItemAsync("data", currentData); } public async Task Count() { // Load data from the local storage var currentData = await _localStorage.GetItemAsync("data"); // Check if data exist in the local storage if (currentData == null) { // this code add in the local storage the fake data var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}fake-data.json"); await _localStorage.SetItemAsync("data", originalData); } return (await _localStorage.GetItemAsync("data")).Length; } public async Task> List(int currentPage, int pageSize) { // Load data from the local storage var currentData = await _localStorage.GetItemAsync("data"); // Check if data exist in the local storage if (currentData == null) { // this code add in the local storage the fake data var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}fake-data.json"); await _localStorage.SetItemAsync("data", originalData); } return (await _localStorage.GetItemAsync("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList(); } } }