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 LayerService { private readonly HttpClient _httpClient; public LayerService(HttpClient httpClient) { _httpClient = httpClient; } private readonly JsonSerializerOptions _jsonOptions = new() { PropertyNameCaseInsensitive = true }; public async Task> GetLayersAsync(LayerFilterRequest 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 = $"Layers?start={start}&limit={filterRequest.PageSize}"; if (!string.IsNullOrEmpty(filterRequest.Search)) query += $"&name={Uri.EscapeDataString(filterRequest.Search)}"; if (filterRequest.Type.HasValue) query += $"&type={(int)filterRequest.Type.Value}"; var response = await _httpClient.GetAsync(query); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(); var result = JsonSerializer.Deserialize>(json, _jsonOptions); return result ?? new PagedResult(); } public async Task GetLayerByIdAsync(Guid id) { var response = await _httpClient.GetAsync($"Layers/{id}"); if (!response.IsSuccessStatusCode) return null; return await response.Content.ReadFromJsonAsync(); } public async Task UpdateRecordsAsync(Guid layerId, List records) { // TODO: Implement if needed - backend doesn't have PUT endpoint yet // For now we don't need it for read-only view return await Task.FromResult(false); } }