Exemple #1
0
        private void Show(UserStruct user)
        {
            Console.Write("The latest post: ");
            if (user.LastPost != null)
            {
                Console.WriteLine($"\n{user.LastPost}");
            }
            else
            {
                Console.WriteLine("None");
            }

            Console.WriteLine($"The number of the latest post's comments: {user.LastPostCommentsCount}");

            Console.Write("The most popular post by comments: ");
            if (user.MostPopularByComms != null)
            {
                Console.WriteLine($"\n{user.MostPopularByComms}");
            }
            else
            {
                Console.WriteLine("None");
            }

            Console.Write("The most popular post by likes: ");
            if (user.MostPopularByLikes != null)
            {
                Console.WriteLine($"\n{user.MostPopularByLikes}");
            }
            else
            {
                Console.WriteLine("None");
            }

            Console.WriteLine($"The number of uncompleted tasks: {user.UnCompletedTasksCount}");
        }
Exemple #2
0
        //Query5:Получить следующую структуру (передать Id пользователя в параметры)
        //		User
        //		Последний пост пользователя(по дате)
        //		Количество комментов под последним постом
        //		Количество невыполненных тасков для пользователя
        //		Самый популярный пост пользователя(там где больше всего комментов с длиной текста больше 80 символов)
        //		Самый популярный пост пользователя(там где больше всего лайков)
        private UserStruct Query5(int userId)
        {
            UserStruct user = new UserStruct();

            try
            {
                var             data  = getDataDelegate.Invoke();
                SomeEntity      usr   = data.Where(u => u.Id == userId).FirstOrDefault();
                List <FullPost> posts = usr.Posts.ToList();

                if (posts != null && posts.Count() > 0)
                {
                    FullPost lastPost = posts.OrderByDescending(p => p.CreatedAt).First();
                    if (lastPost != null)
                    {
                        user.LastPost = lastPost;

                        if (lastPost.Comments != null)
                        {
                            user.LastPostCommentsCount = lastPost.Comments.Count();
                        }
                    }

                    List <FullPost> subresult = posts.OrderByDescending(p => p.Comments.Count())
                                                .Where(c => c.Comments.Where(e => e.Body.Length > 80).Count() > 0)
                                                .ToList();

                    if (subresult != null && subresult.Count() > 0)
                    {
                        user.MostPopularByComms = subresult.GroupJoin(subresult.SelectMany(c => c.Comments),
                                                                      p => p.Id,
                                                                      c => c.PostId,
                                                                      (p, cl) => new
                        {
                            PostItem    = p,
                            CommsCounts = cl.Select(a => a.Body)
                                          .Where(b => b.Length > 80)
                                          .Count()
                        }
                                                                      ).OrderBy(v => v.CommsCounts)
                                                  .Last().PostItem;
                    }



                    user.MostPopularByLikes = posts.OrderByDescending(p => p.Likes).First();
                }
                if (usr.Todos != null)
                {
                    user.UnCompletedTasksCount = usr.Todos.Where(t => t.IsComplete == false).Count();
                }
            }
            catch (Exception ex)
            {
                Console.Clear();
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }

            return(user);
        }