public async Task <IActionResult> Add([FromRoute] string userId, [FromBody] AddUserAttributeModel addUserAttribute) { Result result = await _userAttributeService.Add(userId, addUserAttribute); if (result.Failure) { ModelState.AddErrors(result); return(BadRequest(ModelState)); } return(Ok(new EmptyResult())); }
public async Task <Result> Add(string userId, AddUserAttributeModel addUserAttribute) { ValidationResult validationResult = _addUserAttributeValidator.Validate(addUserAttribute); if (!validationResult.IsValid) { _logger.LogWarning($"Invalid {typeof(AddUserAttributeModel).Name} model"); return(Result.Fail(validationResult.Errors)); } BaseSpecification <AppUserEntity> userSpecification = new BaseSpecification <AppUserEntity>(); userSpecification.AddFilter(x => x.Id == userId); bool userExist = await _userRepository.Exist(userSpecification); if (!userExist) { _logger.LogError($"No User. UserId {userId}"); return(Result.Fail("no_user", "No User")); } BaseSpecification <UserAttributeEntity> keyAlreadyExistsSpecification = new BaseSpecification <UserAttributeEntity>(); keyAlreadyExistsSpecification.AddFilter(x => x.UserId == userId); keyAlreadyExistsSpecification.AddFilter(x => x.Key == addUserAttribute.Key); bool keyAlreadyExists = await _userAttributeRepository.Exist(keyAlreadyExistsSpecification); if (keyAlreadyExists) { _logger.LogError($"Key already exists. UserId {userId}, Key {addUserAttribute.Key}"); return(Result.Fail("key_already_exists", "Key already exists")); } UserAttributeEntity userAttribute = new UserAttributeEntity( key: addUserAttribute.Key, value: addUserAttribute.Value, userId: userId); bool addAttributeResult = await _userAttributeRepository.Add(userAttribute); if (!addAttributeResult) { _logger.LogError($"Failed to add user attribute. UserId {userId}"); return(Result.Fail("failed_to_add_user_attribute", "Failed to add user attribute")); } return(Result.Ok(userAttribute)); }