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()));
        }
Esempio n. 2
0
        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));
        }