Files
DiunaBI/DiunaBI.UI.Shared/Services/DataInboxService.cs

50 lines
1.6 KiB
C#
Raw Normal View History

2025-12-01 12:55:47 +01:00
using System.Net.Http.Json;
using System.Text.Json;
using DiunaBI.Application.DTOModels;
using DiunaBI.Application.DTOModels.Common;
namespace DiunaBI.UI.Shared.Services;
public class DataInboxService
{
private readonly HttpClient _httpClient;
public DataInboxService(HttpClient httpClient)
{
_httpClient = httpClient;
}
private readonly JsonSerializerOptions _jsonOptions = new()
{
PropertyNameCaseInsensitive = true
};
public async Task<PagedResult<DataInboxDto>> GetDataInboxAsync(DataInboxFilterRequest filterRequest)
{
// Calculate start index from page number (page 1 = start 0, page 2 = start 50, etc.)
var start = (filterRequest.Page - 1) * filterRequest.PageSize;
var query = $"DataInbox/GetAll?start={start}&limit={filterRequest.PageSize}";
if (!string.IsNullOrEmpty(filterRequest.Search))
query += $"&name={Uri.EscapeDataString(filterRequest.Search)}";
var response = await _httpClient.GetAsync(query);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<PagedResult<DataInboxDto>>(json, _jsonOptions);
return result ?? new PagedResult<DataInboxDto>();
}
public async Task<DataInboxDto?> GetDataInboxByIdAsync(Guid id)
{
var response = await _httpClient.GetAsync($"DataInbox/{id}");
if (!response.IsSuccessStatusCode)
return null;
return await response.Content.ReadFromJsonAsync<DataInboxDto>();
}
}