using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Reports.Results
{
    /// <summary>
    /// Kết quả báo cáo đổ dầu theo lái xe
    /// </summary>
    public class FuelRefillReportByDriverResult : BaseResult
    {
        private List<Items.FuelCards.FuelRefillReportByDriverItem> _items = new();

        /// <summary>
        /// Danh sách báo cáo theo từng lái xe
        /// </summary>
        public List<Items.FuelCards.FuelRefillReportByDriverItem> Items
        {
            get => _items;
            set
            {
                _items = value ?? new List<Items.FuelCards.FuelRefillReportByDriverItem>();
                UpdateTotalItem();
            }
        }

        /// <summary>
        /// Dòng tổng hợp
        /// </summary>
        public Items.FuelCards.FuelRefillReportByDriverItem TotalItem { get; private set; } = new();

        /// <summary>
        /// Tổng số bản ghi
        /// </summary>
        public int TotalRecord { get; set; }

        /// <summary>
        /// Cập nhật item tổng hợp từ danh sách items
        /// </summary>
        private void UpdateTotalItem()
        {
            if (_items == null || !_items.Any())
            {
                TotalItem = new Items.FuelCards.FuelRefillReportByDriverItem();
                return;
            }

            TotalItem = new Items.FuelCards.FuelRefillReportByDriverItem
            {
                DriverId = 0, // ID = 0 để đánh dấu là dòng tổng hợp
                DriverUserName = "",
                DriverFullName = "TỔNG CỘNG",
                TotalDistanceKm = _items.Sum(x => x.TotalDistanceKm),
                TotalActualLiters = _items.Sum(x => x.TotalActualLiters),
                TotalActualAmount = _items.Sum(x => x.TotalActualAmount),
                TotalQuotaLiters = _items.Sum(x => x.TotalQuotaLiters),
                TotalQuotaAmount = _items.Sum(x => x.TotalQuotaAmount),
                TotalFuelIncome = _items.Sum(x => x.TotalFuelIncome)
            };
        }
    }
}
