Beispiel #1
0
        public async Task <Result <User> > RegisterUserAsync(UserRegistrationDTO userRegistrationDTO)
        {
            var existingUserResult = await _userRepository.GetUserByPhoneNumber(userRegistrationDTO.PhoneNumber);

            if (existingUserResult.IsSuccessed)
            {
                return(Result.Fail <User>(UserErrorMessages.User_Already_Exists_With_Given_Phone_Number));
            }

            var userResult = await _userFactory.CreateUserAsync(userRegistrationDTO);

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

            _userRepository.Create(userResult.Value);
            var saveResult = await _userRepository.SaveChangesAsync(Failed_To_Save_User);

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

            _mediator.Publish(new UserCreated(userResult.Value));

            return(Result.Ok(userResult.Value));
        }