private FriendsViewModel GetFriends(int page=1)
        {
            var currentUser = manager.FindById(User.Identity.GetUserId());

            var friendsId = currentUser.Friends
                           .Select(x => x.FriendId);

            var friends = repository.ApplicationUsers
                                .Where(u => friendsId.Contains(u.Id))
                                .OrderBy(u => u.Id)
                                .Skip((page - 1) * FriendsPerPage)
                                .Take(FriendsPerPage);

            var model = new FriendsViewModel
            {
                Friends = friends,
                PagingInfo = new PagingInfo
                {
                    TotalPages = (int)Math.Ceiling((decimal)friendsId.Count() / FriendsPerPage),
                    TotalItems = friendsId.Count(),
                }
            };
            TempData["InfoMessage"] = currentUser.FirstName+"'s "+"Friends" + " - " + model.PagingInfo.TotalItems;

            return model;
        }
        private FriendsViewModel GetConversations(int page = 1)
        {
            var currentUser = manager.FindById(User.Identity.GetUserId());

            var conversbySend = repository.UserMessages
                           .Where(m => m.SenderId == currentUser.Id)
                           .Select(x => x.ReceiverId)
                           .ToList();

            var conversbyReceiv = repository.UserMessages
                             .Where(m => m.ReceiverId == currentUser.Id)
                             .Select(x => x.SenderId);

            conversbySend.AddRange(conversbyReceiv);

            var conversations = repository.ApplicationUsers
                               .Where(u => conversbySend.Contains(u.Id))
                               .OrderBy(u => u.Id)
                               .Skip((page - 1) * ConversationsPerPage)
                               .Take(ConversationsPerPage);

            var count = repository.ApplicationUsers
                               .Where(u => conversbySend.Contains(u.Id)).Count();

            var model = new FriendsViewModel
            {
                Friends = conversations,
                PagingInfo = new PagingInfo
                {
                    TotalPages = (int)Math.Ceiling((decimal)count / ConversationsPerPage),
                    TotalItems = count,
                }

            };
            TempData["InfoMessage"] = "Conversations" + " - " + model.PagingInfo.TotalItems;

            return model;
        }
Exemplo n.º 3
0
        //GET: DisplayUsers
        public ActionResult DisplayUsers(SearchViewModel model,int page=1)
        {
            var users = repository.ApplicationUsers;
            var currentUser = manager.FindById(User.Identity.GetUserId());

            var adminsId = repository.UserRoles.Select(x => x.UserId);
            var admins = repository.ApplicationUsers.Where(u => adminsId.Contains(u.Id)).Select(u => u);
            users = users.Except(admins);

            if (model.FirstName != null)
                users = users.Where(u => u.FirstName == model.FirstName);

            if (model.LastName != null)
                users = users.Where(u => u.LastName == model.LastName);

            if (model.Age != null)
                users = users.Where(u => u.Age == model.Age);

            if (model.Country != null)
                users = users.Where(u => u.Country == model.Country);

            if (model.City != null)
                users = users.Where(u => u.City == model.City);

            if (users.Count() == 0)
                TempData["InfoMessage"] = "No user for this search";

            var foundUsers = new FriendsViewModel
            {
                Friends = users.OrderBy(u=>u.Id).Skip((page - 1) * UsersPerPage)
                .Take(UsersPerPage),

                PagingInfo = new PagingInfo
                {
                    TotalItems = users.Count(),
                    ItemsPerPage = UsersPerPage,
                    CurrentPage = page,
                }
            };

            return View(foundUsers);
        }