Beispiel #1
0
        public void Create_Should_Return_Fail_Result_For_Invalid_Characters_In_CountryCode(string phoneNumber, string countryCode)
        {
            var userPhoneNumberResult = UserPhoneNumber.Create(phoneNumber, countryCode);

            userPhoneNumberResult.IsSuccessed.Should().BeFalse();
            userPhoneNumberResult.GetErrorString().Should().Be(UserPhoneNumber.Country_Contains_Special_Char);
        }
Beispiel #2
0
        public void Create_Should_Return_Fail_Result_For_PhoneNumber_Longer_Than_Ten_Digits(string phoneNumber, string countryCode)
        {
            var userPhoneNumberResult = UserPhoneNumber.Create(phoneNumber, countryCode);

            userPhoneNumberResult.IsSuccessed.Should().BeFalse();
            userPhoneNumberResult.GetErrorString().Should().Be(UserPhoneNumber.Phonenumber_Should_Not_Exceed_Ten_Characters);
        }
Beispiel #3
0
        public void Create_Should_Return_Fail_Result_For_Invalid_countryCode(string phoneNumber, string countryCode)
        {
            var userPhoneNumberResult = UserPhoneNumber.Create(phoneNumber, countryCode);

            userPhoneNumberResult.IsSuccessed.Should().BeFalse();
            userPhoneNumberResult.GetErrorString().Should().Be(UserPhoneNumber.Country_Code_Should_Not_Be_Null_Or_Empty);
        }
        private static Result <User> BuildUser(UserRegistrationDTO userRegistrationDTO, byte[] randomByteArray)
        {
            var hashingServiceMock = new Mock <IHashingService>();


            var ageResult = Age.Create(userRegistrationDTO.DateOfBirth);
            var lookingForGenderResult = Gender.Create(userRegistrationDTO.LookingFor);
            var matchPreference        = UserMatchPreference.Create(lookingForGenderResult.Value, userRegistrationDTO.MinAge, userRegistrationDTO.MaxAge, userRegistrationDTO.Distance);
            var phoneNumberResult      = UserPhoneNumber.Create(userRegistrationDTO.PhoneNumber, userRegistrationDTO.CountryCode);
            var genderResult           = Gender.Create(userRegistrationDTO.Gender);
            var loctionResult          = Location.Create(userRegistrationDTO.Latitude, userRegistrationDTO.Longitude);


            hashingServiceMock.Setup(x => x.GenerateSalt()).Returns(randomByteArray);
            hashingServiceMock.Setup(x => x.GetHash(userRegistrationDTO.Password, It.IsAny <byte[]>())).Returns(randomByteArray);
            var passwordSalt   = hashingServiceMock.Object.GenerateSalt();
            var passwordHash   = hashingServiceMock.Object.GetHash(userRegistrationDTO.Password, passwordSalt);
            var passwordResult = Password.Create(passwordHash, passwordSalt);

            var result = UserBuilder.Builder()
                         .WithName(userRegistrationDTO.FullName)
                         .WithPhoneNumber(phoneNumberResult.Value)
                         .WithPassword(passwordResult.Value)
                         .WithGender(genderResult.Value)
                         .WithMatchPreference(matchPreference.Value)
                         .WithAge(ageResult.Value)
                         .WithBucketList(userRegistrationDTO.BucketList)
                         .WithFunAndInterestingThings(userRegistrationDTO.FunAndInteresting)
                         .WithSchool(userRegistrationDTO.School)
                         .WithProfession(userRegistrationDTO.Profession)
                         .WithLocation(loctionResult.Value)
                         .Build();

            return(result);
        }
Beispiel #5
0
        public async Task <Result <User> > CreateUserAsync(UserRegistrationDTO userRegistrationDTO)
        {
            if (string.IsNullOrWhiteSpace(userRegistrationDTO.Password))
            {
                return(Result.Fail <User>(Password_Is_Required));
            }

            var ageResult = Age.Create(userRegistrationDTO.DateOfBirth);
            var lookingForGenderResult = Gender.Create(userRegistrationDTO.LookingFor);
            var matchPreference        = UserMatchPreference.Create(lookingForGenderResult.Value, userRegistrationDTO.MinAge, userRegistrationDTO.MaxAge, userRegistrationDTO.Distance);
            var phoneNumberResult      = UserPhoneNumber.Create(userRegistrationDTO.PhoneNumber, userRegistrationDTO.CountryCode);
            var genderResult           = Gender.Create(userRegistrationDTO.Gender);

            var passwordSalt   = _hashingService.GenerateSalt();
            var passwordHash   = _hashingService.GetHash(userRegistrationDTO.Password, passwordSalt);
            var passwordResult = Password.Create(passwordHash, passwordSalt);

            var locationResult = Location.Create(userRegistrationDTO.Latitude, userRegistrationDTO.Longitude);

            var finalResult = Result.Combine(ageResult,
                                             lookingForGenderResult,
                                             matchPreference,
                                             phoneNumberResult,
                                             genderResult,
                                             passwordResult,
                                             locationResult);

            if (!finalResult.IsSuccessed)
            {
                return(Result.Fail <User>(finalResult.GetErrorString()));
            }

            var userResult = UserBuilder.Builder()
                             .WithName(userRegistrationDTO.FullName)
                             .WithPhoneNumber(phoneNumberResult.Value)
                             .WithPassword(passwordResult.Value)
                             .WithGender(genderResult.Value)
                             .WithMatchPreference(matchPreference.Value)
                             .WithAge(ageResult.Value)
                             .WithBucketList(userRegistrationDTO.BucketList)
                             .WithFunAndInterestingThings(userRegistrationDTO.FunAndInteresting)
                             .WithSchool(userRegistrationDTO.School)
                             .WithProfession(userRegistrationDTO.Profession)
                             .WithLocation(locationResult.Value)
                             .Build();

            var setUserInterestsResult = await _userDomainService.SetUserInterests(userResult.Value, userRegistrationDTO.InterestIds);

            if (!setUserInterestsResult.IsSuccessed)
            {
                return(Result.Fail <User>(setUserInterestsResult.GetErrorString()));
            }

            return(userResult);
        }
        public async Task <IHttpActionResult> PutPhoneNumber(PutPhoneNumberBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());

            if (user == null)
            {
                return(null);
            }

            UserPhoneNumber existingPhoneNumber = user.PhoneNumbers.FirstOrDefault(ph => ph.Value == model.OldPhoneNumber);

            if (existingPhoneNumber == null)
            {
                ModelState.AddModelError("OldEmail", $"Номер телефона {model.OldPhoneNumber} не найден");
            }

            if (user.PhoneNumbers.Any(ph => ph.Value == model.NewPhoneNumber))
            {
                ModelState.AddModelError("NewEmail", $"Номер телефона {model.NewPhoneNumber} уже существует");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            user.PhoneNumbers.Remove(existingPhoneNumber);
            DBContext.Entry(existingPhoneNumber).State = EntityState.Deleted;
            user.PhoneNumbers.Add(new UserPhoneNumber()
            {
                Value = model.NewPhoneNumber
            });

            IdentityResult result = await UserManager.UpdateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
        public async Task <IActionResult> ValidateVerificationCode([FromBody] ValidatePhoneVerificationDTO validateDTO)
        {
            if (validateDTO == null)
            {
                return(BadRequest(Constants.CommonErrorMessages.Request_Is_Not_Valid));
            }

            var phoneResult = UserPhoneNumber.Create(validateDTO.PhoneNumber, validateDTO.CountryCode);

            if (!phoneResult.IsSuccessed)
            {
                return(BadRequest(phoneResult.GetErrorString()));
            }

            var result = await _phoneVerificationService.ValidateVerificationCodeAsync(validateDTO.CountryCode, validateDTO.PhoneNumber, validateDTO.VerificationCode);

            if (!result.IsSuccessed)
            {
                return(BadRequest(result.GetErrorString()));
            }

            return(Ok(Constants.PhoneVerifyMessages.Verification_Completed));
        }
 public virtual void SetPhoneNumber(UserPhoneNumber mongoUserPhoneNumber)
 {
     PhoneNumber = mongoUserPhoneNumber;
 }
        public virtual void SetPhoneNumber(string phoneNumber)
        {
            var mongoUserPhoneNumber = new UserPhoneNumber(phoneNumber);

            SetPhoneNumber(mongoUserPhoneNumber);
        }
Beispiel #10
0
 public UserBuilder WithPhoneNumber(UserPhoneNumber phoneNumber)
 {
     this._phoneNumber = phoneNumber;
     return(this);
 }
Beispiel #11
0
        public void Create_Should_Return_Success_Result_For_Valid_phoneNumber_And_countryCode(string phoneNumber, string countryCode)
        {
            var userPhoneNumberResult = UserPhoneNumber.Create(phoneNumber, countryCode);

            userPhoneNumberResult.IsSuccessed.Should().BeTrue();
        }