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

namespace Lada.Framework.Data.Domains.OrderBusiness
{
    /// <summary>
    /// Thực thể quản lý lý do lấy/giao hàng thất bại
    /// </summary>
    [Table("OrderFailReasons")]
    public class OrderFailReason : BaseEntityWithKey<int>
    {
        /// <summary>
        /// Tên/tiêu đề lý do thất bại
        /// </summary>
        [MaxLength(255)]
        public string Name { get; set; }

        /// <summary>
        /// Mô tả chi tiết
        /// </summary>
        [MaxLength(1000)]
        public string Description { get; set; }

        /// <summary>
        /// Loại thất bại: Pickup = 1, Delivery = 2, Both = 3
        /// </summary>
        public OrderFailReasonType Type { get; set; }

        /// <summary>
        /// Có bắt buộc tải ảnh minh chứng không
        /// </summary>
        public bool IsMediaRequired { get; set; }

        /// <summary>
        /// Tiêu đề/hướng dẫn ảnh cần tải (ví dụ: "Ảnh log cuộc gọi")
        /// </summary>
        [MaxLength(255)]
        public string MediaTitle { get; set; }

        /// <summary>
        /// Thứ tự hiển thị
        /// </summary>
        public int SortOrder { get; set; }

        /// <summary>
        /// Trạng thái hoạt động
        /// </summary>
        public bool IsActive { get; set; } = true;
    }

    /// <summary>
    /// Enum loại lý do thất bại
    /// </summary>
    public enum OrderFailReasonType
    {
        /// <summary>
        /// Áp dụng cho lấy hàng
        /// </summary>
        Pickup = 1,

        /// <summary>
        /// Áp dụng cho giao hàng
        /// </summary>
        Delivery = 2,

        /// <summary>
        /// Áp dụng cho cả hai
        /// </summary>
        Both = 3
    }
}
