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(); } }
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)); }
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()); } }