// GET: Admin/Edit/5
        public ActionResult Edit(long?id, int?page, string sortOrder, string currentFilter, string preColumn)
        {
            int userID = Convert.ToInt32(Session["UserID"] != null ? Session["UserID"].ToString() : "0");   // Convert session user id to integer for comparison and prevent from NULL

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            user    usr  = db.users.Find(id);                       // Find user
            account acct = db.accounts.Find(id);                    // Find account
            var     view = new UserAcctEditViewModels()             // Initialise a view model for passing into view
            {
                User    = usr,
                Account = acct
            };

            if (usr == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Page          = page;                                                                              // Create viewbag variable for current page
            ViewBag.CurrentSort   = sortOrder;                                                                         // Create viewbag variable for current sort
            ViewBag.CurrentFilter = currentFilter;                                                                     // Create viewbag variable for current filter
            ViewBag.PreColumn     = preColumn;                                                                         // Create viewbag variable for filtering column
            ViewBag.UserRoleID    = new SelectList(db.roles, "RoleID", "RoleName", usr.UserRoleID);                    // Pass role selection list with default value
            ViewBag.AcctStatus    = new SelectList(db.accountstatus, "AcctStatID", "AcctStatusName", acct.AcctStatus); // Pass account status selection list with default value
            ViewBag.userName      = (from u in db.users
                                     where (u.UserID == userID)
                                     select u.UserFName).FirstOrDefault().ToString(); // Passing user first name to view

            return(View(view));
        }
        public ActionResult Edit(string page, string sortOrder, string currentFilter, string preColumn, UserAcctEditViewModels uaeModel, string UserRoleID, string AcctStatus)
        {
            int intPage = Convert.ToInt32(page);                                                             // Convert page to integer

            uaeModel.User.UserRoleID    = Convert.ToInt32(UserRoleID != null ? UserRoleID.ToString() : "1"); // Set user role id
            uaeModel.Account.AcctStatus = Convert.ToInt32(AcctStatus != null ? AcctStatus.ToString() : "1"); // Set account status

            if (ModelState.IsValid)                                                                          // Update user and account
            {
                db.Entry(uaeModel.User).State    = EntityState.Modified;
                db.Entry(uaeModel.Account).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index", new { sucMsg = "User modified", page = intPage, sortOrder = sortOrder, currentFilter = currentFilter, preColumn = preColumn }));    // Go back to list and display successful message
            }

            int userID = Convert.ToInt32(Session["UserID"] != null ? Session["UserID"].ToString() : "0");                          // Convert session user id to integer for comparison and prevent from NULL

            ViewBag.Page          = intPage;                                                                                       // Create viewbag variable for current page
            ViewBag.CurrentSort   = sortOrder;                                                                                     // Create viewbag variable for current sort
            ViewBag.CurrentFilter = currentFilter;                                                                                 // Create viewbag variable for current filter
            ViewBag.PreColumn     = preColumn;                                                                                     // Create viewbag variable for filtering column
            ViewBag.UserRoleID    = new SelectList(db.roles, "RoleID", "RoleName", uaeModel.User.UserRoleID);                      // Pass role selection list with default value
            ViewBag.AcctStatus    = new SelectList(db.accountstatus, "AcctStatID", "AcctStatusName", uaeModel.Account.AcctStatus); // Pass account status selection list with default value
            ViewBag.userName      = (from u in db.users
                                     where (u.UserID == userID)
                                     select u.UserFName).FirstOrDefault().ToString(); // Passing user first name to view

            return(View(uaeModel));
        }