private void MainMenuProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (request.IsBackward) { usersDailyTasks[userId] = null; } else if (!usersDailyTasks.ContainsKey(userId) || usersDailyTasks[userId] == null) { var datesCount = GetUsersDateTimesCount(userId); var dates = GetUsersDateTimes(userId, datesCount); var tasksOnDates = dates .Select(d => { var tasksCount = GetUsersTasksCountByDate(userId, d); return(Tuple.Create(d, GetAllTasksOnDate(userId, d, tasksCount))); }) .ToList(); usersDailyTasks[userId] = new DailyTasks(tasksOnDates); mainMenu.Options[0].Options = usersDailyTasks[userId] .GetAllDateTimes() .Select(d => new ThemeListsMenu() { MenuName = d.ToString(), MenuType = MenuType.Menu, Options = null, PreviousMenu = mainMenu.Options[0], ProcessData = ChooseTaskNumberProcessData, RequestFormat = ExpectingRequestFormat.Number }) .ToList(); } }
private void AddNewTaskOnExistingDateProcessName(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { if (usersDailyTasks[userId].GetAllTasksOnDate(usersCurrentDateTimes[userId]).Contains(request.Text)) { currentMenu.MenuName = "Такое дело уже существует, введите другое"; currentMenu.Options = new List <ThemeListsMenu>() { currentMenu }; } else { currentMenu.MenuName = "Введите название дела"; currentMenu.Options = new List <ThemeListsMenu>() { currentMenu.PreviousMenu }; usersDailyTasks[userId].AddNewTask(usersCurrentDateTimes[userId], request.Text); SaveTasksOnDate(userId, usersCurrentDateTimes[userId], usersDailyTasks[userId].GetAllTasksOnDate(usersCurrentDateTimes[userId])); } } else { currentMenu.MenuName = "Введите название дела"; currentMenu.Options = new List <ThemeListsMenu>() { currentMenu.PreviousMenu }; } }
private void AddNewDateProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { var inputedDay = request.DateTime; var newDate = new DateTime(inputedDay.Year, inputedDay.Month, inputedDay.Day); if (usersDailyTasks[userId].GetAllDateTimes().Contains(newDate)) { currentMenu.MenuName = "Такая дата уже существует"; currentMenu.Options = new List <ThemeListsMenu> { currentMenu }; } else { currentMenu.MenuName = "Добавить новую дату"; currentMenu.Options = new List <ThemeListsMenu> { currentMenu.PreviousMenu }; usersDailyTasks[userId].AddNewDate(newDate); SaveDates(userId, usersDailyTasks[userId].GetAllDateTimes()); } } else { currentMenu.MenuName = "Добавить новую дату"; currentMenu.Options = new List <ThemeListsMenu> { currentMenu.PreviousMenu }; } }
private void ChooseTaskNumberProcessData(ThemeListsMenu currentMenu, UiRequest request) { if (!request.IsBackward) { usersCurrentTaskNumbers[request.UserId] = request.Number; } }
private void AddNewTaskProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { if (request.Number == 2) { var dates = usersDailyTasks[userId].GetAllDateTimes(); currentMenu.Options[1].Options = dates .Select(d => new ThemeListsMenu() { MenuName = d.ToString(), MenuType = MenuType.RequestForData, Options = new List <ThemeListsMenu> { currentMenu }, PreviousMenu = currentMenu, ProcessData = AddNewTaskOnExistingDateProcessName, RequestFormat = ExpectingRequestFormat.Text }) .ToList(); } } }
public ThemeListsMenu GetMenuTree(ThemeListsMenu root) { var addTaskSecondMenu = new ThemeListsMenu() { MenuName = "Введите дату и время дедлайна", MenuType = MenuType.RequestForData, ProcessData = ProcessNewTaskDateTime, RequestFormat = ExpectingRequestFormat.DateTime, Options = null }; var addTaskFirstMenu = new ThemeListsMenu() { MenuName = "Добавление нового дела", MenuType = MenuType.RequestForData, ProcessData = ProcessNewTaskName, RequestFormat = ExpectingRequestFormat.Text, Options = null }; var tasksListMenu = new ThemeListsMenu() { MenuName = "Ваши дела с дедлайном", MenuType = MenuType.Menu, Options = null, ProcessData = ChooseListItemProcessData, RequestFormat = ExpectingRequestFormat.Number }; var mainMenu = new ThemeListsMenu() { MenuName = "Дела с дедлайном", MenuType = MenuType.Menu, Options = new List <ThemeListsMenu>() { tasksListMenu, addTaskFirstMenu }, PreviousMenu = root, ProcessData = MenuProcessData, RequestFormat = ExpectingRequestFormat.Number }; addTaskSecondMenu.PreviousMenu = addTaskFirstMenu; addTaskSecondMenu.Options = new List <ThemeListsMenu>() { mainMenu }; addTaskFirstMenu.PreviousMenu = mainMenu; addTaskFirstMenu.Options = new List <ThemeListsMenu>() { addTaskSecondMenu }; tasksListMenu.PreviousMenu = mainMenu; this.mainMenu = mainMenu; return(mainMenu); }
private void AddNewTaskOnExistingDateProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { usersCurrentDateTimes[userId] = usersDailyTasks[userId].GetAllDateTimes()[request.Number - 1]; } }
private void ListItemProcessData(ThemeListsMenu currentMenu, UiRequest request) { if (request.Number == 1) { usersLists[request.UserId].DeleteTask(usersCurrentListItems[request.UserId] - 1); SaveAllTasks(request.UserId, usersLists[request.UserId].GetAllTasksTuples().ToList()); mainMenu.Options[0].Options[usersCurrentListItems[request.UserId] - 1].Options[0] = mainMenu; } }
private void TaskNameChangeProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { var date = usersCurrentDateTimes[userId]; usersDailyTasks[userId].ChangeTaskName(date, usersCurrentTaskNumbers[userId] - 1, request.Text); SaveTasksOnDate(userId, date, usersDailyTasks[userId].GetAllTasksOnDate(date)); } }
private void MenuProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (request.IsBackward) { if (usersLists.ContainsKey(userId)) { if (usersLists[userId] != null) { SaveAllTasks(userId, usersLists[userId].GetAllTasksTuples().ToList()); } } usersLists[userId] = null; } else { usersLists[userId] = new DeadlineTasks(GetAllTasks(userId).ToArray()); var tasks = usersLists[userId].GetAllTasks(); var tasksOptions = tasks .Select(t => new ThemeListsMenu() { MenuName = "Дело сделано!", MenuType = MenuType.Menu, Options = new List <ThemeListsMenu> { }, PreviousMenu = null, ProcessData = null, RequestFormat = ExpectingRequestFormat.Number }) .ToList(); mainMenu.Options[0].Options = tasks .Select((task, i) => { var itemMenu = new ThemeListsMenu { MenuName = task, MenuType = MenuType.Menu, Options = new List <ThemeListsMenu> { tasksOptions[i] }, PreviousMenu = mainMenu.Options[0], ProcessData = ListItemProcessData, RequestFormat = ExpectingRequestFormat.Number }; tasksOptions[i].PreviousMenu = itemMenu; return(itemMenu); }) .ToList(); } }
public ThemeLists(List <ICorrectThemeList> lists) { this.lists = lists; usersMenu = new Dictionary <int, ThemeListsMenu>(); initialMenu = new ThemeListsMenu() { MenuName = GetName(), Options = new List <ThemeListsMenu>(), PreviousMenu = null, MenuType = MenuType.Menu, RequestFormat = ExpectingRequestFormat.Number }; BuildMenuTree(); }
private void TaskNumberProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { if (request.Number == 1) { var date = usersCurrentDateTimes[userId]; usersDailyTasks[userId].DeleteTask(date, usersCurrentTaskNumbers[userId] - 1); SaveTasksOnDate(userId, date, usersDailyTasks[userId].GetAllTasksOnDate(date)); currentMenu.Options[0] = mainMenu; } } }
private void ChooseTaskToWatchProcessData(ThemeListsMenu currentMenu, UiRequest request) { var userId = request.UserId; if (!request.IsBackward) { usersCurrentDateTimes[userId] = usersDailyTasks[userId].GetAllDateTimes()[request.Number - 1]; currentMenu.Options[request.Number - 1].Options = usersDailyTasks[userId] .GetAllTasksOnDate(usersCurrentDateTimes[userId]) .Select(t => new ThemeListsMenu() { MenuName = t, MenuType = MenuType.Menu, Options = new List <ThemeListsMenu> { new ThemeListsMenu() { MenuName = "Дело сделано!", }, new ThemeListsMenu() { MenuName = "Изменить название дела", MenuType = MenuType.RequestForData, Options = new List <ThemeListsMenu> { mainMenu }, PreviousMenu = currentMenu, ProcessData = TaskNameChangeProcessData, RequestFormat = ExpectingRequestFormat.Text } }, PreviousMenu = currentMenu.Options[request.Number - 1], ProcessData = TaskNumberProcessData, RequestFormat = ExpectingRequestFormat.Number }) .ToList(); } }
public ThemeListsMenu GetMenuTree(ThemeListsMenu root) { mainMenu = new ThemeListsMenu() { MenuName = "ежедневные дела", MenuType = MenuType.Menu, Options = null, PreviousMenu = root, ProcessData = MainMenuProcessData, RequestFormat = ExpectingRequestFormat.Number }; var watchTasksMenu = new ThemeListsMenu() { MenuName = "Ваши дела по датам", MenuType = MenuType.Menu, Options = null, PreviousMenu = mainMenu, ProcessData = ChooseTaskToWatchProcessData, RequestFormat = ExpectingRequestFormat.Number }; var addNewTaskMenu = new ThemeListsMenu() { MenuName = "Добавить новое дело", MenuType = MenuType.Menu, Options = null, PreviousMenu = mainMenu, ProcessData = AddNewTaskProcessData, RequestFormat = ExpectingRequestFormat.Number }; var addNewDateMenu = new ThemeListsMenu() { MenuName = "Добавить новую дату", MenuType = MenuType.RequestForData, Options = new List <ThemeListsMenu>() { addNewTaskMenu }, PreviousMenu = addNewTaskMenu, ProcessData = AddNewDateProcessData, RequestFormat = ExpectingRequestFormat.OnlyDayDateTime }; var addNewTaskOnExistingDateMenu = new ThemeListsMenu() { MenuName = "Добавить новое дело на существующую дату", MenuType = MenuType.Menu, Options = null, PreviousMenu = addNewTaskMenu, ProcessData = AddNewTaskOnExistingDateProcessData, RequestFormat = ExpectingRequestFormat.Number }; addNewTaskMenu.Options = new List <ThemeListsMenu> { addNewDateMenu, addNewTaskOnExistingDateMenu }; mainMenu.Options = new List <ThemeListsMenu> { watchTasksMenu, addNewTaskMenu }; return(mainMenu); }