示例#1
0
        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);
        }
示例#2
0
 /// <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));
 }