コード例 #1
0
        private async Task ValidateUserContactAsync(AddUserToContactDto addUserToContactDto, CancellationToken ct)
        {
            User contact = await _unitOfWork.UserRepository.GetAsync(addUserToContactDto.UserId, ct);

            if (contact == null)
            {
                _logger.LogWarning("User with id {UserId} not found", addUserToContactDto.ContactId);
                throw new UserNotFoundException();
            }

            UserContact dbUserContact = await _unitOfWork.UserContactRepository.GetUserContactAsync(
                addUserToContactDto.UserId,
                addUserToContactDto.ContactId,
                ct);

            if (dbUserContact != null)
            {
                _logger.LogWarning(
                    "User with id {UserId} already has contact with Id {ContactId}",
                    addUserToContactDto.UserId,
                    addUserToContactDto.ContactId);

                throw new UserAlreadyInContactException();
            }
        }
コード例 #2
0
        public async Task <GetUserContactDto> AddUserToContactAsync(AddUserToContactDto addUserToContactDto, CancellationToken ct = default)
        {
            _logger.LogInformation("Add user contact {@UserContact}", addUserToContactDto);

            await ValidateUserContactAsync(addUserToContactDto, ct);

            UserContact userContact = _mapper.Map <UserContact>(addUserToContactDto);

            DateTime currentDate = DateTime.UtcNow;

            userContact.CreatedAt = userContact.UpdatedAt = currentDate;

            _unitOfWork.UserContactRepository.Create(userContact);

            await _unitOfWork.CommitAsync(ct);

            return(_mapper.Map <GetUserContactDto>(userContact));
        }
コード例 #3
0
        public async Task <IActionResult> AddNewContactAsync([FromBody] AddUserToContactDto userContact)
        {
            try
            {
                userContact.UserId = User.GetUserId();

                GetUserContactDto result = await _userContactService.AddUserToContactAsync(userContact);

                return(Ok(result));
            }
            catch (UserNotFoundException)
            {
                return(BadRequest());
            }
            catch (UserAlreadyExistsException)
            {
                return(BadRequest());
            }
        }