예제 #1
0
        public async Task <IEnumerable <GetFriendsResponse> > Handle(GetFriendsQuery request, CancellationToken cancellationToken)
        {
            _logger.LogInformation("GetFriendsQueryHandler was called");

            var friends = await _repository.FindAsync(cancellationToken);

            if (!friends.Any())
            {
                _notificationContext.AddNotification("Nenhum Amigo Encontrado", "Não existe nenhum amigo no Banco de Dados :(");
                return(default);
예제 #2
0
        public async void VerifyGhostFriendships()
        {
            var body = new GetFriendsQuery()
            {
                UserId = 1
            };

            HttpResponseMessage response = await _client.GetAsync(UsersUrl + "/3/friends");

            response.EnsureSuccessStatusCode();
            IEnumerable <UserModel> friends = await response.DeserializeCollection <UserModel>();

            Assert.True(friends.All(user => user.Id == 1));
        }
        public async Task <IList <FriendModel> > Handle(GetFriendsQuery request, CancellationToken cancellationToken)
        {
            var currentUserId = _currentUserService.GetUserIdOrThrow();

            var requestedBy = await _dbContext.Friendships
                              .Where(x => x.RequestedById == currentUserId)
                              .Select(x => new FriendModel
            {
                Id       = x.RequestedTo.Id,
                Name     = x.RequestedTo.Name.FullName,
                Gender   = x.RequestedTo.Gender.ToString(),
                Approved = x.Approved
            })
                              .AsNoTracking()
                              .ToListAsync(cancellationToken);

            var requestedTo = await _dbContext.Friendships
                              .Where(x => x.RequestedToId == currentUserId)
                              .Select(x => new FriendModel
            {
                Id       = x.RequestedBy.Id,
                Name     = x.RequestedBy.Name.FullName,
                Gender   = x.RequestedBy.Gender.ToString(),
                Approved = x.Approved
            })
                              .AsNoTracking()
                              .ToListAsync(cancellationToken);

            var friends = requestedBy.Union(requestedTo).ToList();

            foreach (var friend in friends)
            {
                friend.IsOnline = _connectedUsersService.ConnectedUsers
                                  .Any(x => x.UserId == friend.Id);
            }

            return(friends);
        }