46951d871a
- TaxSeason / CurrentSeasonDto에 RelatedCategorySlug 추가 - TaxSeasonCalendar 각 시즌에 카테고리 슬러그 매핑 (income-tax→income-tax, vat-1st/2nd→vat, 종부세→real-estate-tax 등) - IBlogPostRepository.GetByCategorySlugAsync 추가 - BlogService.GetSeasonalPostsAsync: 시즌 관련 글 2개 우선 + 나머지 최신 글로 채움 - IndexModel: SeasonalPosts / RecentPosts 분리 로드 - Index.cshtml 블로그 섹션: 시즌 중 "이번 시즌 추천" 배지 + 시즌별 전체보기 버튼 - site.css: blog-card--seasonal, seasonal-blog-tag, btn-seasonal 스타일 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
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<BlogPost> RecentPosts { get; set; } = [];
|
|
public List<BlogPost> SeasonalPosts { get; set; } = [];
|
|
public CurrentSeasonDto? CurrentSeason { get; set; }
|
|
public List<Announcement> 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 = [];
|
|
}
|
|
}
|
|
}
|