using Lada.Framework.Data.Domains.BaseEntities;
using Lada.Framework.Data.Enums;
using System.ComponentModel.DataAnnotations;

namespace Lada.Framework.Data.Domains.Notifications
{
    public class Notification : BaseEntityWithKey<Guid>
    {

        /// <summary>
        /// 1 list các chủ thể gây ra hành động
        /// Ở phạm vi LADA chỉ có 1 chủ thể chính
        /// </summary>
        //public Subject { get; set; }
        [MaxLength(256)]
        public string MainSubject { get; set; }

        /// <summary>
        /// số lượng chủ thể. Field subjects sẽ không thể lưu hết toàn bộ số chủ thể của hành động 
        /// (có thể lên tới hàng nghìn) mà chỉ lưu đại diện 1 số lượng nhất định. 
        /// Do đó sẽ cần 1 field riêng để lưu số lượng chủ thể thật sự.
        /// </summary>
        public int SubjectCount { get; set; }


        /// <summary>
        /// Đường dẫn ảnh
        /// </summary>
        [MaxLength(1024)]
        public string Image { get; set; }

        
        /// <summary>
        /// Đối tượng bị tác động chính của hành động
        /// Dựa vào đối tượng này để lấy thông báo cho từng người
        /// </summary>
        public int DiSubject { get; set; }

        /// <summary>
        /// Đối tượng phụ bị ảnh hưởng bởi hành động
        /// </summary>
        [MaxLength(256)]
        public string InObject { get; set; }

        /// <summary>
        /// Đối tượng có mặt trong hành động thông qua một giới từ (trong, cho, của...).   
        /// </summary>
        [MaxLength(256)]
        public string PrObject { get; set; }

        //Một số kịch bản ví dụ
        //{{ subjects[0].name}} đã thích bài viết của bạn.

        //~> Monmen đã thích bài viết của bạn.

        //{{ subjects[0].name }} đã bình luận vào bài viết trong {{ pr_object.name }}.

        //~> Monmen đã bình luận vào bài viết trong Group nhí nhố.

        //{{ subjects[0].name }} đã trả lời bình luận của {{ in_object.name }} trong {{ pr_object.name }}.

        //~> Monmen đã trả lời bình luận của Thỏ bảy màu trong Group nhí nhố

        /// <summary>
        /// Đường dẫn của thông báo
        /// </summary>
        [MaxLength(1024)]
        public string Url { get; set; }

        /// <summary>
        /// Loại thông báo
        /// Dựa vào trường này để quyết định mẫu tin nhắn của thông báo
        /// </summary>
        public SubjectType Type { get; set; }
    }


}
