//Получить список пользователей по алфавиту (по возрастанию) с отсортированными 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); }
//Получить список(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); }
/*Получить следующую структуру (передать 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); }
//Получить количество комментов под постами конкретного пользователя(по айди) (список из пост-количество) 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); }
/*Получить следующую структуру(передать 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); }
//Получить список комментов под постами конкретного пользователя (по айди), где 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>()); }
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; } } } }