示例#1
0
        public async Task <MessageVM[]> GetUserConversation(IdentityUserVM loggedinUser, string getSecondUser)
        {
            var toUserId = await _userService.GetUserId(getSecondUser);

            var fromUser = await _chatContext.Conversation
                           .Include(p => p.Message)
                           .Where(p => p.UserId == loggedinUser.Id && p.ToUserId == toUserId)
                           .Select((b) =>
                                   new MessageVM
            {
                Message    = b.Message.Message1,
                Time       = b.Message.Time,
                IsLoggedin = true,
                IdentityId = b.Message.IdentityId
            }).ToArrayAsync();

            var toUser = await _chatContext.Conversation
                         .Include(p => p.Message)
                         .Where(p => p.UserId == toUserId && p.ToUserId == loggedinUser.Id)
                         .Select((b) =>
                                 new MessageVM
            {
                Message    = b.Message.Message1,
                Time       = b.Message.Time,
                IsLoggedin = false,
                IdentityId = b.Message.IdentityId
            }).ToArrayAsync();

            var conversation = fromUser.Concat(toUser).ToArray().OrderBy(e => e.Time).ToArray();

            return(conversation);
        }
示例#2
0
        public IActionResult Index()
        {
            IdentityUser   user  = _userManager.GetUserAsync(User).Result;
            IdentityUserVM model = _mapper.Map <IdentityUserVM>(user);

            return(View(model));
        }
示例#3
0
        public async Task <FriendRequestVM[]> CheckFriendRequests(IdentityUserVM user)
        {
            var toUser = await _userService.GetUserByUserName(user.UserName);

            var requests = await _friendRequestService.CheckFriendRequest(toUser);

            return(requests);
        }
示例#4
0
        private async Task <IDictionary <string, string> > GetFriendsFromDb(IdentityUserVM user)
        {
            var resut = await _chatContext.Friends
                        .Include(e => e.Friend)
                        .Where(p => p.IdentityId == user.Id)
                        .ToDictionaryAsync(p => p.Friend.UserName, i => i.FriendId);

            return(resut);
        }
示例#5
0
        public async Task <FriendsVM[]> GetFriends(IdentityUserVM user)
        {
            var friends = await GetFriendsFromDb(user);

            var viewModel = friends.Select(p => new FriendsVM
            {
                AmountOfFriends = friends.Count(),
                Name            = p.Key,
                IdentityId      = p.Value
            }).ToArray();

            return(viewModel);
        }
示例#6
0
        public async Task <FriendRequestVM[]> CheckFriendRequest(IdentityUserVM user) // todo add Name to DB
        {
            var requests = await _chatContext.FriendRequest
                           .Where(p => p.ToUser == user.Id && p.HasAccepted == null)
                           .Select(e => new FriendRequestVM
            {
                FromUser     = e.FromUser,
                FromUserName = e.FromUserName,
                ToUser       = e.ToUser,
                ToUserName   = user.UserName
            }).ToArrayAsync();

            return(requests);
        }
示例#7
0
        public async Task <IdentityUserVM> GetUserByUserName(string name)
        {
            var result = await _dataContext.Users.Where(p => p.UserName == name)
                         .FirstOrDefaultAsync();

            var viewModel = new IdentityUserVM
            {
                Id       = result.Id,
                UserName = result.UserName,
                Email    = result.Email
            };

            return(viewModel);
        }
示例#8
0
        public async Task <IdentityUserVM> GetloggedinUser()
        {
            var user   = _httpContextAccessor.HttpContext.User;
            var result = await _userManager.GetUserAsync(user);

            var viewModel = new IdentityUserVM
            {
                Id       = result.Id,
                UserName = result.UserName,
                Email    = result.Email
            };

            return(viewModel);
        }