public async Task <FriendDto> Create(FriendInvitationDto dto) { var friend = new Friend(Guid.Parse("00000000-0000-0000-0001-000000000000"), dto.FriendId, dto.Name); var model = await _friendsRepository.Create(friend); return(new FriendDto { Id = model.Id, FriendId = model.FriendId, FriendName = model.Name, IsAccepted = model.IsAccepted }); }
public async Task <FriendDto> Create(Guid userId, Guid friendUserId) { if (Equals(userId, friendUserId)) { throw new Exception("Failed to create friend request, cannot invite yourself"); } if (await _repository.Exists(userId, friendUserId)) { throw new Exception("A friends connection or request already exists between these users"); } var friend = Friend.Create(userId, friendUserId); if (await _repository.Create(friend)) { friend = await _repository.GetSingle(friend.Id); var invitee = await _usersRepository.Get(userId); PublicFriendInvitationReceivedEvent(friendUserId, invitee.Name); return(friend?.ToDto()); } return(null); }
public async Task AcceptFriendInvite(FriendInvite sendRequest, bool accept) { Player player = await _playerRepository.GetByUsername(sendRequest.targetPlayerId); if (player == null) { throw new EntityNotFoundException(); } FriendInvite request = await _requestsRepository.GetByUsernames(sendRequest.playerId, sendRequest.targetPlayerId); if (request == null) { throw new FriendRequestNotFound(); } if (accept) { PlayerFriend friend = new PlayerFriend(sendRequest.playerId, sendRequest.targetPlayerId); await _friendListRepository.Create(friend); } await _requestsRepository.Delete(sendRequest); }