public ActionResult UserAdd()
        {
            Account model = new Account();

            IEnumerable<SelectListItem> categories = _employeeRepositoryAsync.Query().Select().ToList()
                .Select(s => new SelectListItem
                {
                    Value = s.Id.ToString(),
                    Text = s.Fullname
                });
            ViewBag.EmployeeId = new SelectList(categories, "Value", "Text");

            IEnumerable<SelectListItem> roles = _roleRepositoryAsync.Query().Select().ToList()
                .Select(s => new SelectListItem
                {
                    Value = s.Id.ToString(),
                    Text = s.RoleType
                });
            ViewBag.RoleId = new SelectList(roles, "Value", "Text");

            return View("Edit", model);
        }
        public ActionResult UserEdit(Account model)
        {
            IEnumerable<SelectListItem> categories = _employeeRepositoryAsync.Query().Select().ToList()
                .Select(s => new SelectListItem
                {
                    Value = s.Id.ToString(),
                    Text = s.Fullname
                });
            ViewBag.EmployeeId = new SelectList(categories, "Value", "Text");

            IEnumerable<SelectListItem> roles = _roleRepositoryAsync.Query().Select().ToList()
                .Select(s => new SelectListItem
                {
                    Value = s.Id.ToString(),
                    Text = s.RoleType
                });
            ViewBag.RoleId = new SelectList(roles, "Value", "Text");

            if (ModelState.IsValid)
            {
                if (model.Id == 0)
                {
                    var account = _accountRepositoryAsync
                        .Query(e => e.Username == model.Username)
                        .Include(r => r.Role)
                        .Select()
                        .SingleOrDefault();

                    if (account != null)
                    {
                        ModelState.AddModelError("Username", "Username already exists!");
                    }
                    else
                    {
                        var password = AccountHelpers.HashPassword(model.Password);
                        model.Salt = password.Salt;
                        model.Password = password.HashPassword;
                        _accountRepositoryAsync.Insert(model);
                        _unitOfWorkAsync.SaveChanges();
                        return RedirectToAction("Index", "User");
                    }
                }
                else
                {
                    var account = _accountRepositoryAsync
                        .Query(e => e.Username == model.Username)
                        .Include(r => r.Role)
                        .Select()
                        .SingleOrDefault();

                    if (account != null)
                    {
                        if (account.Id != model.Id)
                        {
                            ModelState.AddModelError("Username", "Username already exists!");
                        }
                    }
                    else
                    {
                        if (model.Password != "")
                        {
                            var password = AccountHelpers.HashPassword(model.Password);
                            model.Salt = password.Salt;
                            model.Password = password.HashPassword;
                        }
                        _accountRepositoryAsync.Update(model);
                        _unitOfWorkAsync.SaveChanges();
                        return RedirectToAction("Index", "User");
                    }
                }

            }

            return View("Edit", model);
        }