public IActionResult SalesReport(int daysAgo)
        {
            var APIStores = new StoreApi(new Configuration {
                BasePath = "https://localhost:44368/"
            });
            var stores    = APIStores.ApiStoreGet();
            var APIOrders = new OrderApi(new Configuration {
                BasePath = "https://localhost:44368/"
            });
            var orders = APIOrders.ApiOrderGet();

            List <SalesReport> summary = orders.Where(sales => (DateTime.Now - (DateTime)sales.TimeStamp).TotalDays <= daysAgo)
                                         .GroupBy(sales1 => sales1.Store).Select(sales2 => new SalesReport
            {
                Item     = sales2.First().Store.Name,
                Quantity = sales2.Count(),
                Revenue  = sales2.Sum(sales => (double)sales.PriceTotal),
                Pizzas   = sales2.SelectMany(group => group.Pizza).GroupBy(pizza => pizza.Pizza).Select(pizzaGroup => new SalesReport
                {
                    Item     = pizzaGroup.First().Name,
                    Quantity = pizzaGroup.Count(),
                    Revenue  = pizzaGroup.Sum(sales => (double)sales.Price),
                }).OrderBy(report => report.Item)
            }).ToList();

            return(View(summary));
        }
예제 #2
0
        public IActionResult GetOrdersByCustomer(string Name)
        {
            if (Name is null)
            {
                return(BadRequest("Customer field was empty or null"));
            }
            var APICustomer = new CustomerApi(new Configuration {
                BasePath = "https://localhost:44368/"
            });
            var customers     = APICustomer.ApiCustomerGet();
            var foundCustomer = customers.FirstOrDefault(cust => cust.Name.Equals(Name));

            if (foundCustomer is not null)
            {
                var APIOrder = new OrderApi(new Configuration {
                    BasePath = "https://localhost:44368/"
                });
                var          orders         = APIOrder.ApiOrderGet();
                List <Order> customerOrders = orders.Where(
                    order => order.Customer.Id.Equals(foundCustomer.Id)).ToList();
                return(View(customerOrders));
            }

            ViewBag.ErrorMessage = "This user has no previous orders.";
            return(View("ViewCustomerOrders"));
        }
예제 #3
0
        public IActionResult ManagerSeat()
        {
            //var client = new ApiClient();
            var API = new OrderApi(new Configuration {
                BasePath = "https://localhost:44368/"
            });
            var orders = API.ApiOrderGet();

            //var orders = FEOrderClient.GetOrders();
            return(View(orders));
        }
        public IActionResult SelectStore()
        {
            var sessionOrder = Utils.GetCurrentOrder(HttpContext.Session);
            var API          = new OrderApi(new Configuration {
                BasePath = "https://localhost:44368/"
            });
            var orders = API.ApiOrderGet();
            var API2   = new StoreApi(new Configuration {
                BasePath = "https://localhost:44368/"
            });
            var stores = API2.ApiStoreGet();

            List <Order> previousOrders = orders.Where(
                order => order.Customer.Name.Equals(sessionOrder.Customer.Name)).OrderByDescending(order => order.TimeStamp).ToList();
            List <AStore> storesToDisplay = new List <AStore>();

#if !DEBUG
            if (previousOrders.Any() && timeSinceOrder(previousOrders.First()).TotalHours < 2)
            {
                return(BadRequest("At least 2 hours must pass since your last order before you can place another."));
            }
            foreach (var store in stores)
            {
                var lastOrderFromStore = previousOrders.FirstOrDefault(order => order.Store.Name.Equals(store.Name));

                if (lastOrderFromStore is null || timeSinceOrder(lastOrderFromStore).TotalHours >= 24)
                {
                    storesToDisplay.Add(store);
                }
            }
#else
            storesToDisplay = stores;
#endif

            if (storesToDisplay.Count == 0)
            {
                return(BadRequest("There is a 24 hour waiting period for making repeat orders at each store. All stores are currently under this waiting period."));
            }

            ViewBag.Stores = new SelectList(storesToDisplay.ToList(), "Id", "Name");
            return(View(new AStore()));
        }