namespace Ladaer.BackEnd.Infrastructures.DTO.Reports.Items.Orders
{
    /// <summary>
    /// Bản ghi báo cáo sản lượng
    /// </summary>
    public class OrderProductionItem
    {
        public DateTime OrderDate { get; set; }

        /// <summary>
        /// Chuỗi hiển thị ngày, nếu là ngày tổng hợp thì hiển thị "TỔNG CỘNG"
        /// </summary>
        public string OrderDateStr => OrderDate == DateTime.MinValue ? "TỔNG CỘNG" : OrderDate.ToString("dd/MM/yyyy");

        public int TotalOrders { get; set; }
        public int WaitPickup { get; set; }
        public int Picking { get; set; }
        public int PickupFailed { get; set; }
        public int InTransit { get; set; }
        public int Delivering { get; set; }
        public int Delivered { get; set; }
        public int DeliveryFailed { get; set; }
        public int Cancelled { get; set; }
        public int LostOrDamaged { get; set; }
        public int InStorage { get; set; }

        /// <summary>
        /// Kiểm tra xem có phải là dòng tổng cộng không
        /// </summary>
        public bool IsTotalRow => OrderDate == DateTime.MinValue;

        /// <summary>
        /// Tổng số đơn đang xử lý
        /// </summary>
        public int TotalInProgress => WaitPickup + Picking + InTransit + Delivering;

        /// <summary>
        /// Tổng số đơn thất bại
        /// </summary>
        public int TotalFailed => PickupFailed + DeliveryFailed;

        /// <summary>
        /// Tổng số đơn hoàn thành
        /// </summary>
        public int TotalCompleted => Delivered;

        /// <summary>
        /// Tỷ lệ thành công
        /// </summary>
        public decimal SuccessRate => TotalOrders > 0 ? (decimal)TotalCompleted / TotalOrders * 100 : 0;
    }
}