コード例 #1
0
        public async Task <AdminDashboardResponse> GetDashboardResponse()
        {
            var ranks = _mapper.Map <IEnumerable <ProductRankVM> >(await _productRankRepository.GetAllAsync());

            var orders = await _orderRepository.GetDashboardListOrder();

            var orderCount       = orders.Count();
            var waitingOrders    = Math.Round((double)orders.Where(m => m.Status == OrderStatus.Waiting).Count() / orderCount * 100);
            var acceptedOrders   = Math.Round((double)orders.Where(m => m.Status == OrderStatus.Accepted).Count() / orderCount * 100);
            var inProgressOrders = Math.Round((double)orders.Where(m => m.Status == OrderStatus.InProgress).Count() / orderCount * 100);
            var shippingOrders   = Math.Round((double)orders.Where(m => m.Status == OrderStatus.Shipping).Count() / orderCount * 100);
            var deliveredOrders  = Math.Round((double)orders.Where(m => m.Status == OrderStatus.Deliveried).Count() / orderCount * 100);
            var completedOrders  = Math.Round((double)orders.Where(m => m.Status == OrderStatus.Completed).Count() / orderCount * 100);

            var    months = EntityExtensions.GetRevenue(DateTime.Now);
            double annual = 0;

            foreach (var item in months)
            {
                annual += await GetMonthEarning(item);
            }

            return(new AdminDashboardResponse
            {
                Charts = await GetChartResponse(),
                ProductRanks = ranks.Where(m => m.Rate > 0 || m.Sold > 0).OrderBy(m => m.Sold + m.Rate).Take(10).ToList(),
                MonthlyEarnings = await GetMonthEarning(DateTime.Now),
                AnnualEarnings = annual,
                OrderPercentage = completedOrders,
                WaitingOrderPercentage = waitingOrders,
                InProgressOrderPercentage = inProgressOrders,
                ShippingOrderPercentage = shippingOrders,
                DeliveriedOrderPercentage = deliveredOrders,
                CompletedOrderPercentage = completedOrders,
                AcceptedOrderPercentage = acceptedOrders,
                WaitingOrderCount = orders.Where(m => m.Status == OrderStatus.Waiting).Count()
            });
        }