public BaseResponse <GetPasswordResetResponse> CreatePasswordReset(CreatePasswordResetRequest request)
        {
            BaseResponse <GetPasswordResetResponse> response = new BaseResponse <GetPasswordResetResponse>();

            IRestRequest restRequest = new RestRequest("password-resets/{email}", Method.POST);

            restRequest.AddUrlSegment("email", request.Email);
            restRequest.RequestFormat = DataFormat.Json;

            IRestResponse restResponse = this.RestClient.Execute(restRequest);

            return(this.HandleResponse <GetPasswordResetResponse>(restResponse));
        }
        public BaseResponse <GetPasswordResetResponse> CreatePasswordReset(CreatePasswordResetRequest request)
        {
            BaseResponse <GetPasswordResetResponse> response = new BaseResponse <GetPasswordResetResponse>();

            var user = this.UserRepository.GetUser(request.Email);

            if (this.IsUserEligibleForRequestPasswordReset(user))
            {
                this.PasswordResetRepository.CancelActivesPasswordResets(user.UserKey);

                var passwordReset = PasswordReset.New(user.UserKey, this.ConfigurationUtility.PasswordResetExpiresInHours);
                this.PasswordResetRepository.CreatePasswordReset(passwordReset);

                response.StatusCode  = HttpStatusCode.Created;
                response.SuccessBody = PasswordResetMapper.Map(passwordReset, user);
                response.IsSuccess   = true;
            }
            else
            {
                response.StatusCode = HttpStatusCode.NotFound;
            }

            return(response);
        }