63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using OrdersManagement.Models;
|
|
using OrdersManagementDataModel.Dtos;
|
|
|
|
namespace OrdersManagement.Services;
|
|
|
|
public class UserService(
|
|
IHttpClientFactory httpClientFactory,
|
|
CustomAuthenticationStateProvider authenticationStateProvider)
|
|
: ServiceBase<UserDto>(httpClientFactory, authenticationStateProvider)
|
|
{
|
|
private readonly HttpClient _httpClient = httpClientFactory.CreateClient("FaKrosnoApi");
|
|
|
|
public async Task<IEnumerable<UserDto>?> GetUsersAsync()
|
|
{
|
|
return await GetListAsync("api/Users");
|
|
}
|
|
|
|
public async Task<UserDto?> 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<LoginResponseDto>();
|
|
|
|
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<UserDto?> GetUserAsync(Guid userId)
|
|
{
|
|
return await GetEntityAsync($"api/Users/by-id/?id={userId}");
|
|
}
|
|
|
|
public async Task<UserDto?> GetUserByUsernameAsync(string username)
|
|
{
|
|
return await GetEntityAsync($"api/Users/by-username/?username={username}");
|
|
}
|
|
|
|
public async Task<HttpResponseMessage> AddUserAsync(UserDto user)
|
|
{
|
|
return await PostAsJsonAsync("api/Users", user);
|
|
}
|
|
|
|
public async Task<HttpResponseMessage> UpdateUserAsync(UserDto user)
|
|
{
|
|
return await PutAsJsonAsync("api/Users", user);
|
|
}
|
|
|
|
public async Task<HttpResponseMessage> DeleteUserAsync(Guid userId)
|
|
{
|
|
return await DeleteAsync($"api/Users/?id={userId}");
|
|
}
|
|
} |