public IActionResult ReportOfSales()
        {
            var model = new ReportSale();

            model.DateFrom = DateTime.Today;
            model.DateTo   = DateTime.Today;
            model.Products = new List <Product>();
            return(View(model));
        }
        public IActionResult GenerateSales(ReportSale reportSale)
        {
            var transactions = _transactionService.GetTransactionsBetweenDates(reportSale.DateFrom, reportSale.DateTo);

            List <Product> listOfProducts = new List <Product>();

            foreach (var item in transactions)
            {
                foreach (var productList in item.ProductsLists)
                {
                    var productToAdd = _productService.GetById(productList.ProductId);
                    listOfProducts.Add(productToAdd);
                }
            }

            IEnumerable <Product> listOfDistinctProducts = listOfProducts.Distinct();


            foreach (var item in listOfDistinctProducts)
            {
                foreach (var product in listOfProducts)
                {
                    if (item.ProductId == product.ProductId)
                    {
                        item.Price += product.Price;
                        item.Stock += 1;
                    }
                }
            }


            reportSale.NumberOfTransactions = transactions.Count();
            reportSale.NumberOfSoldProducts = listOfProducts.Count();
            reportSale.NumberOfInvoices     = transactions.Where(x => x.Invoice != null).Count();


            reportSale.Products = listOfDistinctProducts.ToList();


            return(View("ReportOfSales", reportSale));
        }
 public IActionResult ReportOfSales(ReportSale ReportSale)
 {
     return(RedirectToAction("GenerateSales", ReportSale));
 }