using Microsoft.AspNetCore.Mvc.RazorPages; using TaxBaik.Application.Seasonal; using TaxBaik.Application.Services; using TaxBaik.Domain.Entities; namespace TaxBaik.Web.Pages; public class IndexModel : PageModel { private readonly BlogService _blogService; private readonly SeasonalMarketingService _seasonalMarketingService; private readonly AnnouncementService _announcementService; public List RecentPosts { get; set; } = []; public List SeasonalPosts { get; set; } = []; public CurrentSeasonDto? CurrentSeason { get; set; } public List ActiveAnnouncements { get; set; } = []; public IndexModel( BlogService blogService, SeasonalMarketingService seasonalMarketingService, AnnouncementService announcementService) { _blogService = blogService; _seasonalMarketingService = seasonalMarketingService; _announcementService = announcementService; } public async Task OnGetAsync() { CurrentSeason = _seasonalMarketingService.GetCurrentSeason(); try { ActiveAnnouncements = (await _announcementService.GetActiveAsync()).ToList(); } catch { ActiveAnnouncements = []; } try { if (CurrentSeason is not null && !string.IsNullOrEmpty(CurrentSeason.RelatedCategorySlug)) { var (seasonal, latest) = await _blogService.GetSeasonalPostsAsync( CurrentSeason.RelatedCategorySlug, seasonalCount: 2, totalCount: 3); SeasonalPosts = seasonal.ToList(); RecentPosts = latest.ToList(); } else { var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 3); RecentPosts = posts.ToList(); } } catch { RecentPosts = []; SeasonalPosts = []; } } }