// GET: Customers/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Customer customer = db.Customers.Find(id);

            if (customer == null)
            {
                return(HttpNotFound());
            }
            RegisterAuthenticationViewModel viewModel = new RegisterAuthenticationViewModel()
            {
                CustomerId = customer.User.Id,
                Username   = customer.User.Username,
                Password   = customer.User.Password,
                FirstName  = customer.User.FirstName,
                Surname    = customer.User.Surname,
                Email      = customer.Email,
                NameOnCard = customer.CreditCard.NameOnCard,
                CardNumber = customer.CreditCard.CardNumber,
                ExpiryDate = customer.CreditCard.ExpiryDate,
                CCV        = customer.CreditCard.CCV
            };

            return(View(viewModel));
        }
        public ActionResult Edit(RegisterAuthenticationViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                Customer customerOriginal = db.Customers.Find(viewModel.CustomerId);
                customerOriginal.User.FirstName        = viewModel.FirstName;
                customerOriginal.User.Surname          = viewModel.Surname;
                customerOriginal.User.Username         = viewModel.Username;
                customerOriginal.User.Password         = viewModel.Password;
                customerOriginal.Email                 = viewModel.Email;
                customerOriginal.CreditCard.NameOnCard = viewModel.NameOnCard;
                customerOriginal.CreditCard.CardNumber = viewModel.CardNumber;
                customerOriginal.CreditCard.CCV        = viewModel.CCV;
                customerOriginal.CreditCard.ExpiryDate = viewModel.ExpiryDate;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult Register(RegisterAuthenticationViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                if (!db.Users.Any(u => u.Username.Equals(viewModel.Username)))
                {
                    Customer customer = new Customer()
                    {
                        User = new User()
                        {
                            FirstName = viewModel.FirstName,
                            Surname   = viewModel.Surname,
                            Username  = viewModel.Username,
                            Password  = viewModel.Password,
                            UserRole  = db.UserRoles.FirstOrDefault(u => u.Role.Equals("Customer"))
                        },
                        CreditCard = new CreditCard()
                        {
                            NameOnCard = viewModel.NameOnCard,
                            CardNumber = viewModel.CardNumber,
                            CCV        = viewModel.CCV,
                            ExpiryDate = viewModel.ExpiryDate
                        },
                        Email        = viewModel.Email,
                        ShoppingCart = new ShoppingCart()
                    };
                    db.Customers.Add(customer);
                    db.SaveChanges();
                    TempData["MessageClass"] = "alert-success";
                    TempData["Message"]      = "Successful registration.";

                    return(RedirectToAction("Index", "Home"));
                }
                ModelState.AddModelError("", viewModel.Username + " already exists in the system.");
            }
            return(View(viewModel));
        }
        public ActionResult Register()
        {
            RegisterAuthenticationViewModel RegisterAuthenticationViewModel = new RegisterAuthenticationViewModel();

            return(View(RegisterAuthenticationViewModel));
        }
        // GET: Customers/Create
        public ActionResult Create()
        {
            RegisterAuthenticationViewModel viewModel = new RegisterAuthenticationViewModel();

            return(View(viewModel));
        }