using Blazored.LocalStorage; using Microsoft.AspNetCore.Components.Authorization; using OrdersManagement.Models; using OrdersManagementDataModel.Dtos; namespace OrdersManagement.Services; public class UserService(IHttpClientFactory clientFactory, AuthenticationStateProvider authStateProvider) { private readonly HttpClient _httpClient = clientFactory.CreateClient("FaKrosnoApi"); public async Task?> GetUsersAsync() { return await _httpClient.GetFromJsonAsync>("api/Users"); } public async Task AuthenticateUserAsync(string login, string password) { try { var response = await _httpClient.PostAsJsonAsync("api/Users/login", new { Login = login, Password = password }); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadFromJsonAsync(); if (result?.Token == null) return null; await ((CustomAuthenticationStateProvider)authStateProvider).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 _httpClient.GetFromJsonAsync($"api/Users/by-id/?id={userId}"); } public async Task GetUserByUsernameAsync(string username) { return await _httpClient.GetFromJsonAsync($"api/Users/by-username/?username={username}"); } public async Task AddUserAsync(UserDto user) { return await _httpClient.PostAsJsonAsync("api/Users", user); } public async Task UpdateUserAsync(UserDto user) { await _httpClient.PutAsJsonAsync("api/Users", user); } public async Task DeleteUserAsync(Guid userId) { await _httpClient.DeleteAsync($"api/Users/?id={userId}"); } }