private void TasksList_SelectionChanged(object sender, SelectionChangedEventArgs e) { TaskModel task = TasksList.SelectedItem as TaskModel; if (task != null) { TitleTxt.Text = task.TaskName; bool IsAlreadyFav = UserDB.IsFavouriteTask(task.TaskId, App.CurrentUser); if (!IsAlreadyFav) { UserDB.AddFavouriteTaskIds(task.TaskId, App.CurrentUser); } fav = UserDB.GetFavorite(task.TaskId, App.CurrentUser); StarBtnDetails.DataContext = fav; comments = CommentDB.GetComments(task.TaskId); CommentsList.ItemsSource = comments; AddButton.Tag = task.TaskId; DetailsFrame.Navigate(typeof(DetailView), task, new SuppressNavigationTransitionInfo()); } double Acutalwidth = this.ActualWidth; if (ActualWidth < 700) { TasksList.Visibility = Visibility.Collapsed; ComboboxPanel.Visibility = Visibility.Collapsed; DetailAndDiscussion.Visibility = Visibility.Visible; BackBtn.Visibility = Visibility.Visible; } if (ActualWidth >= 700) { TasksList.Visibility = Visibility.Visible; DetailAndDiscussion.Visibility = Visibility.Visible; } }
public void OnLoaded(TaskModel ZTask) { bool isAlreadyFav = UserDB.IsFavouriteTask(ZTask.TaskId, App.CurrentUser); if (!isAlreadyFav) { UserDB.AddFavouriteTaskIds(ZTask.TaskId, App.CurrentUser); } _favorite = UserDB.GetFavorite(ZTask.TaskId, App.CurrentUser); this.StarBtn.DataContext = _favorite; }
protected override void Context() { _eventPublisher = A.Fake <IEventPublisher>(); _favoriteRepository = A.Fake <IFavoriteRepository>(); _entityPathResolver = A.Fake <IEntityPathResolver>(); _serializationTask = A.Fake <ISerializationTask>(); _dialogCreator = A.Fake <IDialogCreator>(); sut = new FavoriteTask(_favoriteRepository, _entityPathResolver, _eventPublisher, _dialogCreator, _serializationTask); _favorites = new Favorites(); A.CallTo(() => _favoriteRepository.Favorites).Returns(_favorites); }
public static FavoriteTask GetFavorite(long taskId, string userName) { FavoriteTask fav = new FavoriteTask(); var query = DBAdapter.Connection.Table <FavoriteTask>(); foreach (FavoriteTask task in query) { if (task.TaskId == taskId && task.UserName.Equals(userName)) { fav = task; break; } } return(fav); }
public static void AddFavouriteTaskIds(long taskId, string userName) { if (!(UserDB.IsFavouriteTask(taskId, userName))) { FavoriteTask favorite = new FavoriteTask() { TaskId = taskId, UserName = userName, IsFavourite = false }; DBAdapter.Connection.Insert(favorite); } else { var query = DBAdapter.Connection; var comment = query.Table <FavoriteTask>().Where(excomment => excomment.TaskId == taskId && excomment.UserName.Equals(userName)).SingleOrDefault(); comment.IsFavourite = true; query.Update(comment); } }
protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args) { base.OnBackgroundActivated(args); // Run the background task accordingly if (args.TaskInstance.Task.Name.CompareTo(nameof(TileUpdateTask)) == 0) { var activity = new TileUpdateTask(); activity.Run(args.TaskInstance); } else if (args.TaskInstance.Task.Name.CompareTo(nameof(WallpaperUpdateTask)) == 0) { var activity = new WallpaperUpdateTask(); activity.Run(args.TaskInstance); } else if (args.TaskInstance.Task.Name.CompareTo(nameof(LockscreenUpdateTask)) == 0) { var activity = new LockscreenUpdateTask(); activity.Run(args.TaskInstance); } else if (args.TaskInstance.Task.Name.CompareTo("ToastActionTask") == 0) { ToastNotificationActionTriggerDetail d = (ToastNotificationActionTriggerDetail)args.TaskInstance.TriggerDetails; QueryString queryString = QueryString.Parse(d.Argument); switch (queryString["action"]) { case "favorite": var favoriteTask = new FavoriteTask(); favoriteTask.Run(args.TaskInstance); break; case "undoLockscreen": var wallpaperUndoTask = new LockscreenUndoTask(); wallpaperUndoTask.Run(args.TaskInstance); break; case "undoWallpaper": var lockscreenUndoTask = new WallpaperUndoTask(); lockscreenUndoTask.Run(args.TaskInstance); break; default: break; } } else if (args.TaskInstance.Task.Name.StartsWith(nameof(FavoriteTask))) { var activity = new FavoriteTask(); activity.Run(args.TaskInstance); } else if (args.TaskInstance.Task.Name.StartsWith(nameof(WallpaperUndoTask))) { var activity = new WallpaperUndoTask(); activity.Run(args.TaskInstance); } else { var x = args.TaskInstance.Task.Trigger; var details = args.TaskInstance.TriggerDetails as BackgroundTransferCompletionGroupTriggerDetails; var downloads = details.Downloads.ToList(); // TODO: validate the download ToastService.ToastDebug("Download Finished", $"{downloads.Where(o => o.Progress.Status == BackgroundTransferStatus.Completed).Count()}/{downloads.Count} images downloaded successfully."); } }
//проблема с многопоточностью //создаем новый контекст для каждого потока private static void ConnectionThread(FavoriteTask favConnect) { using (RconfigContext ctx = new RconfigContext()) { var task = (from c in ctx.RemoteTasks where c.Id == favConnect.TaskId select c).Single(); List <string> commands = favConnect.Commands; Favorite fav = (from c in ctx.Favorites where c.Id == favConnect.FavoriteId select c).Single(); //данные для подключения к сетевому устройству ConnectionData data = new ConnectionData(); data.address = fav.Address; data.port = fav.Port; data.username = fav.Credential.Username; data.password = fav.Credential.Password; //по типу протоколу выбираем требуемое подключение string protocol = fav.Protocol.Name; Expect.Expect expect; switch (protocol) { case "Telnet": expect = new TelnetMintExpect(data); break; case "SSH": expect = new SshExpect(data); break; //по умолчанию для сетевых устройств протокол Telnet default: expect = new TelnetMintExpect(data); break; } //если объект expect успешно создан if (expect != null) { //выполняем список команд expect.ExecuteCommands(commands); string result = expect.GetResult(); bool success = expect.isSuccess; string error = expect.GetError(); //если успешно сохраняем конфигурацию устройства if (success) { Config config = new Config(); config.Current = result; config.Date = DateTime.Now; fav.Configs.Add(config); } //создаем отчет о проделанном задании Report report = new Report(); report.Date = DateTime.Now; report.Status = success; report.Info = error; report.Task = task; report.Favorite = fav; ctx.Reports.Add(report); ctx.SaveChanges(); //логгирование!!! } } }
//многопоточный вариант обхода и сбора конфигураций с устройств по задаче #region TASK PARALLEL USAGE //возможен конфликт при параллельной вставке данных private static void LoadConfigurationThread(int taskId) { // CancellationToken token; using (RconfigContext context = new RconfigContext()) { var task = (from c in context.RemoteTasks where c.Id == taskId select c).FirstOrDefault(); if (task != null) { List <Task> taskRunnerManager = new List <Task>(); //var tokenSource = new CancellationTokenSource(); // token = tokenSource.Token; //int countFav = 0; //для логгирования??? try { foreach (Favorite fav in task.Favorites) { //STARTED //логгирование!!! //Console.WriteLine("OPERATION started for {0}...", fav.Address); 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); } } } //мультипоточность //устанавливаем соединение FavoriteTask connect = new FavoriteTask(); connect.Commands = commands; connect.FavoriteId = fav.Id; connect.TaskId = task.Id; //логгирование !!! //Console.WriteLine("Connection started for {0} favorites...", countFav++); //создаем задачу и добавляем ее в менеджер Task taskRunner = Task.Factory.StartNew(() => ConnectionThread(connect)); } //дожидаемся пока выполняться все задания foreach (Task taskRunner in taskRunnerManager) { taskRunner.Wait(); // Console.WriteLine("Task {0} finished...", taskRunner.Id); } } catch (Exception ex) { //Console.ForegroundColor = ConsoleColor.Red; // Console.WriteLine(ex.Message); //логгирование } } } }