Files
DbFirst/DbFirst.BlazorWebApp/Services/MassDataApiClient.cs
OlgunR 45011122b2 Refactor API clients to use primary constructor for HttpClient
Refactored CatalogApiClient, DashboardApiClient, LayoutApiClient, and MassDataApiClient to use C# primary constructor syntax for injecting HttpClient. Removed private _httpClient fields and updated all usages to reference the constructor parameter directly. This change simplifies the code and modernizes dependency injection without altering any API logic.
2026-05-11 17:08:52 +02:00

58 lines
2.1 KiB
C#

using DbFirst.BlazorWebApp.Models;
using DbFirst.Contracts.MassData;
using Microsoft.AspNetCore.WebUtilities;
namespace DbFirst.BlazorWebApp.Services;
public class MassDataApiClient(HttpClient httpClient) : IMassDataApiClient
{
private const string Endpoint = "api/massdata";
public async Task<int> GetCountAsync(CancellationToken ct = default)
{
var result = await httpClient.GetFromJsonAsync<int?>("api/massdata/count", ct);
return result ?? 0;
}
public async Task<List<MassDataReadDto>> GetAllAsync(int? skip, int? take, CancellationToken ct = default)
{
var query = new Dictionary<string, string?>();
if (skip.HasValue) query["skip"] = skip.Value.ToString();
if (take.HasValue) query["take"] = take.Value.ToString();
var url = QueryHelpers.AddQueryString(Endpoint, query);
var result = await httpClient.GetFromJsonAsync<List<MassDataReadDto>>(url, ct);
return result ?? [];
}
public async Task<ApiResult<MassDataReadDto?>> UpsertAsync(MassDataWriteDto dto, CancellationToken ct = default)
{
var response = await httpClient.PostAsJsonAsync($"{Endpoint}/upsert", dto, ct);
if (response.IsSuccessStatusCode)
{
var payload = await response.Content.ReadFromJsonAsync<MassDataReadDto>();
return ApiResult<MassDataReadDto?>.Ok(payload);
}
var error = await ApiClientHelper.ReadErrorAsync(response);
return ApiResult<MassDataReadDto?>.Fail(error);
}
public async Task<MassDataReadDto?> GetByCustomerNameAsync(string customerName, CancellationToken ct = default)
{
if (string.IsNullOrWhiteSpace(customerName))
{
return null;
}
var response = await httpClient.GetAsync($"{Endpoint}/{Uri.EscapeDataString(customerName)}", ct);
if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
{
return null;
}
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<MassDataReadDto>();
}
}