You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.7 KiB
139 lines
3.7 KiB
using System;
|
|
using Blazored.LocalStorage;
|
|
using HeartTrack.Models;
|
|
using HeartTrack.Services.UserDataService;
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
namespace HeartTrack.Services.UserDataServiceFactice
|
|
{
|
|
public class UserDataServiceFactice : IUserDataService
|
|
{
|
|
[Inject]
|
|
private HttpClient _clientHttp { get; set; }
|
|
|
|
[Inject]
|
|
public ILocalStorageService _localStorage { get; set; }
|
|
|
|
[Inject]
|
|
public NavigationManager _navigationManager { get; set; }
|
|
|
|
private String EmplacementLocalStorage { get; set; }
|
|
private String EmplacementJson { get; set; }
|
|
|
|
|
|
public UserDataServiceFactice(HttpClient clientHttp, ILocalStorageService localStorage, NavigationManager navigationManager)
|
|
{
|
|
this._clientHttp = clientHttp;
|
|
this._localStorage = localStorage;
|
|
this._navigationManager = navigationManager;
|
|
|
|
this.EmplacementLocalStorage = "usersData";
|
|
this.EmplacementJson = $"{_navigationManager.BaseUri}data/fake-users.json";
|
|
}
|
|
|
|
public async Task AddUser(User u)
|
|
{
|
|
List<User> data = await getAllUsers();
|
|
data.Add(u);
|
|
await this.SaveAllUsers(data);
|
|
}
|
|
|
|
public async Task<User> getUserById(int id)
|
|
{
|
|
List<User> users = await getAllUsers();
|
|
User? temp = null;
|
|
|
|
foreach (User u in users)
|
|
{
|
|
if (u.Id == id)
|
|
{
|
|
temp = u;
|
|
}
|
|
}
|
|
|
|
return temp;
|
|
}
|
|
|
|
public async Task<List<User>> getAllUsers()
|
|
{
|
|
List<User> lUsers = new List<User>();
|
|
|
|
lUsers = await this.getUsersFromLocalStorage();
|
|
if (lUsers.Count == 0)
|
|
{
|
|
lUsers = await this.getUsersFromJson(this.EmplacementJson);
|
|
await this.saveUsersLocalStorage(lUsers);
|
|
}
|
|
|
|
return lUsers;
|
|
}
|
|
|
|
private async Task<List<User>> getUsersFromJson(String cheminVersJson)
|
|
{
|
|
List<User> UsersDeserialiser = new List<User>();
|
|
|
|
var data = await _clientHttp.GetFromJsonAsync<User[]>(cheminVersJson);
|
|
UsersDeserialiser = data.ToList();
|
|
|
|
return UsersDeserialiser;
|
|
}
|
|
|
|
private async Task<List<User>> getUsersFromLocalStorage()
|
|
{
|
|
List<User> UsersFromLocalStorage = null;
|
|
|
|
var data = await _localStorage.GetItemAsync<User[]>(EmplacementLocalStorage);
|
|
|
|
if (data == null)
|
|
{
|
|
UsersFromLocalStorage = new List<User>();
|
|
}
|
|
else
|
|
{
|
|
UsersFromLocalStorage = data.ToList();
|
|
}
|
|
|
|
return UsersFromLocalStorage;
|
|
}
|
|
|
|
public async Task RemoveUser(User u)
|
|
{
|
|
List<User> data = await getAllUsers();
|
|
|
|
int index = -1;
|
|
|
|
foreach (User temp in data)
|
|
{
|
|
if (temp.Id == u.Id)
|
|
{
|
|
index = data.IndexOf(temp);
|
|
}
|
|
}
|
|
|
|
if (index != -1)
|
|
{
|
|
data.RemoveAt(index);
|
|
}
|
|
|
|
await this.SaveAllUsers(data);
|
|
|
|
data = await this.getAllUsers();
|
|
}
|
|
|
|
public async Task SaveAllUsers(List<User> list)
|
|
{
|
|
await this.saveUsersLocalStorage(list);
|
|
}
|
|
|
|
private async Task saveUsersLocalStorage(List<User> lUsers)
|
|
{
|
|
await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lUsers);
|
|
}
|
|
|
|
public async Task UpdateUser(User u)
|
|
{
|
|
await this.RemoveUser(u);
|
|
await this.AddUser(u);
|
|
}
|
|
}
|
|
} |