public IActionResult TakeoutOrderForm(AddOrderedMealViewModel model) { if (model.OrderedMeals == null) { model.OrderedMeals = new List <OrderedMeal>(); } var meal = new OrderedMeal { MenuEntryId = (int)model.CurrentOrderedMealId, Quantity = (int)model.Quantity, Comment = model.Comments, Price = _context.MenuEntries.Find(model.CurrentOrderedMealId).Price }; model.OrderedMeals.Add(meal); CreateTakeoutPriorityOrderQueue(model); var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList(); var selectList = new List <SelectListItem>(); foreach (var entry in menuEntries) { selectList.Add(new SelectListItem() { Value = entry.MenuEntryId.ToString(), Text = entry.MenuEntryName, });; } ViewData["Menu"] = new SelectList(selectList, "Value", "Text"); return(Redirect("/User/TakeoutOrdersPage")); }
public IActionResult AddOrderedMeal(int?id, AddOrderedMealViewModel model) { if (model.OrderedMeals == null) { model.OrderedMeals = new List <OrderedMeal>(); } var meal = new OrderedMeal { InOrderOrderId = (int)model.OrderId, MenuEntryId = (int)model.CurrentOrderedMealId, Quantity = (int)model.Quantity, Comment = model.Comments, Price = _context.MenuEntries.Find(model.CurrentOrderedMealId).Price }; model.OrderedMeals.Add(meal); foreach (var m in model.OrderedMeals) { var om = new OrderedMeal { InOrderOrderId = (int)model.OrderId, MenuEntryId = m.MenuEntryId, Quantity = m.Quantity, Comment = m.Comment, Price = m.Price }; _context.Add(om); } _context.SaveChanges(); var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList(); var selectList = new List <SelectListItem>(); foreach (var entry in menuEntries) { selectList.Add(new SelectListItem() { Value = entry.MenuEntryId.ToString(), Text = entry.MenuEntryName, });; } ViewData["Menu"] = new SelectList(selectList, "Value", "Text"); return(Redirect("/Waiter/OrderPage/" + model.OrderId.ToString())); }
// AddOrderedMeals for order GET public IActionResult TakeoutOrderForm() { var model = new AddOrderedMealViewModel(); model.OrderedMeals = new List <OrderedMeal>(); model.OrderedForDate = DateTime.Now; var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList(); var selectList = new List <SelectListItem>(); foreach (var entry in menuEntries) { selectList.Add(new SelectListItem() { Value = entry.MenuEntryId.ToString(), Text = entry.MenuEntryName, });; } ViewData["Menu"] = new SelectList(selectList, "Value", "Text"); return(View(model)); }
public IActionResult AddOrderedMealAdd(AddOrderedMealViewModel model) { if (model.OrderedMeals == null) { model.OrderedMeals = new List <OrderedMeal>(); } var meal = new OrderedMeal { InOrderOrderId = (int)model.OrderId, MenuEntryId = (int)model.CurrentOrderedMealId, Quantity = (int)model.Quantity, Comment = model.Comments, Price = _context.MenuEntries.Find(model.CurrentOrderedMealId).Price }; model.OrderedMeals.Add(meal); for (int i = 0; i < model.OrderedMeals.Count; i++) { model.OrderedMeals[i].MenuEntry = _context.MenuEntries.Find(model.OrderedMeals[i].MenuEntryId); } model.CurrentOrderedMealId = null; model.Quantity = null; model.Comments = null; var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList(); var selectList = new List <SelectListItem>(); foreach (var entry in menuEntries) { selectList.Add(new SelectListItem() { Value = entry.MenuEntryId.ToString(), Text = entry.MenuEntryName, });; } ViewData["Menu"] = new SelectList(selectList, "Value", "Text"); return(View("AddOrderedMeal", model)); }
public void CreateTakeoutPriorityOrderQueue(AddOrderedMealViewModel model) { var usrID = HttpContext.Session.GetInt32("userID"); var users = _context.Users.Include(t => t.TakeoutOrders).Include(r => r.Reservations).ToList(); foreach (var user in users) { user.LoyalityPoints = user.Reservations.Where(r => r.State != (int)OrderState.Canceled).ToList().Count; user.LoyalityPoints -= user.Reservations.Where(r => r.State == (int)OrderState.Canceled).ToList().Count; user.LoyalityPoints += user.TakeoutOrders.Where(r => r.State != (int)OrderState.Canceled).ToList().Count; user.LoyalityPoints -= user.TakeoutOrders.Where(r => r.State == (int)OrderState.Canceled).ToList().Count; } var takeout = new TakeoutOrder { OrderedByUserId = (int)usrID, OrderDate = DateTime.Now, OrderedForDate = (DateTime)model.OrderedForDate, Price = 0, State = (int)OrderState.Created, ManagedByWaiterId = 1 }; var minDate = takeout.OrderedForDate.AddMinutes(-5); var maxDate = takeout.OrderedForDate.AddMinutes(5); var beforeTake = _context.TakeoutOrders.Where(d => DateTime.Compare(minDate, d.OrderedForDate) <= 0); var afterTake = beforeTake.Where(d => DateTime.Compare(maxDate, d.OrderedForDate) >= 0).Include(u => u.OrderedBy); var overlaped = afterTake.FirstOrDefault(); bool overlap = overlaped != null ? true : false; int currentUserPoints = users.Where(l => l.UserId == (int)usrID).FirstOrDefault().LoyalityPoints; int overlapUserPoints = overlap ? overlaped.OrderedBy.LoyalityPoints : 0; if (overlap) { if (overlapUserPoints >= currentUserPoints) { takeout.State = (int)OrderState.Canceled; _context.Add(takeout); _context.SaveChanges(); foreach (var m in model.OrderedMeals) { var om = new OrderedMeal { InTakeoutTakeoutOrderId = takeout.TakeoutOrderId, MenuEntryId = m.MenuEntryId, Quantity = m.Quantity, Comment = m.Comment, Price = m.Price }; _context.Add(om); } } else { overlaped.State = (int)OrderState.Canceled; _context.Update(overlaped); _context.Add(takeout); _context.SaveChanges(); foreach (var m in model.OrderedMeals) { var om = new OrderedMeal { InTakeoutTakeoutOrderId = takeout.TakeoutOrderId, MenuEntryId = m.MenuEntryId, Quantity = m.Quantity, Comment = m.Comment, Price = m.Price }; _context.Add(om); } } } else // No overlap detected { _context.Add(takeout); _context.SaveChanges(); foreach (var m in model.OrderedMeals) { var om = new OrderedMeal { InTakeoutTakeoutOrderId = takeout.TakeoutOrderId, MenuEntryId = m.MenuEntryId, Quantity = m.Quantity, Comment = m.Comment, Price = m.Price }; _context.Add(om); } } _context.SaveChanges(); }