public async Task <ActionResult> Create(PersonalModel model) { model.Sexs = Enum.GetValues(typeof(Sex)).Cast <Sex>().Select(v => v.ToString()).ToList().ToSelectList(); model.Polyclinics = (await _polyclinicService.GetAllAsync()).ToSelectList(); model.Positions = (await _positionService.GetAllAsync()).ToSelectList(); if (ModelState.IsValid) { if (await _personaltService.FindAsync(s => s.UserInfo.FirstName.ToLower() == model.FirstName.ToLower() && s.UserInfo.LastName.ToLower() == model.LastName.ToLower() && s.UserInfo.SurName.ToLower() == model.SurName.ToLower() && s.UserInfo.Birthday == model.Birthday && s.PolyclinicId == model.PolyclinicId) != null) { ModelState.AddModelError(string.Empty, "Такой пользователь уже существует в системе. Пожалуйста, введите другие параметры!"); } if (await _personaltService.FindAsync(s => s.UserInfo.PhoneNumber.ToLower() == model.PhoneNumber.ToLower()) != null) { ModelState.AddModelError("PhoneNumber", "Такой пользователь уже существует в системе. Пожалуйста, введите другой номер телефона!"); } else if (await _personaltService.FindAsync(s => s.UserInfo.Email.ToLower() == model.Email.ToLower()) != null) { ModelState.AddModelError("Email", "Такой пользователь уже существует в системе. Пожалуйста, введите другой эл. адрес почты!"); } else if (await _personaltService.FindAsync(s => s.UserInfo.UserName.ToLower() == model.UserName.ToLower()) != null) { ModelState.AddModelError("UserName", "Такой пользователь уже существует в системе. Пожалуйста, введите другой логин!"); } else { var personalRole = RoleManager.Roles.FirstOrDefault(s => s.Name == "Personal"); model.DateRegistration = DateTime.Now; if (personalRole != null) { model.RoleId = personalRole.Id; var user = Mapper.Map <PersonalModel, UserInfo>(model); user.RoleInfo = personalRole; user.EmailConfirmed = true; user.PhoneNumberConfirmed = true; var result = await UserManager.CreateAsync(user, model.Password); var role = await RoleManager.FindByIdAsync(user.RoleInfoId); await UserManager.AddToRoleAsync(user.Id, role.Name); if (!await UserManager.IsInRoleAsync(user.Id, role.Name)) { await UserManager.AddToRoleAsync(user.Id, role.Name); } var personal = Mapper.Map <PersonalModel, Personal>(model); personal.UserInfoId = user.Id; await _personaltService.AddAsync(personal); if (result.Succeeded) { return(RedirectToAction("Index", "Personals")); } else { foreach (string error in result.Errors) { ModelState.AddModelError(string.Empty, error); } } } } } return(View(model)); }