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

namespace Lada.Framework.Data.Domains.Orders
{
    /// <summary>
    /// Thông tin triển khai của đơn hàng
    /// </summary>
    public class OrderOps : BaseEntity
    {
        #region Relation
        public int Id { get; set; }
        public virtual Order Order { get; set; }
        #endregion


        #region Agency
        /// <summary>
        /// Chi nhánh hiện tại
        /// </summary>
        public int AgencyId { get; set; }

        /// <summary>
        /// Chi nhánh kế tiếp
        /// </summary>
        public int NextAgencyId { get; set; }


        /// <summary>
        /// Chi nhánh lấy hàng thành công
        /// </summary>
        public int AgencyPickedupId { get; set; }
        /// <summary>
        /// Chi nhánh giao hàng thành công
        /// </summary>
        public int AgencyDeliveredId { get; set; }
        /// <summary>
        /// Chi nhánh trả hàng thành công
        /// </summary>
        public int AgencyReturnedId { get; set; }
        /// <summary>
        /// Chi nhánh được lên kế hoạch lấy hàng 
        /// </summary>
        public int ExpectAgencyPickupId { get; set; }
        /// <summary>
        /// Chi nhánh được lên kế hoạch giao hàng 
        /// </summary>
        public int ExpectAgencyDeliveryId { get; set; }
        /// <summary>
        /// Chi nhánh được lên kế hoạch trả hàng 
        /// </summary>
        public int ExpectAgencyReturnId { get; set; }
        #endregion

        #region Status
        /// <summary>
        /// Trạng thái
        /// </summary>
        public OrderStatus Status { get; set; } = OrderStatus.New;


        /// <summary>
        /// Trạng thái vật lý
        /// </summary>
        public OrderPhysicalStatus PhysicalStatus { get; set; } = OrderPhysicalStatus.WaitToPickup;

        /// <summary>
        /// Nội dung trạng thái cuối
        /// </summary>
        [MaxLength(1024)]
        public string StatusContent { get; set; } = string.Empty;

        /// <summary>
        /// Chiều đơn hàng
        /// </summary>
        public OrderDirection OrderDirection { get; set; } = OrderDirection.ToDelivery;


        #endregion

        #region PIC
        /// <summary>
        /// Người phụ trách (đang chịu trách nhiệm về đơn hàng)
        /// </summary>
        public int PicId { get; set; }

        [MaxLength(64)]
        public string PicUserName { get; set; } = string.Empty;

        /// <summary>
        /// Người phụ trách cuối
        /// </summary>
        public int LastPicId { get; set; }

        [MaxLength(64)]
        public string LastPicUserName { get; set; } = string.Empty;

        public int? PickedupById { get; set; }

        [MaxLength(64)]
        public string PickedupByUserName { get; set; } = string.Empty;

        public int? DeliveredById { get; set; }

        [MaxLength(64)]
        public string DeliveredByUserName { get; set; } = string.Empty;



        #endregion

        #region Ghi chú
        /// <summary>
        /// Ghi chú lấy hàng
        /// </summary>
        [MaxLength(1024)]
        public string PickupNote { get; set; } = string.Empty;

        /// <summary>
        /// Ghi chú giao hàng
        /// </summary>
        [MaxLength(1024)]
        public string DeliveryNote { get; set; } = string.Empty;
        /// <summary>
        /// Ghi chú trả hàng
        /// </summary>
        [MaxLength(1024)]
        public string ReturnNote { get; set; } = string.Empty;
        #endregion



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

    }
}
