public bool UpdateCust(CustUpdate model)
        {
            using (var ctx = new ApplicationDbContext())
            {
                var entity =
                    ctx
                    .Customers
                    .Single(e => e.CustomerId == model.CustomerId);
                entity.BarCodeId  = model.BarCodeId;
                entity.FirstName  = model.FirstName;
                entity.LastName   = model.LastName;
                entity.Address    = model.Address;
                entity.City       = model.City;
                entity.State      = model.State;
                entity.ZipCode    = model.ZipCode;
                entity.Phone      = model.Phone;
                entity.Email      = model.Email;
                entity.NumberKids = model.NumberKids;

                bool rtnBool = true;

                try { ctx.SaveChanges(); }
                catch { rtnBool = false; }

                return(rtnBool);
            }
        }
        // GET: Customer/Update
        public ActionResult Edit(bool isCust, bool isOrder, int id)
        {
            if (isAdminUser() || isAssociateUser() || (isCustomerUser() && isOrder))
            {
                var service = CreateCustomerService();
                var detail  = service.GetCustById(id);
                var model   =
                    new CustUpdate
                {
                    CustomerId = detail.CustomerId,
                    IsOrder    = isOrder,
                    IsCust     = isCust,
                    //BarCodeNumber = new BarCode(),
                    BarCodeId  = detail.BarCodeId,
                    FirstName  = detail.FirstName,
                    LastName   = detail.LastName,
                    Address    = detail.Address,
                    City       = detail.City,
                    State      = detail.State,
                    ZipCode    = detail.ZipCode,
                    Phone      = detail.Phone,
                    Email      = detail.Email,
                    NumberKids = detail.NumberKids
                };
                var userId         = User.Identity.GetUserId();
                var barCodeService = new BarCodeService(userId);

                // BarCodeId is null here if created by a Customer using Barcode Number of 0
                int barCodeIdParm = 0;
                if (detail.BarCodeId == null)
                {
                    barCodeIdParm       = 0;
                    model.BarCodeNumber = 0;
                }
                else
                {
                    barCodeIdParm = (int)model.BarCodeId;
                    var barCodeDetail = barCodeService.GetBarCodeById(barCodeIdParm);
                    model.BarCodeNumber = barCodeDetail.BarCodeNumber;
                }

                ViewBag.BarCodeId = BuildBarCodeDropdown(barCodeIdParm);

                return(View(model));
            }

            return(RedirectToAction("Index", "Home"));
        }
        public List <Response> UpdateCustomerInfo([FromBody] CustUpdate data)
        {
            Response        finalresult = new Response();
            List <Response> Customer    = new List <Response>();
            string          result      = "Successful ";
            SqlConnection   con         = new SqlConnection(con2);
            SqlCommand      cmd         = new SqlCommand("UpdateCustomerInfo", con);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@CustomerID", data.CustomerID);
            cmd.Parameters.AddWithValue("@FirstName", data.FirstName);
            cmd.Parameters.AddWithValue("@LastName", data.LastName);
            cmd.Parameters.AddWithValue("@PhoneNumber", data.PhoneNumber);
            cmd.Parameters.AddWithValue("@Email", data.Email);
            con.Open();
            int i = cmd.ExecuteNonQuery();

            con.Close();
            finalresult.response = result.ToString();
            Customer.Add(finalresult);
            return(Customer);
        }
        public ActionResult Edit(int id, CustUpdate model)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.BarCodeId = BuildBarCodeDropdown((int)model.BarCodeId);
                return(View(model));
            }

            if (model.CustomerId != id)
            {
                ModelState.AddModelError("", "Id Mismatch");
                ViewBag.BarCodeId = BuildBarCodeDropdown((int)model.BarCodeId);
                return(View(model));
            }

            var service = CreateCustomerService();

            int barCodeIdParm = 0;

            if (model.BarCodeId != null)
            {
                barCodeIdParm = (int)model.BarCodeId;
            }

            CustDetail existingCustDetail = service.GetCustByBarCodeId(barCodeIdParm);

            if (existingCustDetail.BarCodeNumber != 0 && existingCustDetail.CustomerId != id)
            {
                ModelState.AddModelError("", $"BarCode '{existingCustDetail.BarCodeNumber}' is already assigned to {existingCustDetail.FirstName} {existingCustDetail.LastName}.");

                ViewBag.BarCodeId = BuildBarCodeDropdown((int)model.BarCodeId);

                return(View(model));
            }
            if (service.UpdateCust(model))
            {
                if (model.IsOrder)
                {
                    var userId             = User.Identity.GetUserId();
                    var orderHeaderService = new OrderService(userId);

                    var existingOrderHeader = orderHeaderService.GetOrderHeaderByCustId(id, false);
                    if (existingOrderHeader.OrderId == 0)
                    {
                        // Order does not Exist
                        return(RedirectToAction(actionName: "Create", controllerName: "Order", routeValues: new { CustId = id, IsCust = model.IsCust }));
                    }
                    // Order Exists
                    if (existingOrderHeader.PullStartedAt != null)
                    {
                        TempData["SaveResult"] = "We are assembling your order now. Your order can no longer be changed.";
                        return(RedirectToAction("Index", "Home"));
                    }
                    return(RedirectToAction(actionName: "Edit", controllerName: "Order", routeValues: new { Id = existingOrderHeader.OrderId, IsCust = model.IsCust }));
                }
                TempData["SaveResult"] = $"'{model.FirstName} {model.LastName}' was updated.";
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", $"'{model.FirstName} {model.LastName}' could not be updated.");

            ViewBag.BarCodeId = BuildBarCodeDropdown((int)model.BarCodeId);

            return(View(model));
        }