Beispiel #1
0
        public async Task <Content <Boolean> > UpdateUserEmailAsync(Int32 id, String newEmail)
        {
            var resultContent = new Content <Boolean>();

            try
            {
                if (id <= 0)
                {
                    var message = $"Unable to {nameof(UpdateUserEmailAsync)} for {nameof(user)} {id} - id must be > 0";
                    resultContent.AppendError(new ArgumentOutOfRangeException(), message);
                    _logger_.LogError(message);
                }
                else if (String.IsNullOrEmpty(newEmail))
                {
                    var message = $"Unable to {nameof(UpdateUserEmailAsync)} for {nameof(user)} {id} - email cant be empty.";
                    resultContent.AppendError(new ArgumentException(), message);
                    _logger_.LogError(message);
                }
                else
                {
                    var userContent = await GetUserWithSensitiveDataAsync(id);

                    if (userContent.HasError)
                    {
                        resultContent.AppendError(userContent.Errors);
                    }
                    else
                    {
                        var newEmailHashed = BCrypt.Net.BCrypt.HashPassword(newEmail, _appSettings_.Secret);
                        if (String.Equals(newEmailHashed, userContent.Data.Email, StringComparison.InvariantCulture))
                        {
                            var message = $"Unable to {nameof(UpdateUserEmailAsync)} of {nameof(user)} - new value same as the old one";
                            resultContent.AppendError(new ArgumentException(), message);
                            _logger_.LogError(message);
                        }
                        else
                        {
                            await _endUserRepository_.UpdateUserEmailAsync(id, newEmailHashed);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                var message = $"Unable to {nameof(UpdateUserEmailAsync)} of {nameof(user)} with id {id}";
                resultContent.AppendError(e, message);
                _logger_.LogError(e, message);
            }
            return(resultContent);
        }