public async Task <ActionResult> TimeLine()
        {
            var username       = User.Identity.Name;
            var userByUsername = await DatabaseContext.RegisteredUsers.Find(new BsonDocument {
                { "Account.UserName", username }
            }).ToListAsync();

            var userTradingDetails = await DatabaseContext.LetsTradingDetails.Find(new BsonDocument {
                { "_id", userByUsername[0].Id }
            }).ToListAsync();

            var userTimeLinePosts    = new UserTimeLinePostsList();
            var usersPersonalDetails = await DatabaseContext.RegisteredUsers.Find(_ => true).ToListAsync();

            var usersTradingDetails = await DatabaseContext.LetsTradingDetails.Find(_ => true).ToListAsync();

            var userid = usersPersonalDetails.Find(user => user.Account.UserName.Equals(username)).Id;
            var currentUserPersonalDetails = usersPersonalDetails.Find(user => user.Id.Equals(userid));
            var currentUserTradingDetails  = usersTradingDetails.Find(user => user.Id.Equals(userid));

            usersPersonalDetails.Remove(currentUserPersonalDetails);
            usersTradingDetails.Remove(currentUserTradingDetails);
            userTimeLinePosts.UserTimelinePostsList = GetUserTimelinePosts(usersPersonalDetails, usersTradingDetails);
            userTimeLinePosts.UserTimelinePostsList.Reverse();
            userTimeLinePosts.UserTimelineRecommendedPostsList = GetUserTimelineRecommendedPosts(userTradingDetails[0], usersPersonalDetails, usersTradingDetails);
            return(View("TimeLine", userTimeLinePosts));
        }
        /// <summary>
        /// This method is used to search for posts on the timeline page of the web application.
        /// </summary>
        /// <param name="searchInput">The string that is being searched</param>
        /// <returns>returns the list of posts that match the search string.</returns>
        public async Task <ActionResult> SearchPosts(string searchInput)
        {
            var isPresent            = false;
            var username             = User.Identity.Name;
            var userTimeLinePosts    = new UserTimeLinePostsList();
            var usersPersonalDetails = await DatabaseContext.RegisteredUsers.Find(_ => true).ToListAsync();

            var usersTradingDetails = await DatabaseContext.LetsTradingDetails.Find(_ => true).ToListAsync();

            var userid = usersPersonalDetails.Find(user => user.Account.UserName.Equals(username)).Id;
            var currentUserPersonalDetails = usersPersonalDetails.Find(user => user.Id.Equals(userid));
            var currentUserTradingDetails  = usersTradingDetails.Find(user => user.Id.Equals(userid));

            usersPersonalDetails.Remove(currentUserPersonalDetails);
            usersTradingDetails.Remove(currentUserTradingDetails);
            userTimeLinePosts.UserTimelinePostsList = new List <UsersTimeLinePost>();
            var tempList = GetUserTimelinePosts(usersPersonalDetails, usersTradingDetails);

            foreach (var post in tempList)
            {
                foreach (var tag in post.Request.Tags)
                {
                    if (string.IsNullOrEmpty(searchInput) || tag.ToLower().Equals(searchInput.ToLower()))
                    {
                        isPresent = true;
                    }
                }

                if (isPresent)
                {
                    userTimeLinePosts.UserTimelinePostsList.Add(post);
                    isPresent = false;
                }
            }
            userTimeLinePosts.UserTimelinePostsList.Reverse();
            return(View("TimeLineFiltered", userTimeLinePosts));
        }