using Lada.Framework.DTO;
using Lada.Framework.DTO.Enums;
using Lada.Framework.Infrastructures.Helpers;
using System.ComponentModel.DataAnnotations;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Orders
{
    /// <summary>
    /// Response item cho OrderPackage với thông tin đơn vị đo
    /// </summary>
    public class OrderPackageResponseItem : BaseItem<int>
    {
        public int OrderId { get; set; }

        /// <summary>
        /// Ảnh kiện hàng
        /// </summary>
        public string Picture { get; set; } = "";

        [MaxLength(64)]
        public string Code { get; set; } = "";

        [MaxLength(256)]
        public string Name { get; set; } = "";

        /// <summary>
        /// Trọng lượng (đã chuyển đổi về đơn vị client)
        /// </summary>
        public decimal Weight { get; set; }

        /// <summary>
        /// Chiều dài (đã chuyển đổi về đơn vị client)
        /// </summary>
        public int Length { get; set; }

        /// <summary>
        /// Chiều rộng (đã chuyển đổi về đơn vị client)
        /// </summary>
        public int Width { get; set; }

        /// <summary>
        /// Chiều cao (đã chuyển đổi về đơn vị client)
        /// </summary>
        public int Height { get; set; }

        public int Quantity { get; set; }

        /// <summary>
        /// Tổng trọng lượng (đã chuyển đổi về đơn vị client)
        /// </summary>
        public decimal SubTotalWeight { get; set; }

        /// <summary>
        /// Ghi chú
        /// </summary>
        public string Note { get; set; } = "";

        /// <summary>
        /// Đơn vị trọng lượng
        /// </summary>
        public UnitOfWeight WeightUnit { get; set; } = UnitOfWeight.Kilogram;

        /// <summary>
        /// Đơn vị kích thước
        /// </summary>
        public UnitOfDistance DimensionUnit { get; set; } = UnitOfDistance.Centimet;

        /// <summary>
        /// Mô tả đơn vị trọng lượng
        /// </summary>
        public string WeightUnitDescription => WeightUnit.GetDescription();

        /// <summary>
        /// Mô tả đơn vị kích thước
        /// </summary>
        public string DimensionUnitDescription => DimensionUnit.GetDescription();
    }
}
