using OrdersManagement.Models; using OrdersManagementDataModel.Dtos; namespace OrdersManagement.Services; public class UserService( IHttpClientFactory httpClientFactory, CustomAuthenticationStateProvider authenticationStateProvider) : ServiceBase(httpClientFactory, authenticationStateProvider) { private readonly HttpClient _httpClient = httpClientFactory.CreateClient("FaKrosnoApi"); public async Task?> GetUsersAsync() { return await GetListAsync("api/Users"); } public async Task AuthenticateUserAsync(string login, string password) { try { var response = await PostAsJsonAsync("api/Users/login", new { Login = login, Password = password }); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadFromJsonAsync(); if (result?.Token == null) return null; await authenticationStateProvider.MarkUserAsAuthenticated(result.Token); return await GetUserByUsernameAsync(login); } catch (Exception ex) { Console.WriteLine($"Błąd logowania: {ex.Message}"); return null; } } public async Task GetUserAsync(Guid userId) { return await GetEntityAsync($"api/Users/by-id/?id={userId}"); } public async Task GetUserByUsernameAsync(string username) { return await GetEntityAsync($"api/Users/by-username/?username={username}"); } public async Task AddUserAsync(UserDto user) { return await PostAsJsonAsync("api/Users", user); } public async Task UpdateUserAsync(UserDto user) { return await PutAsJsonAsync("api/Users", user); } public async Task DeleteUserAsync(Guid userId) { return await DeleteAsync($"api/Users/?id={userId}"); } }