//подгрузка данных при редактировании //не работает!!! private async void LoadPrevData() { var queryRemoteTask=await (from c in context.RemoteTasks where c.Id==prevTaskId select c).FirstOrDefaultAsync(); if (queryRemoteTask != null) { currentTask = queryRemoteTask; textBoxName.Text = currentTask.TaskName; textBoxDesc.Text = currentTask.Description; //указываем выбранные ранее устройства foreach (Favorite fav in queryRemoteTask.Favorites) { int index = checkedListBoxFavorites.Items.IndexOf(fav.Hostname); if (index >= 0) { checkedListBoxFavorites.SetItemChecked(index, true); } } //указываем ранее выбранные команды foreach (Command command in queryRemoteTask.Commands) { int index = checkedListBoxCommands.Items.IndexOf(command.Name); if (index >= 0) { checkedListBoxCommands.SetItemChecked(index, true); } } } }
//сбор данных задачи для исполнения команд private void LoadConfiguration(RemoteTask task) { // Logging("STARTED"); foreach (Favorite fav in task.Favorites) { List<string> commands = new List<string>(); //проходим по списку команд, выявляем соответствие используемой команды и категории избранного //в сортированном списке по ордеру foreach (Command command in task.Commands.OrderBy(c => c.Order)) { foreach (Category category in command.Categories) { if (fav.Category.CategoryName == category.CategoryName) { commands.Add(command.Name); } } } //устанавливаем соединение FavoriteConnect connect = new FavoriteConnect(); connect.commands = commands; connect.favorite = fav; connect.task = task; try { Connection(connect); } catch (Exception ex) { //записать в логи!!! Logging(string.Format("TASK {0} failed!!! Exception: {1}!!!", _taskId, ex.Message)); } } //************************************************************ //создаем событие и уведомляем о том, что все задачи выполнены taskCompleted(); }
//добавить задачу private void TaskAdd() { currentTask = new RemoteTask(); currentTask.TaskName = textBoxName.Text.Trim(); currentTask.Description=textBoxDesc.Text.Trim(); currentTask.Date = DateTime.UtcNow; HashSet<Favorite> favs = new HashSet<Favorite>(); //если устройства выбраны по устройствам if (byFavorite) { foreach (var item in checkedListBoxFavorites.CheckedItems) { string favorite = item.ToString(); var queryFav = (from c in context.Favorites where c.Hostname == favorite select c).FirstOrDefault(); if (queryFav != null) favs.Add(queryFav); } } //по категориям устройств else { foreach (var item in checkedListBoxFavorites.CheckedItems) { string category = item.ToString(); var queryCategory = (from c in context.Categories where c.CategoryName == category select c).FirstOrDefault(); if (queryCategory != null) { foreach (Favorite fav in queryCategory.Favorites) { favs.Add(fav); } } } } currentTask.Favorites = favs; HashSet<Command> commands = new HashSet<Command>(); foreach (var item in checkedListBoxCommands.CheckedItems) { string command = item.ToString(); var queryCommand = (from c in context.Commands where c.Name== command select c).FirstOrDefault(); if (queryCommand != null) commands.Add(queryCommand); } currentTask.Commands = commands; context.RemoteTasks.Add(currentTask); context.SaveChanges(); }