Beispiel #1
0
        //Получить список пользователей по алфавиту (по возрастанию) с отсортированными todo items по длине name (по убыванию)
        public static async Task <List <User> > GetUserByAlphabets()
        {
            var allusers = await DataLoad.GetUsers();

            allusers = allusers.OrderBy(x => x.Name).ToList <User>();

            foreach (var item in allusers)
            {
                item.Todos = item.Todos.OrderByDescending(x => x.Name.Length).ToList <Todo>();
            }
            return(allusers);
        }
Beispiel #2
0
        //Получить список(id, name) из списка todos которые выполнены для конкретного пользователя(по айди)
        public static async Task <List <TodoList> > GetTodosList(int id)
        {
            List <TodoList> todoLists = new List <TodoList>();
            var             alltodos  = await DataLoad.GetTodos();

            alltodos = alltodos.Where(x => x.UserId == id).ToList <Todo>();

            foreach (var todo in alltodos)
            {
                todoLists.Add(new TodoList {
                    Id = todo.Id, Name = todo.Name
                });
            }

            return(todoLists);
        }
Beispiel #3
0
        /*Получить следующую структуру (передать Id поста в параметры)
         * Пост
         * Самый длинный коммент поста
         * Самый залайканный коммент поста
         * Количество комментов под постом где или 0 лайков или длина текста < 80*/
        public static async Task <List <PostSelection> > GetPostSelections(int id)
        {
            List <PostSelection> postSelections = new List <PostSelection>();
            var allposts = await DataLoad.GetPosts();

            foreach (var item in allposts.Where(x => x.Id == id))
            {
                var comment = item.Comments.Where(x => x.Likes == 0 || x.Body.Length > 80).ToList <Comment>();

                postSelections.Add(new PostSelection
                {
                    post              = item,
                    LongestComment    = item.Comments.OrderByDescending(x => x.Body.Length).First(),
                    CommentByMostLike = item.Comments.OrderByDescending(x => x.Likes).First(),
                    CommentAmount     = (uint)comment.Count
                });
            }

            return(postSelections);
        }
Beispiel #4
0
        //Получить количество комментов под постами конкретного пользователя(по айди) (список из пост-количество)
        public static async Task <List <AmountComment> > GetAmountComment(int id)
        {
            List <AmountComment> amountComments = new List <AmountComment>();
            var allposts = await DataLoad.GetPosts();

            allposts = allposts.Where(x => x.UserId == id).ToList <Post>();

            foreach (var posts in allposts)
            {
                uint i = 0;
                foreach (var comment in posts.Comments)
                {
                    i++;
                }
                amountComments.Add(new AmountComment {
                    post = posts, count = i
                });
            }
            return(amountComments);
        }
Beispiel #5
0
        /*Получить следующую структуру(передать Id пользователя в параметры)
         * User
         * Последний пост пользователя(по дате)
         * Количество комментов под последним постом
         * Количество невыполненных тасков для пользователя
         * Самый популярный пост пользователя(там где больше всего комментов с длиной текста больше 80 символов)
         * Самый популярный пост пользователя(там где больше всего лайков)*/
        public static async Task <List <UserSelection> > GetUserSelections(int id)
        {
            List <UserSelection> userSelections = new List <UserSelection>();
            var allusers = await DataLoad.GetUsers();

            foreach (var item in allusers.Where(x => x.Id == id))
            {
                Post last          = item.Posts.OrderByDescending(x => x.CreatedAt).First();
                uint amountComment = 0;
                uint amountTask    = 0;

                foreach (var post in item.Posts.Where(x => x.CreatedAt == last.CreatedAt))
                {
                    foreach (var comment in post.Comments)
                    {
                        amountComment++;
                    }
                }

                foreach (var task in item.Todos)
                {
                    if (task.IsComplete == false)
                    {
                        amountTask++;
                    }
                }

                userSelections.Add(new UserSelection
                {
                    user              = item,
                    lastPost          = last,
                    commentByLastPost = amountComment,
                    unrealizedTask    = amountTask,
                    mostCommentedPost = item.Posts.OrderByDescending(x => x.Comments.Count).First(),
                    postByMostLike    = item.Posts.OrderByDescending(x => x.Likes).First()
                });
            }
            return(userSelections);
        }
Beispiel #6
0
        //Получить список комментов под постами конкретного пользователя (по айди), где body коммента < 50 символов (список из комментов)
        public static async Task <List <Comment> > GetCommentList(int id)
        {
            var allcomment = await DataLoad.GetComments();

            return(allcomment = allcomment.Where(x => x.UserId == id && x.Body.Length < 50).ToList <Comment>());
        }
Beispiel #7
0
        public static async Task Start()
        {
            Console.Clear();

            List <string> menuItems = new List <string>()
            {
                "Получить количество комментов под постами конкретного пользователя (по id)",
                "Получить список комментов под постами конкретного пользователя (по айди), где body коммента < 50 символов",
                "Получить список (id, name) из списка todos которые выполнены для конкретного пользователя (по id)",
                "Получить список пользователей по алфавиту (по возрастанию) с отсортированными todo items по длине name (по убыванию)",
                "Получить уникальную структуру User",
                "Получить уникальную структуру Post"
            };

            Console.CursorVisible = false;
            while (true)
            {
                string selectedMenuItem = Menu.drawMenu(menuItems);

                switch (selectedMenuItem)
                {
                case "Получить количество комментов под постами конкретного пользователя (по id)":
                {
                    Console.Clear();
                    Console.WriteLine("Enter id: ");
                    int id         = Convert.ToInt32(Console.ReadLine());
                    var collection = await DataLoad.GetAmountComment(id);

                    foreach (var item in collection)
                    {
                        Console.WriteLine($"Post   : {item.post}");
                        Console.WriteLine($"Count  : {item.count}");

                        Console.WriteLine(new string('-', 80));
                        Console.ReadKey();
                        Console.Clear();
                    }

                    break;
                }

                case "Получить список комментов под постами конкретного пользователя (по айди), где body коммента < 50 символов":
                {
                    Console.Clear();
                    Console.WriteLine("Enter id: ");
                    int id         = Convert.ToInt32(Console.ReadLine());
                    var collection = await DataLoad.GetCommentList(id);

                    foreach (var item in collection)
                    {
                        Console.WriteLine($"Id     : {item.Id}");
                        Console.WriteLine($"Body   : {item.Body}");

                        Console.WriteLine(new string('-', 80));
                        Console.ReadKey();
                        Console.Clear();
                    }

                    break;
                }

                case "Получить список (id, name) из списка todos которые выполнены для конкретного пользователя (по id)":
                {
                    Console.Clear();
                    Console.WriteLine("Enter id: ");
                    int id         = Convert.ToInt32(Console.ReadLine());
                    var collection = await DataLoad.GetTodosList(id);

                    foreach (var item in collection)
                    {
                        Console.WriteLine($"Id     : {item.Id}");
                        Console.WriteLine($"Name   : {item.Name}");

                        Console.WriteLine(new string('-', 80));
                        Console.ReadKey();
                        Console.Clear();
                    }

                    break;
                }

                case "Получить список пользователей по алфавиту (по возрастанию) с отсортированными todo items по длине name (по убыванию)":
                {
                    Console.Clear();
                    var collection = await DataLoad.GetUserByAlphabets();

                    foreach (var item in collection)
                    {
                        Console.WriteLine($"Id     : {item.Id}");
                        Console.WriteLine($"Name   : {item.Name}");

                        Console.WriteLine(new string('-', 80));
                        Console.ReadKey();
                        Console.Clear();
                    }

                    break;
                }

                case "Получить уникальную структуру User":
                {
                    Console.Clear();
                    Console.WriteLine("Enter id: ");
                    int id         = Convert.ToInt32(Console.ReadLine());
                    var collection = await DataLoad.GetUserSelections(id);

                    foreach (var item in collection)
                    {
                        Console.WriteLine($"Name           : {item.user.Name}");
                        Console.WriteLine($"Post           : {item.lastPost.Body}");
                        Console.WriteLine($"Most commented post:\n {item.mostCommentedPost.Title}");
                        Console.WriteLine($"Most liked post:\n {item.postByMostLike.Title}");
                        Console.WriteLine($"Unrealized task: {item.unrealizedTask}");

                        Console.WriteLine(new string('-', 80));
                        Console.ReadKey();
                        Console.Clear();
                    }

                    break;
                }

                case "Получить уникальную структуру Post":
                {
                    Console.Clear();
                    Console.WriteLine("Enter id: ");
                    int id         = Convert.ToInt32(Console.ReadLine());
                    var collection = await DataLoad.GetPostSelections(id);

                    foreach (var item in collection)
                    {
                        Console.WriteLine($"Post:\n {item.post.Title}");
                        Console.WriteLine($"Comment Amount                 : {item.CommentAmount}");
                        Console.WriteLine($"Comment by most like           : {item.CommentByMostLike}");
                        Console.WriteLine($"Longest comment:\n {item.LongestComment.Body}");

                        Console.WriteLine(new string('-', 80));
                        Console.ReadKey();
                        Console.Clear();
                    }

                    break;
                }

                case "Exit":
                {
                    Environment.Exit(0);
                    break;
                }
                }
            }
        }