Example #1
0
        public async Task <DailyInfo> GeTotalInfoAsync(int shopId)
        {
            var info = new DailyInfo();
            var dt   = DateTime.Now;

            bills = await _billRepo.GetBillsWithSales(shopId, From, dt);

            if (bills == null || !bills.Any())
            {
                return(new DailyInfo
                {
                    averageBill = 0,
                    billsCount = 0,
                    totalProfit = 0,
                    totalRevenue = 0
                });
            }

            var sales = new List <Sale>();

            foreach (var bill in bills)
            {
                sales.AddRange(bill.Sales);
            }

            info.averageBill  = bills.Average(p => p.sum);
            info.billsCount   = bills.Count();
            info.totalRevenue = sales.Sum(p => p.sum);
            info.totalProfit  = sales.Sum(p => p.profit);

            return(info);
        }
Example #2
0
        public async Task <IEnumerable <SalesViewModel> > GetSales(int userId, int shopId, DateTime from, DateTime to)
        {
            IEnumerable <Shop> shops = new List <Shop>();
            var salesVm = new List <SalesViewModel>();

            var user = _userRepo.GetById(userId);

            var avl = _shopsChecker.CheckAvailability(user, shopId);

            if (!avl.isCorrectShop)
            {
                return(new List <SalesViewModel>());
            }
            if (!avl.hasShop && avl.isAdmin)
            {
                shops = _shopRepo.GetShopsByBusiness(user.business_id.Value);
            }
            else if (!avl.hasShop && !avl.isAdmin)
            {
                return(new List <SalesViewModel>());
            }
            else if (avl.hasShop)
            {
                shops = new List <Shop> {
                    _shopRepo.GetById(shopId)
                };
            }

            if (shops == null || !shops.Any())
            {
                return(new List <SalesViewModel>());
            }


            foreach (var shop in shops)
            {
                shop.Bills = (await _billsRepo.GetBillsWithSales(shop.id, from, to)).ToList();
            }

            foreach (var shop in shops)
            {
                var bills = shop.Bills;

                foreach (var bill in bills)
                {
                    decimal totalSum = 0;

                    var productsVm = new List <SalesProductViewModel>();
                    var products   = new List <Product>();

                    foreach (var sale in bill.Sales)
                    {
                        productsVm.Add(new SalesProductViewModel
                        {
                            imageUrl   = (await _imgRepo.GetByIdAsync(sale.prod_id))?.img_url_temp,
                            ProdName   = sale.Product.name,
                            VendorCode = "",
                            Summ       = sale.sum,
                            Count      = sale.count,
                            Price      = sale.price
                        });
                        if (sale.Product.Price != null && sale.Product.Price.price.HasValue)
                        {
                            totalSum += sale.price * sale.count;
                        }
                    }

                    var discount = totalSum != 0 ? Math.Ceiling((1 - bill.sum / totalSum) * 100) : 0;
                    var saleVm   = new SalesViewModel
                    {
                        id         = bill.id,
                        reportDate = bill.report_date,
                        products   = productsVm,
                        totalSum   = bill.sum,
                        discount   = discount < 0 ? 0 : discount
                    };
                    salesVm.Add(saleVm);
                }
            }
            return(salesVm);
        }