public ActionResult Orders(InventoryModel model, string orderAction) { int uid; bool validSession = int.TryParse(Session["UID"].ToString(), out uid); if (validSession) { if (!model.CurrentUser.LoadUserDetails(uid)) { return RedirectToAction("Index"); } } else { return RedirectToAction("Index"); } if (TempData["InventoryModel"] != null) { model = TempData["InventoryModel"] as InventoryModel; } model.OrderHistoryGrid = new Grid<Order>(Order.GetOrderHistory(InventoryModel.ConnString)); //Handle any user modifications for items in posted page if (Request.QueryString["grid-page"] != null || Request.QueryString["grid-column"] != null || !String.IsNullOrEmpty(orderAction)) { model.CurrentOrder.OrderItems = model.CurrentOrder.CalculateOrder(); model.OrderGrid = new Grid<IOrderableItem>(model.CurrentOrder.OrderItems); foreach (IOrderableItem item in model.CurrentOrder.OrderItems) { item.IsSelected = !String.IsNullOrEmpty(Request.Form["hdnIsSelected." + item.ItemID]); int qty; if (int.TryParse(Request.Form["hdnOrderQty." + item.ItemID], out qty)) { item.OnOrderQty = qty; } if (!String.IsNullOrEmpty(Request.Form["ckbxIsSelected." + item.ItemID])) { item.IsSelected = Request.Form["ckbxIsSelected." + item.ItemID].Contains("true"); } } model.CurrentOrder.OrderNotes = Request.Form["CurrentOrder.OrderNotes"]; if (!String.IsNullOrEmpty(orderAction)) { switch (orderAction) { case "GetOrder": model.CurrentOrder.OrderItems = model.CurrentOrder.CalculateOrder(); model.OrderGrid = new Grid<IOrderableItem>(model.CurrentOrder.OrderItems); if (model.CurrentOrder.OrderItems.Count == 0) { model.IsError = true; model.Message = "There is nothing to order at this time"; model.ShowErrorModal = true; } else { model.ShowErrorModal = false; } return View(model); case "EditOrderItem": try { if (model.CurrentUser.LoadUserDetails((int)Session["UID"])) { IOrderableItem item = model.CurrentOrder.OrderItems.Find(v => v.ItemID == int.Parse(Request.Form["editItemID"])); int qty; if (int.TryParse(Request.Form["editOrderQty"], out qty)) { item.OnOrderQty = qty; } } else { Session["UID"] = null; UserModel newModel = new UserModel(); newModel.Message = "SESSION HAS EXPIRED.<BR />PLEASE LOG IN AGAIN"; TempData["Model"] = newModel; return RedirectToAction("Index"); } } catch (Exception ex) { model.IsError = true; model.ModalType = "editModal"; model.Message = ex.Message; model.ShowErrorModal = false; return View(model); } model.OrderGrid = new Grid<IOrderableItem>(model.CurrentOrder.OrderItems); return View(model); case "SubmitOrder": try { model.CurrentOrder.OrderTotal = model.CurrentOrder.OrderItems.Sum(item => item.OnOrderQty * item.UnitCost); model.CurrentOrder.IsOpen = true; model.PrintFileString = System.Text.Encoding.Default.GetString(model.CurrentOrder.ProcessOrder(out model.Message)); model.ShowPrintView = true; return View(model); } catch (Exception ex) { model.IsError = true; model.Message = ex.Message; return View(model); } case "CloseOrder": int orderID = int.Parse(Request.Form["hdnCloseOrderID"]); bool closeOnly = Request.Form["chbxCloseOnly"].Contains("true"); Order order = new Order(orderID, InventoryModel.ConnString); if (order.Close(closeOnly, out model.Message)) { model.IsSuccess = true; return View(model); } else { model.IsError = true; model.ShowErrorModal = false; model.ModalType = "orderHistoryModal"; return View(model); } } } } model.OrderGrid = new Grid<IOrderableItem>(model.CurrentOrder.OrderItems); return View(model); }