public ActionResult PullOrder(int id, OrderHeaderDetail model) { bool isComplete = false; if (Request.Form["Complete"] != null) { isComplete = true; } else if (Request.Form["PullOnly"] != null) { isComplete = false; } else { ModelState.AddModelError("", "Programmer Error - Could not identify Button selected."); return(RedirectToAction("PullIndex")); } if (!ModelState.IsValid) { return(View(model)); } if (model.OrderId != id) { ModelState.AddModelError("", "Id Mismatch"); return(View(model)); } var service = CreateOrderService(); OrderCrtUpdRtnStatus orderRtnStatus = service.UpdatePulledItems(model, id, isComplete); if (orderRtnStatus.OrderHeaderCreated) { if (isComplete) { TempData["SaveResult"] = $"Order was Completed."; return(RedirectToAction("PullIndex")); } if (orderRtnStatus.OrderAllDetailCreated) { TempData["SaveResult"] = $"Order was NOT completed - not all Items were updated. Please review the order."; return(RedirectToAction("PullIndex")); } TempData["SaveResult"] = $"Order was NOT completed. Some or all Pulled Items were saved."; return(RedirectToAction("PullIndex")); } ModelState.AddModelError("", "Order could not be updated. Please review the order."); return(RedirectToAction("PullIndex")); }
public ActionResult Edit(int id, OrderUpdate model) { if (!ModelState.IsValid) { ViewBag.SlotId = BuildTimeSlotDropdown(model.Deliver, model.SlotId); return(View(model)); } if (model.OrderId != id) { ModelState.AddModelError("", "Id Mismatch"); ViewBag.SlotId = BuildTimeSlotDropdown(model.Deliver, model.SlotId); return(View(model)); } string errorFound = EditItems(model.OrderDetailCategoryList); if (errorFound != null) { ModelState.AddModelError("", errorFound); ViewBag.SlotId = BuildTimeSlotDropdown(model.Deliver, model.SlotId); return(View(model)); } var service = CreateOrderService(); OrderCrtUpdRtnStatus orderRtnStatus = service.UpdateOrder(model); if (orderRtnStatus.OrderHeaderCreated) { if (orderRtnStatus.OrderAllDetailCreated) { TempData["SaveResult"] = $"Order was updated."; if (model.IsCust) { return(RedirectToAction("Index", "Home")); } return(RedirectToAction("Index")); } TempData["SaveResult"] = $"Order was updated - not all Items were updated. Please review the order."; if (model.IsCust) { return(RedirectToAction("Index", "Home")); } return(RedirectToAction("Index")); } ModelState.AddModelError("", "Order could not be updated."); ViewBag.SlotId = BuildTimeSlotDropdown(model.Deliver, model.SlotId); return(View(model)); }
public OrderCrtUpdRtnStatus UpdateOrder(OrderUpdate model) { OrderCrtUpdRtnStatus orderRtnStatus = new OrderCrtUpdRtnStatus { OrderHeaderCreated = false, OrderAllDetailCreated = false, OrderId = 0 }; using (var ctx = new ApplicationDbContext()) { var entity = ctx .OrderHeaders .Single(e => e.OrderId == model.OrderId); entity.CustId = model.CustId; entity.SlotId = model.SlotId; entity.MostWantedNotes = model.MostWantedNotes; entity.FreezerNotes = model.FreezerNotes; entity.ProduceNotes = model.ProduceNotes; entity.NonFoodNotes = model.NonFoodNotes; entity.Deliver = model.Deliver; entity.PullStartedAt = null; entity.PullStartedBy = null; entity.OrderCompletedAt = null; try { ctx.SaveChanges(); } catch { return(orderRtnStatus); } } orderRtnStatus.OrderHeaderCreated = true; orderRtnStatus.OrderId = model.OrderId; // Assume all OrderDetail records will be created/updated/deleted - make false if any fail. orderRtnStatus.OrderAllDetailCreated = true; OrderDetailService orderDetailService = new OrderDetailService(_userId); // Add/Update/Delete Order Detail foreach (var catagory in model.OrderDetailCategoryList) { foreach (var subCat in catagory.OrderDetailSubCatList) { if (subCat.OrderDetailItemList != null) { foreach (var itm in subCat.OrderDetailItemList) { if (itm.Quantity != itm.QuantityBefore) { if (itm.Quantity > 0 && itm.QuantityBefore > 0) { // Quantity changed var orderDetail = new OrderDetailUpdate() { OrderDetailId = itm.OrderDetailId, ItemId = itm.ItemId, Quantity = itm.Quantity, Filled = false }; if (!orderDetailService.UpdateOrderDetail(orderDetail)) { orderRtnStatus.OrderAllDetailCreated = false; } } else if (itm.Quantity > 0) { // Add Detail var orderDetail = new OrderDetailCreate() { OrderId = orderRtnStatus.OrderId, ItemId = itm.ItemId, Quantity = itm.Quantity, Filled = false }; if (!orderDetailService.CreateOrderDetail(orderDetail)) { orderRtnStatus.OrderAllDetailCreated = false; } } else if (itm.QuantityBefore > 0) { if (!orderDetailService.DeleteOrderDetail(itm.OrderDetailId)) { orderRtnStatus.OrderAllDetailCreated = false; } } } } } } } return(orderRtnStatus); }
public OrderCrtUpdRtnStatus UpdatePulledItems(OrderHeaderDetail model, int orderId, bool isComplete) { OrderCrtUpdRtnStatus orderRtnStatus = new OrderCrtUpdRtnStatus { OrderHeaderCreated = false, OrderAllDetailCreated = false, OrderId = 0 }; if (isComplete) { using (var ctx = new ApplicationDbContext()) { var entity = ctx .OrderHeaders .Single(e => e.OrderId == model.OrderId); entity.OrderCompletedAt = DateTimeOffset.Now; try { ctx.SaveChanges(); } catch { return(orderRtnStatus); } } orderRtnStatus.OrderHeaderCreated = true; } orderRtnStatus.OrderId = model.OrderId; // Assume all OrderDetail records will be created/updated/deleted - make false if any fail. orderRtnStatus.OrderAllDetailCreated = true; OrderDetailService orderDetailService = new OrderDetailService(_userId); // Add Order Detail foreach (var catagory in model.OrderDetailCategoryList) { foreach (var subCat in catagory.OrderDetailSubCatList) { if (subCat.OrderDetailItemList != null) { foreach (var itm in subCat.OrderDetailItemList) { if (itm.Pulled != itm.PulledBefore) { // Marked as Pulled (or un-Pulled) var orderDetail = new OrderDetailUpdate() { OrderDetailId = itm.OrderDetailId, ItemId = itm.ItemId, Quantity = itm.Quantity, Filled = itm.Pulled }; if (!orderDetailService.UpdateOrderDetail(orderDetail)) { orderRtnStatus.OrderAllDetailCreated = false; } } } } } } return(orderRtnStatus); }
public OrderCrtUpdRtnStatus CreateOrder(OrderCreate model) { OrderCrtUpdRtnStatus orderRtnStatus = new OrderCrtUpdRtnStatus { OrderHeaderCreated = false, OrderAllDetailCreated = false, OrderId = 0 }; var entity = new OrderHeader() { CustId = model.CustId, SlotId = model.SlotId, MostWantedNotes = model.MostWantedNotes, FreezerNotes = model.FreezerNotes, ProduceNotes = model.ProduceNotes, NonFoodNotes = model.NonFoodNotes, Deliver = model.Deliver, PullStartedAt = null, PullStartedBy = null, OrderCompletedAt = null, CreateBy = _userId, CreatedAt = DateTimeOffset.Now }; using (var ctx = new ApplicationDbContext()) { ctx.OrderHeaders.Add(entity); try { ctx.SaveChanges(); } catch { return(orderRtnStatus); } orderRtnStatus.OrderHeaderCreated = true; orderRtnStatus.OrderId = entity.OrderId; // Assume all OrderDetail records will be written - make false if any fail. orderRtnStatus.OrderAllDetailCreated = true; OrderDetailService orderDetailService = new OrderDetailService(_userId); // Add Order Detail foreach (var catagory in model.OrderDetailCategoryList) { foreach (var subCat in catagory.OrderDetailSubCatList) { if (subCat.OrderDetailItemList != null) { foreach (var itm in subCat.OrderDetailItemList) { if (itm.Quantity > 0) { var orderDetail = new OrderDetailCreate() { OrderId = orderRtnStatus.OrderId, ItemId = itm.ItemId, Quantity = itm.Quantity, QuantityBefore = itm.Quantity, Filled = false }; if (!orderDetailService.CreateOrderDetail(orderDetail)) { orderRtnStatus.OrderAllDetailCreated = false; } } } } } } } return(orderRtnStatus); }