private async Task <List <CustomerCount> > GetCustomerCountsByMonthAsync(int nam, int thang)
        {
            var orders = await _context.Orders
                         .Include(o => o.Customer)
                         .Include(o => o.DetailOrders)
                         .ThenInclude(dd => dd.Product)
                         .AsNoTracking()
                         .Where(o => o.ThoiGianTao.Year == nam)
                         .ToListAsync();

            if (thang != 0)
            {
                orders = orders.Where(o => o.ThoiGianTao.Month == thang).ToList();
            }
            var items = new List <CustomerCount>();

            foreach (var order in orders)
            {
                ulong tongTien = 0;
                foreach (var i in order.DetailOrders)
                {
                    var tamTinh = i.Gia * i.SoLuong;
                    tongTien += tamTinh;
                }
                var item = new CustomerCount
                {
                    ID   = order.CustomerID,
                    Ten  = order.Customer.Ten,
                    Tien = tongTien
                };
                items.Add(item);
            }
            var itemsGroup = items.GroupBy(i => new { i.ID, i.Ten }).Select(i => new
            {
                ID   = i.Key.ID,
                Ten  = i.Key.Ten,
                Tien = i.Sum(i => i.Tien)
            });
            var customers = new List <CustomerCount>();

            foreach (var i in itemsGroup)
            {
                var customer = new CustomerCount
                {
                    ID   = i.ID,
                    Ten  = i.Ten,
                    Tien = i.Tien
                };
                customers.Add(customer);
            }
            return(customers);
        }
        private async Task <List <CustomerCount> > GetCustomerCountsByDateAsync(DateTime dau, DateTime cuoi)
        {
            var orders = await _context.Orders
                         .Include(o => o.Customer)
                         .Include(o => o.DetailOrders)
                         .ThenInclude(dd => dd.Product)
                         .AsNoTracking()
                         .Where(o => dau.Date <= o.ThoiGianTao.Date && o.ThoiGianTao.Date <= cuoi.Date)
                         .ToListAsync();

            var items = new List <CustomerCount>();

            foreach (var order in orders)
            {
                ulong tongTien = 0;
                foreach (var i in order.DetailOrders)
                {
                    var tamTinh = i.Gia * i.SoLuong;
                    tongTien += tamTinh;
                }
                var item = new CustomerCount
                {
                    ID   = order.CustomerID,
                    Ten  = order.Customer.Ten,
                    Tien = tongTien
                };
                items.Add(item);
            }
            var itemsGroup = items.GroupBy(i => new { i.ID, i.Ten }).Select(i => new
            {
                ID   = i.Key.ID,
                Ten  = i.Key.Ten,
                Tien = i.Sum(i => i.Tien)
            });
            var customers = new List <CustomerCount>();

            foreach (var i in itemsGroup)
            {
                var customer = new CustomerCount
                {
                    ID   = i.ID,
                    Ten  = i.Ten,
                    Tien = i.Tien
                };
                customers.Add(customer);
            }
            return(customers);
        }