Clean up and reorganize using/import statements across the solution. Remove unnecessary DTO imports from Application and Infrastructure layers, and ensure Contracts DTOs are only referenced in API and BlazorWebApp layers. No business logic is changed; these updates improve code organization, reduce coupling, and clarify architectural separation between layers.
63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using DbFirst.BlazorWebApp.Models;
|
|
using DbFirst.Contracts.Catalogs;
|
|
|
|
namespace DbFirst.BlazorWebApp.Services;
|
|
|
|
public class CatalogApiClient : ICatalogApiClient
|
|
{
|
|
private readonly HttpClient _httpClient;
|
|
private const string Endpoint = "api/catalogs";
|
|
|
|
public CatalogApiClient(HttpClient httpClient)
|
|
{
|
|
_httpClient = httpClient;
|
|
}
|
|
|
|
public async Task<List<CatalogReadDto>> GetAllAsync(CancellationToken ct = default)
|
|
{
|
|
var result = await _httpClient.GetFromJsonAsync<List<CatalogReadDto>>(Endpoint, ct);
|
|
return result ?? [];
|
|
}
|
|
|
|
public async Task<CatalogReadDto?> GetByIdAsync(int id, CancellationToken ct = default)
|
|
{
|
|
return await _httpClient.GetFromJsonAsync<CatalogReadDto>($"{Endpoint}/{id}", ct);
|
|
}
|
|
|
|
public async Task<ApiResult<CatalogReadDto?>> CreateAsync(CatalogWriteDto dto, CancellationToken ct = default)
|
|
{
|
|
var response = await _httpClient.PostAsJsonAsync(Endpoint, dto, ct);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
var payload = await response.Content.ReadFromJsonAsync<CatalogReadDto>();
|
|
return ApiResult<CatalogReadDto?>.Ok(payload);
|
|
}
|
|
|
|
var error = await ApiClientHelper.ReadErrorAsync(response);
|
|
return ApiResult<CatalogReadDto?>.Fail(error);
|
|
}
|
|
|
|
public async Task<ApiResult<bool>> UpdateAsync(int id, CatalogWriteDto dto, CancellationToken ct = default)
|
|
{
|
|
var response = await _httpClient.PutAsJsonAsync($"{Endpoint}/{id}", dto, ct);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
return ApiResult<bool>.Ok(true);
|
|
}
|
|
|
|
var error = await ApiClientHelper.ReadErrorAsync(response);
|
|
return ApiResult<bool>.Fail(error);
|
|
}
|
|
|
|
public async Task<ApiResult<bool>> DeleteAsync(int id, CancellationToken ct = default)
|
|
{
|
|
var response = await _httpClient.DeleteAsync($"{Endpoint}/{id}", ct);
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
return ApiResult<bool>.Ok(true);
|
|
}
|
|
|
|
var error = await ApiClientHelper.ReadErrorAsync(response);
|
|
return ApiResult<bool>.Fail(error);
|
|
}
|
|
} |