private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            DateTime    processStartDate     = DateTime.Now;
            DateTime?   lastProcessStartDate = null;
            QueryRunner queryRunner          = (QueryRunner)e.Argument;

            try
            {
                SyncTaskStatus syncTaskStatus = SyncTasksManager.GetInstance().GetLastSyncTaskStatus(queryRunner.Task);
                if (syncTaskStatus != null)
                {
                    lastProcessStartDate = syncTaskStatus.StartTime;
                }
                SyncTasksManager.GetInstance().SaveProcessStatus(queryRunner.Task.ProcessID, "Exporting items", null);
                SyncTasksManager.GetInstance().ExportSyncTaskItems(queryRunner.Task, true, true, true, queryRunner.backgroundWorker, lastProcessStartDate, 0);
                SyncTasksManager.GetInstance().SaveProcessStatus(queryRunner.Task.ProcessID, "Processing export items", null);
                SyncTasksManager.GetInstance().ProcessSyncTaskExportFiles(queryRunner.Task, queryRunner.backgroundWorker);
                SyncTasksManager.GetInstance().SaveProcessStatus(queryRunner.Task.ProcessID, "Importing items", null);
                SyncTasksManager.GetInstance().ImportSyncTaskItems(queryRunner.Task, queryRunner.Task.ShouldSkipUpdates, new string[] { }, queryRunner.backgroundWorker);
                SyncTasksManager.GetInstance().SaveSyncTaskStatus(queryRunner.Task, processStartDate, DateTime.Now, true, string.Empty);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "QueryRunner");
                SyncTasksManager.GetInstance().SaveProcessStatus(queryRunner.Task.ProcessID, "Failed, check log", null);
            }

            queryRunner.State = RunnerState.Complete;
        }
Beispiel #2
0
        private void SyncBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            object[] arguments = (object[])e.Argument;

            SyncTask syncTask = (SyncTask)arguments[0];
            bool     shouldImportListItems = (bool)arguments[1];
            bool     shouldExportListItems = (bool)arguments[2];
            bool     shouldImportDocuments = (bool)arguments[3];
            bool     shouldExportDocuments = (bool)arguments[4];
            bool     shouldSkipUpdates     = (bool)arguments[5];
            int      includeVersionsLimit  = (int)arguments[6];

            string[] excludeFields = (string[])arguments[7];

            try
            {
                SyncTasksManager.GetInstance().ExportSyncTaskItems(syncTask, shouldExportListItems, shouldExportDocuments, shouldImportListItems, SyncBackgroundWorker, null, includeVersionsLimit);

                if (shouldImportListItems == true)
                {
                    SyncTasksManager.GetInstance().ProcessSyncTaskExportFiles(syncTask, SyncBackgroundWorker);
                    SyncTasksManager.GetInstance().ImportSyncTaskItems(syncTask, shouldSkipUpdates, excludeFields, SyncBackgroundWorker);
                }

                string folderPath = ConfigurationManager.GetInstance().GetSyncTaskFolder(syncTask);
                System.Diagnostics.Process.Start("explorer.exe", folderPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show("An error occured:" + ex.Message + Environment.NewLine + "StackTrace:" + ex.StackTrace);
                Logger.Error(ex, "ProcessSyncTaskExport");
            }
        }
Beispiel #3
0
        public static void PerformRequests()
        {
            lock (lockObject)
            {
                IEnumerable <QueryRunner> normal = from QueryRunner runner in QueuedRequests where runner.State == RunnerState.New select runner;
                if ((DateTime.Now - LastQueuePerformed).TotalSeconds > 10)
                {
                    //logger.Info(String.Format("Performing request for QueuedRequests.Count:{0}...", QueuedRequests.Count));
                    //logger.Info(String.Format("Performing request for High.Count:{0}...", high.Count()));
                    //logger.Info(String.Format("Performing request for Normal.Count:{0}...", normal.Count()));
                    LastQueuePerformed = DateTime.Now;
                }

                foreach (QueryRunner runner in normal)
                {
                    bool isTaskInProgress = (from QueryRunner inProgressRunner in QueuedRequests
                                             where runner.Task.ID == inProgressRunner.Task.ID && inProgressRunner.State == RunnerState.InProgress
                                             select runner).Count() > 0 ? true : false;
                    if (isTaskInProgress == true)
                    {
                        continue;
                    }

                    SyncTasksManager.GetInstance().SaveProcessStatus(runner.Task.ProcessID, "Started", null);
                    //logger.Info(String.Format("Performing request for {0} RetriedCount:{1}...", runner.Request.TargetMeter.ToLogString(), runner.RetryCount));
                    runner.RunAsync();
                }
            }
        }
        private void RefreshButton_Click(object sender, RoutedEventArgs e)
        {
            SLExcelData processedData = SyncTasksManager.GetInstance().GetProcessData(SyncTask.ID, SyncTask.ProcessID, IsCompleted);

            if (processedData == null)
            {
                SyncTask syncTask = SyncTasksManager.GetInstance().SyncTasks.Where(t => t.ProcessID == SyncTask.ProcessID).FirstOrDefault();
                if (syncTask != null)
                {
                    List <ProgressItem> progressItems = new List <ProgressItem>();
                    progressItems.Add(new ProgressItem()
                    {
                        Action  = "Synchronization",
                        Message = SyncTask.DestinationListName,
                        Status  = syncTask.Status,
                        Path    = ""
                    });

                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        TasksDataGrid.ItemsSource = null;
                        TasksDataGrid.ItemsSource = progressItems;
                    }));
                }
            }
            else
            {
                try
                {
                    List <ProgressItem> progressItems = new List <ProgressItem>();
                    foreach (List <string> datarow in processedData.DataRows)
                    {
                        progressItems.Add(new ProgressItem()
                        {
                            Action  = datarow[0],
                            Message = datarow[2],
                            Status  = datarow[1],
                            Path    = datarow[4]
                        });
                    }

                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        TasksDataGrid.ItemsSource = null;
                        TasksDataGrid.ItemsSource = progressItems;
                    }));
                }
                catch (Exception ex)
                {
                }
            }
        }
Beispiel #5
0
        private void DeleteTaskButton_Click(object sender, RoutedEventArgs e)
        {
            List <SyncTask> synctasks = new List <SyncTask>();

            foreach (object synchTask in TasksDataGrid.SelectedItems)
            {
                SyncTask _synchTask = (SyncTask)synchTask;
                SyncTasksManager.GetInstance().SyncTasks.Remove(_synchTask);
            }

            SyncTasksManager.GetInstance().SaveSyncTasks();
            RefreshButton_Click(null, null);
        }
Beispiel #6
0
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            DateTime       processStartDate     = DateTime.Now;
            DateTime?      lastProcessStartDate = null;
            QueryRunner    queryRunner          = (QueryRunner)e.Argument;
            SyncTaskStatus syncTaskStatus       = SyncTasksManager.GetInstance().GetLastSyncTaskStatus(queryRunner.Task);

            if (syncTaskStatus != null)
            {
                lastProcessStartDate = syncTaskStatus.StartTime;
            }
            SyncTasksManager.GetInstance().ExportSyncTaskItems(queryRunner.Task, true, true, true, queryRunner.backgroundWorker, lastProcessStartDate, 0);
            SyncTasksManager.GetInstance().ProcessSyncTaskExportFiles(queryRunner.Task, queryRunner.backgroundWorker);
            SyncTasksManager.GetInstance().ImportSyncTaskItems(queryRunner.Task, queryRunner.Task.ShouldSkipUpdates, new string[] { }, queryRunner.backgroundWorker);
            SyncTasksManager.GetInstance().SaveSyncTaskStatus(queryRunner.Task, processStartDate, DateTime.Now, true, string.Empty);
            queryRunner.State = RunnerState.Complete;
        }
Beispiel #7
0
        private void RefreshButton_Click(object sender, RoutedEventArgs e)
        {
            if (HistoryDatePicker.SelectedDate.HasValue == false)
            {
                HistoryDatePicker.SelectedDate = DateTime.Now;
            }

            List <SyncTask> synctasks = SyncTasksManager.GetInstance().SyncTasks;

            TasksDataGrid.ItemsSource = null;
            TasksDataGrid.ItemsSource = synctasks;

            List <SyncTask> pastSynctasks = SyncTasksManager.GetInstance().GetSyncTaskHistories(HistoryDatePicker.SelectedDate.Value);

            PastTasksDataGrid.ItemsSource = null;
            PastTasksDataGrid.ItemsSource = pastSynctasks;
        }
Beispiel #8
0
        private void ProgressButton_Click(object sender, RoutedEventArgs e)
        {
            string   taskId   = ((Button)e.Source).Tag.ToString();
            SyncTask syncTask = SyncTasksManager.GetInstance().SyncTasks.Where(t => t.ID.ToString().Equals(taskId, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

            if (syncTask == null)
            {
                MessageBox.Show("Task not found");
                return;
            }

            SyncTaskProgressForm form = new SyncTaskProgressForm();

            form.SyncTask    = syncTask;
            form.IsCompleted = true;
            form.ShowDialog(this.ParentWindow, "Progress", false, true);
        }
Beispiel #9
0
        private void EditButton_Click(object sender, RoutedEventArgs e)
        {
            string   taskId   = ((Button)e.Source).Tag.ToString();
            SyncTask syncTask = SyncTasksManager.GetInstance().SyncTasks.Where(t => t.ID.ToString().Equals(taskId, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

            if (syncTask == null)
            {
                MessageBox.Show("Task not found");
                return;
            }

            SyncCopyListWizardForm syncCopyListWizardForm = new SyncCopyListWizardForm();

            syncCopyListWizardForm.Initialize(syncTask);
            if (syncCopyListWizardForm.ShowDialog(this.ParentWindow, "Data Import Wizard", false, true) == true)
            {
            }
        }
Beispiel #10
0
        public static void EnqueueRequests(DateTime referenceTime)
        {
            if (IsEnqueueInProgress == true)
            {
                return;
            }

            IsEnqueueInProgress = true;
            try
            {
                var time = referenceTime.TimeOfDay;
                //List<SyncTask> synctasks = SyncTasksManager.GetInstance().GetTestListItemSyncTasks().ToList();
                IEnumerable <SyncTask> synctasks = SyncTasksManager.GetInstance().SyncTasks.Where(t => t.Scheduled == true);

                foreach (var synctask in synctasks)
                {
                    QueryRunner queryRunner = QueuedRequests.Where(t => t.Task.ID == synctask.ID).FirstOrDefault();
                    if (queryRunner == null)
                    {
                        SyncTasksManager.GetInstance().SaveProcessStatus(synctask.ProcessID, "Queued", referenceTime);
                        EnqueAction(synctask);
                    }
                    else if (synctask.ScheduleInterval == 0 && queryRunner.State == RunnerState.Complete)
                    {
                        QueuedRequests.Remove(queryRunner);
                        SyncTasksManager.GetInstance().AddSyncTaskHistory(synctask);
                        SyncTasksManager.GetInstance().SaveProcessStatus(synctask.ProcessID, "Completed", referenceTime);
                        SyncTasksManager.GetInstance().RemoveProcess(synctask.ProcessID);
                    }
                    else if (queryRunner.Task.LastRunStartDate.AddSeconds(synctask.ScheduleInterval) < DateTime.Now && queryRunner.State == RunnerState.Complete)
                    {
                        SyncTasksManager.GetInstance().AddSyncTaskHistory(synctask);
                        QueuedRequests.Remove(queryRunner);
                        SyncTasksManager.GetInstance().SaveProcessStatus(synctask.ProcessID, "Queued", referenceTime);
                        EnqueAction(synctask);
                    }
                }
            }
            catch (Exception ex)
            {
            }

            IsEnqueueInProgress = false;
        }
        private void SyncBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            object[] arguments = (object[])e.Argument;

            SyncTask syncTask = (SyncTask)arguments[0];

            try
            {
                //SyncTasksManager.GetInstance().ExportSyncTaskItems(syncTask, shouldExportListItems, shouldExportDocuments, shouldImportListItems, SyncBackgroundWorker, null);

                //SyncTasksManager.GetInstance().ProcessSyncTaskExportFiles(syncTask, SyncBackgroundWorker);
                SyncTasksManager.GetInstance().ImportSyncTaskItems(syncTask, false, new string[] { }, SyncBackgroundWorker);

                string folderPath = ConfigurationManager.GetInstance().GetSyncTaskFolder(syncTask);
                System.Diagnostics.Process.Start("explorer.exe", folderPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show("An error occured:" + ex.Message + Environment.NewLine + "StackTrace:" + ex.StackTrace);
                Logger.Error(ex, "ProcessSyncTaskExport");
            }
        }
Beispiel #12
0
        public static void EnqueueRequests(DateTime referenceTime)
        {
            var time = referenceTime.TimeOfDay;
            //List<SyncTask> synctasks = SyncTasksManager.GetInstance().GetTestListItemSyncTasks().ToList();
            List <SyncTask> synctasks = SyncTasksManager.GetInstance().SyncTasks.Where(t => t.Scheduled == true).ToList();

            foreach (var synctask in synctasks)
            {
                QueryRunner queryRunner = QueuedRequests.Where(t => t.Task.ID == synctask.ID).FirstOrDefault();
                if (queryRunner == null)
                {
                    SyncTasksManager.GetInstance().SaveProcessStatus(synctask.ProcessID, "Queued", referenceTime);
                    EnqueAction(synctask);
                }
                else if (queryRunner.Task.LastRunStartDate.AddSeconds(synctask.ScheduleInterval) < DateTime.Now && queryRunner.State == RunnerState.Complete)
                {
                    QueuedRequests.Remove(queryRunner);
                    SyncTasksManager.GetInstance().SaveProcessStatus(synctask.ProcessID, "Completed", referenceTime);
                    EnqueAction(synctask);
                }
            }
        }
Beispiel #13
0
        private void ScheduleNextButton_Click(object sender, RoutedEventArgs e)
        {
            SyncTask.ScheduleInterval  = 0;
            SyncTask.ShouldSkipUpdates = SkipUpdateEventsCheckBox.IsChecked.Value;
            if (RunOnceRadioButtonYes.IsChecked == false)
            {
                int frequency = 0;
                if (int.TryParse(FrequencyTextBox.Text, out frequency) == false)
                {
                    MessageBox.Show("This should be a numeric value");
                    //FrequencyTextBox.Select();
                    FrequencyTextBox.Focus();
                    return;
                }

                SyncTask.ScheduleInterval = frequency * 60 * 1000;
            }
            SyncTask.Scheduled = true;
            SyncTask.Status    = "Awaiting to be queued";
            Logger.Error("17", "SyncCopyListWizardForm");
            if (IsInEditMode == false)
            {
                SyncTasksManager.GetInstance().AddSyncTask(SyncTask);
            }
            Logger.Error("18", "SyncCopyListWizardForm");
            SyncTasksManager.GetInstance().SaveSyncTasks();
            Logger.Error("19", "SyncCopyListWizardForm");
            MessageBox.Show("Synchronization has started.");
            this.Close(true);

            Logger.Error("20", "SyncCopyListWizardForm");
            SyncTaskProgressForm form = new SyncTaskProgressForm();

            form.SyncTask    = SyncTask;
            form.IsCompleted = false;
            form.ShowDialog(null, "Progress", false, true);
        }
Beispiel #14
0
 public void Initialize()
 {
     SyncTasksComboBox.Items.Clear();
     SyncTasksComboBox.DisplayMemberPath = "Name";
     SyncTasksComboBox.ItemsSource       = SyncTasksManager.GetInstance().SyncTasks;
 }