using Microsoft.AspNetCore.Mvc.RazorPages; using TaxBaik.Application.Services; using TaxBaik.Domain.Entities; using TaxBaik.Domain.Interfaces; namespace TaxBaik.Web.Pages.Blog; public class BlogIndexModel : PageModel { private readonly BlogService _blogService; private readonly ICategoryRepository _categoryRepository; 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(BlogService blogService, ICategoryRepository categoryRepository) { _blogService = blogService; _categoryRepository = categoryRepository; } public async Task OnGetAsync(int page = 1, int? categoryId = null) { CurrentPage = page; SelectedCategoryId = categoryId; Categories = (await _categoryRepository.GetAllAsync()).ToList(); var (posts, total) = await _blogService.GetPublishedPagedAsync(page, PageSize, categoryId); Posts = posts.ToList(); TotalPages = (total + PageSize - 1) / PageSize; } }