namespace ladaexpress.vn.Infrastructures.DTO.Models.Seo
{
    /// <summary>
    /// Model chứa thông tin SEO cho từng trang
    /// </summary>
    public class SeoModel
    {
        /// <summary>
        /// Title tag (60 ký tự tối ưu)
        /// </summary>
        public string Title { get; set; } = string.Empty;

        /// <summary>
        /// Meta description (155-160 ký tự tối ưu)
        /// </summary>
        public string Description { get; set; } = string.Empty;

        /// <summary>
        /// Meta keywords (không bắt buộc nhưng vẫn hữu ích)
        /// </summary>
        public string Keywords { get; set; } = string.Empty;

        /// <summary>
        /// Canonical URL
        /// </summary>
        public string CanonicalUrl { get; set; } = string.Empty;

        /// <summary>
        /// Robots meta tag (index, noindex, follow, nofollow)
        /// </summary>
        public string Robots { get; set; } = "index, follow";

        /// <summary>
        /// Open Graph title (có thể khác với title tag)
        /// </summary>
        public string OgTitle { get; set; } = string.Empty;

        /// <summary>
        /// Open Graph description
        /// </summary>
        public string OgDescription { get; set; } = string.Empty;

        /// <summary>
        /// Open Graph image URL
        /// </summary>
        public string OgImage { get; set; } = string.Empty;

        /// <summary>
        /// Open Graph type (website, article, product, etc.)
        /// </summary>
        public string OgType { get; set; } = "website";

        /// <summary>
        /// Open Graph URL
        /// </summary>
        public string OgUrl { get; set; } = string.Empty;

        /// <summary>
        /// Twitter Card type (summary, summary_large_image, etc.)
        /// </summary>
        public string TwitterCard { get; set; } = "summary_large_image";

        /// <summary>
        /// Twitter title
        /// </summary>
        public string TwitterTitle { get; set; } = string.Empty;

        /// <summary>
        /// Twitter description
        /// </summary>
        public string TwitterDescription { get; set; } = string.Empty;

        /// <summary>
        /// Twitter image
        /// </summary>
        public string TwitterImage { get; set; } = string.Empty;

        /// <summary>
        /// Author information
        /// </summary>
        public string Author { get; set; } = string.Empty;

        /// <summary>
        /// Published date (cho articles)
        /// </summary>
        public DateTime? PublishedDate { get; set; }

        /// <summary>
        /// Modified date
        /// </summary>
        public DateTime? ModifiedDate { get; set; }

        /// <summary>
        /// Có hiển thị trong sitemap không
        /// </summary>
        public bool IncludeInSitemap { get; set; } = true;

        /// <summary>
        /// Priority trong sitemap (0.0 - 1.0)
        /// </summary>
        public double SitemapPriority { get; set; } = 0.5;

        /// <summary>
        /// Change frequency cho sitemap
        /// </summary>
        public string SitemapChangeFreq { get; set; } = "monthly";

        /// <summary>
        /// Structured data JSON-LD
        /// </summary>
        public string? StructuredData { get; set; }

        /// <summary>
        /// Breadcrumb items cho schema
        /// </summary>
        public List<BreadcrumbItem> Breadcrumbs { get; set; } = new List<BreadcrumbItem>();
    }

    /// <summary>
    /// Item cho breadcrumb schema
    /// </summary>
    public class BreadcrumbItem
    {
        public string Name { get; set; } = string.Empty;
        public string Url { get; set; } = string.Empty;
        public int Position { get; set; }
    }
}