public ActionResult EditUser(int id) { LibraryManagementSystemContext context = new LibraryManagementSystemContext(); UsersRepository usersRepository = new UsersRepository(context); RolesRepository rolesRepository = new RolesRepository(context); UsersEditUserVM model = new UsersEditUserVM(); if (id > 0) { User user = usersRepository.GetAll(filter: u => u.ID == id, includeProperties: "Roles").FirstOrDefault(); PopulateAssignedRoles(user, rolesRepository); model.ID = user.ID; model.PersonalNumber = user.PersonalNumber; model.Password = user.Password; model.FirstName = user.FirstName; model.Email = user.Email; model.Address = user.Address; model.LastName = user.LastName; model.Birthday = user.Birthday; model.DateIn = user.DateIn; if (user.DateOut != null) { model.DateOut = user.DateOut.Value; } } else { model.Email = " "; User user = new User(); user.Roles = new List<Role>(); PopulateAssignedRoles(user, rolesRepository); } return View(model); }
public ActionResult EditUser(UsersEditUserVM model, string[] assignedRoles) { LibraryManagementSystemContext context = new LibraryManagementSystemContext(); ModelState.Remove("DateOut"); UsersRepository usersRepositoryContext = new UsersRepository(context); if (model.Email != null && usersRepositoryContext.GetAll().Any(u => u.Email == model.Email) && model.ID != usersRepositoryContext.GetAll(filter: u => u.Email == model.Email).FirstOrDefault().ID) { ModelState.AddModelError("Email", "* email already exists"); } if (model.ID <= 0 && string.IsNullOrEmpty(model.Password)) { this.ModelState.AddModelError("Password", "* password required"); } if (!this.ModelState.IsValid) { RolesRepository rolesRepository = new RolesRepository(context); var allRoles = rolesRepository.GetAll(); List<AssignedRolesVM> assignedRolesViewModel = new List<AssignedRolesVM>(); foreach (var role in allRoles) { assignedRolesViewModel.Add(new AssignedRolesVM { ID = role.ID, Name = role.Name, IsAssigned = false }); } ViewBag.Roles = assignedRolesViewModel; return View(model); } TryUpdateModel(model); User user = null; using (UnitOfWork unitOfWork = new UnitOfWork(context)) { try { UsersRepository usersRepositoryUnitOfWork = new UsersRepository(unitOfWork); RolesRepository rolesRepository = new RolesRepository(unitOfWork); if (model.ID > 0) { user = usersRepositoryUnitOfWork.GetAll(filter: u => u.ID == model.ID, includeProperties: "Roles").FirstOrDefault(); user.PersonalNumber = model.PersonalNumber; } else { user = new User(); user.Roles = new List<Role>(); user.PersonalNumber = usersRepositoryUnitOfWork.GetAll().LastOrDefault().PersonalNumber + 1; } user.Password = (model.Password != null) && (model.Password.Trim() != String.Empty) ? model.Password.Trim() : user.Password; user.FirstName = model.FirstName; user.Email = model.Email; user.Address = model.Address; user.LastName = model.LastName; user.Birthday = model.Birthday; user.DateIn = model.DateIn; user.DateOut = model.DateOut != null ? model.DateOut : null; UpdateUserRoles(assignedRoles, user, rolesRepository); usersRepositoryUnitOfWork.Save(user); PopulateAssignedRoles(user, rolesRepository); unitOfWork.Commit(); } catch (Exception ex) { unitOfWork.RollBack(); throw ex; } } return RedirectToAction("Index", "Users"); }