private void LoadRequestModelForOrder(RequestViewModel requestModel)
        {
            if (requestModel == null)
            {
                return;
            }

            if (!String.IsNullOrEmpty(requestModel.OrderNo))
            {
                OrderShipToInfo info = PrdnDBContext.GetOrderShipToInfo(requestModel.OrderNo);

                if ((info != null) && (info.DropShip))
                {
                    requestModel.DropShipOrder = true;
                    requestModel.ShipCustID = info.ShipToCustID;
                    requestModel.ShipToName = info.ShipToName;
                    requestModel.ShipToAddr1 = info.ShipToAddr1;
                    requestModel.ShipToAddr2 = info.ShipToAddr2;
                    requestModel.ShipToAddr3 = info.ShipToAddr3;
                    requestModel.ShipToAddr4 = info.ShipToAddr4;
                    requestModel.ShipToCity = info.ShipToCity;
                    requestModel.ShipToState = info.ShipToState;
                    requestModel.ShipToPostal = info.ShipToPostal;
                    requestModel.ShipToCountry = info.ShipToCountry;
                    requestModel.OrderTotal = info.OrderTot;
                }
                else { requestModel.DropShipOrder = false; }
            }
        }
        public ActionResult Edit(RequestViewModel model, string urlReturn)
        {
            string statusConf = RequestStatus.CONFIRMED.ToString();
            if (model.StatusStr.Equals(statusConf))
            {
                string confOrdReq = statusConf + " requests require a ";

                if (model.InProduction.Equals("N"))
                { // not shipped from DI
                    if (string.IsNullOrEmpty(model.ShipContact))
                    {
                        ModelState.AddModelError("ShipContact", confOrdReq + "Branch Contact");
                    }
                    if (string.IsNullOrEmpty(model.ShipDeptID) || (model.ShipDeptID.Equals(UndecidedShipDept)))
                    {
                        ModelState.AddModelError("ShipDeptId", confOrdReq + "Shipped From Branch");
                    }
                }
                if (string.IsNullOrEmpty(model.ShipVia))
                {
                    ModelState.AddModelError("ShipVia", confOrdReq + "Shipping Method");
                }

                if (model.ExpArrivalDt == null)
                {
                    ModelState.AddModelError("ExpArrivalDt", confOrdReq + "Expected Arrival Date");
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    // get Request
                    var request = (from r in PrdnDBContext.Requests
                                   where r.ID == model.ID
                                   select r).FirstOrDefault();

                    if (request == null)
                    {
                        return ErrMsgView("Request ID '" + model.ID + "' is not valid.");
                    }

                    request.StatusStr = model.StatusStr;
                    request.UpdateStatusDtUsr(GetCurrentUserLogin());
                    request.InProduction = model.InProduction;
                    request.SerialNo = model.SerialNo;
                    request.ExpArrivalDt = model.ExpArrivalDt;
                    request.ShipDeptID = model.ShipDeptID.Equals(UndecidedShipDept) ? null : model.ShipDeptID;
                    request.ShipContact = model.ShipContact;
                    request.ShipVia = model.ShipVia;
                    request.TrackingNo = model.TrackingNo;
                    request.ProcComment = model.ProcComment;

                    PrdnDBContext.SaveChanges();
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "Error updating request: " + ex.Message);
                }
            }

            if (ModelState.IsValid)
            {
                return RedirectIfLocal(urlReturn, () => RedirectToAction("List") );
                //if (urlReturn != null) {return Redirect(urlReturn);} else { return RedirectToAction("List");}
            }
            else
            {
                LoadRequestData(model);
                return View(model);
            }
        }
        protected void LoadRequestData(RequestViewModel requestModel)
        {
            requestModel.ProdImageInfoSet = IsisDbContext.ProdImageInfoSet(requestModel.ProdCD);

            requestModel.ProdOptions = ProdOptDefn.ProdOptions(requestModel.ProdCD, requestModel.ParentProdCD);

            requestModel.WorksheetOptions = WorksheetOpt.Worksheet(requestModel.WorksheetID);

            var fileName = (from a in PrdnDBContext.RequestAttachments
                            where a.ID == requestModel.ID
                            select a.FileName).FirstOrDefault();

            requestModel.HasAttachment = (!String.IsNullOrEmpty(fileName));

            List<SelectListItem> depts = (from d in IsisDbContext.SalesDepts
                                          orderby d.DeptID
                                          select new SelectListItem
                                          {
                                              Value = d.DeptID,
                                              Text = d.DeptID + " " + d.Description
                                          }).ToList();
            depts.Add(new SelectListItem() { Text = "To Be Determined", Value = UndecidedShipDept });

            requestModel.DepartmentList = new SelectList(depts, "Value", "Text");

            if (string.IsNullOrEmpty(requestModel.ShipDeptID))
            {
                requestModel.ShipDeptID = UndecidedShipDept;
            }

            var types = from t in IsisDbContext.SalesShipTypes
                        orderby t.Description
                        select new
                        {
                            Value = t.TypeID,
                            Text = "(" + t.TypeID + ") " + t.Description
                        };

            requestModel.ShipMethodList = new SelectList(types.ToList(), "Value", "Text");

            LoadRequestModelForOrder(requestModel);

            if (String.IsNullOrEmpty(requestModel.ProcessedCstUserID))
            {
                requestModel.ProcessedCstUserID = GetCurrentUserLogin();
            }
        }