public ActionResult FinishResigration(RegisterViewModel model) { User user = new User() { Email = model.Email, Password = model.Password, FirstName = model.FirstName, MiddleName = model.MiddleName, LastName = model.LastName, FacultyNumber = model.FacultyNumber, CardNumber = model.CardNumber, PhoneNumber = model.PhoneNumber, UserType = UserTypes.Customer }; var update = new EntityUpdate(user); update.Attach(UserGroup.ENTITY, UserGroup.DEFAULT_ROLE, model.UserGroup); EntityOperationResult result = null; using (_securityService.BeginSystemContext()) { result = _entityService.Update(update); } if (result.Success) return View("RegisterComplete"); else { IEnumerable<UserGroup> availableGroups = null; using (_securityService.BeginSystemContext()) { var query = new EntityQuery2(UserGroup.ENTITY); query.AllProperties = true; query.WhereIs("UserType", UserTypes.Customer); availableGroups = _entityService.Query(query).Select(e => new UserGroup(e)); } if (result.Errors == null || result.Errors.Count == 0) ModelState.AddModelError("", "Unexpected error occured. Please, try again. If there is still a problem, contact the administrator."); else { foreach (var err in result.Errors) { ModelState.AddModelError("", err.Message); } } var selectedGroup = availableGroups.Single(g => g.Id == model.UserGroup); if (selectedGroup.Name.Equals("Студенти", StringComparison.InvariantCultureIgnoreCase) || selectedGroup.Name.Equals("Преподаватели", StringComparison.InvariantCultureIgnoreCase)) { return View("RegisterStudent", new RegisterStudentViewModel() { UserGroup = model.UserGroup, UserGroupName = selectedGroup.Name }); } else if (selectedGroup.Name.Equals("Външни", StringComparison.InvariantCultureIgnoreCase)) return View("RegisterExternal", new RegisterExternalViewModel() { UserGroup = model.UserGroup, UserGroupName = selectedGroup.Name }); else return View("RegisterOther", new RegisterViewModel() { UserGroup = model.UserGroup, UserGroupName = selectedGroup.Name }); } }
public ActionResult RegisterOther(RegisterViewModel model) { if (!ModelState.IsValid) { return View(model); } else return FinishResigration(model); }