using Microsoft.AspNetCore.Mvc.RazorPages; using TaxBaik.Domain.Entities; using TaxBaik.Web.Services; namespace TaxBaik.Web.Pages.Blog; public class BlogIndexModel : PageModel { private readonly IApiClient _apiClient; public List Posts { get; set; } = []; public List Categories { get; set; } = []; public int CurrentPage { get; set; } = 1; public int TotalPages { get; set; } public int? SelectedCategoryId { get; set; } private const int PageSize = 12; public BlogIndexModel(IApiClient apiClient) { _apiClient = apiClient; } public async Task OnGetAsync(int page = 1, int? categoryId = null) { try { CurrentPage = page; SelectedCategoryId = categoryId; var categories = await _apiClient.GetAsync>("category"); Categories = categories ?? []; var blogsResponse = await _apiClient.GetAsync($"blog?page={page}&pageSize={PageSize}"); if (blogsResponse != null) { Posts = blogsResponse.Data ?? []; TotalPages = (blogsResponse.Total + PageSize - 1) / PageSize; } } catch { CurrentPage = page; SelectedCategoryId = categoryId; Categories = []; Posts = []; TotalPages = 0; } } }