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)); }
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")); }
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())); }