using CMSMicroservice.Domain.Common;
using CMSMicroservice.Domain.Enums;

namespace CMSMicroservice.Domain.Entities.Blog;

/// <summary>
/// مقاله بلاگ
/// شامل عنوان، خلاصه، محتوای HTML، تصویر شاخص، وضعیت انتشار و آمار بازدید
/// </summary>
public class BlogPost : BaseAuditableEntity
{
    //عنوان مقاله
    public string Title { get; set; } = string.Empty;
    //نشانی یکتا (slug)
    public string Slug { get; set; } = string.Empty;
    //خلاصه مقاله برای نمایش در کارت‌ها
    public string? Summary { get; set; }
    //محتوای HTML مقاله
    public string HtmlContent { get; set; } = string.Empty;
    //مسیر تصویر شاخص
    public string? FeaturedImagePath { get; set; }
    //مسیر تامبنیل تصویر شاخص
    public string? FeaturedImageThumbnailPath { get; set; }
    //وضعیت مقاله
    public BlogPostStatus Status { get; set; } = BlogPostStatus.Draft;
    //زمان انتشار
    public DateTime? PublishedAt { get; set; }
    //زمانبندی انتشار خودکار
    public DateTime? ScheduledPublishAt { get; set; }
    //تعداد بازدید
    public int ViewCount { get; set; } = 0;
    //شناسه نویسنده
    public long AuthorUserId { get; set; }
    //نمایش در صفحه اول
    public bool IsFeatured { get; set; } = false;
    //ترتیب نمایش
    public int SortOrder { get; set; }

    //دسته‌بندی‌ها
    public virtual ICollection<BlogPostCategory> BlogPostCategories { get; set; } = new List<BlogPostCategory>();
    //تگ‌ها
    public virtual ICollection<BlogPostTag> BlogPostTags { get; set; } = new List<BlogPostTag>();
    //تصاویر گالری
    public virtual ICollection<BlogPostImage> BlogPostImages { get; set; } = new List<BlogPostImage>();
}
