Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }