Пример #1
0
        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"));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }