public async Task <UserModel> RegisterAsync(RegistrationModel model) { var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, Phones = model.Phones.Select(phone => new UserPhone { PhoneNumber = _phoneRepository.GetE164Format(phone.PhoneNumber), PhoneType = (PhoneType)Enum.Parse(typeof(PhoneType), phone.PhoneType), UserId = new ApplicationUser().Id }).ToList(), IsActive = true, IsVerifyRequired = true, LockoutEnabled = true }; var appUser = await _userManager.FindByNameAsync(user.UserName); if (appUser != null) { if (appUser.UserName == user.UserName) { throw new BadRequestException(HttpStatusCode.BadRequest.ToString(), "User already exists with the username. Please choose a different username"); } } var identityResult = await _userManager.CreateAsync(user, model.Password); if (!identityResult.Succeeded) { throw new BadRequestException(string.Join(Environment.NewLine, identityResult.Errors)); } identityResult = await _userManager.AddToRoleAsync(user.Id, "Basic"); if (!identityResult.Succeeded) { throw new BadRequestException(string.Join(Environment.NewLine, identityResult.Errors)); } var userModel = new UserModel(); _mapper.Map <ApplicationUser, UserModel>(user, userModel); return(userModel); }
/// <summary> /// Return E164 formated phone number. Throw Exception if phone number is not valid /// </summary> /// <param name="phoneNumber"></param> /// <returns></returns> public string GetE164Format(string phoneNumber) { return(_phoneRepository.GetE164Format(phoneNumber)); }