using Microsoft.AspNetCore.Mvc.RazorPages;
using TaxBaik.Application.Services;

namespace TaxBaik.Web.Pages;

public class SitemapModel : PageModel
{
    private readonly BlogService _blogService;

    public List<string> Urls { get; set; } = [];

    public SitemapModel(BlogService blogService)
    {
        _blogService = blogService;
    }

    public async Task OnGetAsync()
    {
        var baseUrl = "https://www.taxbaik.com";

        // 정적 페이지 (항상 포함)
        Urls.AddRange(new[]
        {
            $"{baseUrl}",
            $"{baseUrl}/about",
            $"{baseUrl}/services",
            $"{baseUrl}/contact",
            $"{baseUrl}/privacy",
            $"{baseUrl}/terms",
            $"{baseUrl}/blog",
            $"{baseUrl}/faq",
            $"{baseUrl}/announcement",
            $"{baseUrl}/inquiry"
        });

        // 동적 블로그 포스트 (DB 오류 처리)
        try
        {
            var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 1000, categoryId: null, ct: default);
            foreach (var post in posts)
            {
                Urls.Add($"{baseUrl}/blog/{post.Slug}");
            }
        }
        catch (Exception ex)
        {
            // DB 연결 실패 등의 경우, 정적 페이지만으로도 sitemap 제공
            // 프로덕션에서는 DB가 있으므로 이 경로는 사용되지 않음
            System.Diagnostics.Debug.WriteLine($"Sitemap: Blog posts load failed: {ex.Message}");
        }
    }
}
