Example #1
0
        private void ContextMenu_Delete_Handler(object sender, EventArgs e)
        {
            SchedulerItem item = (SchedulerItem)SchedularView.Rows[_contextMenuLocation.RowIndex].Tag;

            _manager.ScheduleData.SchedulerList.Remove(item);

            ShowSchedules();
        }
Example #2
0
        private void AddScheduleBtn_Click(object sender, EventArgs e)
        {
            SchedulerItem item = new SchedulerItem()
            {
                Active    = false,
                Success   = false,
                Error     = false,
                Timestamp = DateTime.Now
            };

            _manager.ScheduleData.SchedulerList.Add(item);
            ShowSchedules();
        }
Example #3
0
        private void ContextMenu_Copy_Handler(object sender, EventArgs e)
        {
            SchedulerItem item = (SchedulerItem)SchedularView.Rows[_contextMenuLocation.RowIndex].Tag;

            SchedulerItem newItem = new SchedulerItem()
            {
                Active      = false,
                Success     = false,
                Error       = false,
                Timestamp   = item.Timestamp,
                Destination = item.Destination,
                Filename    = item.Filename
            };

            _manager.ScheduleData.SchedulerList.Add(newItem);

            ShowSchedules();
        }
Example #4
0
        private void SchedularView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            int rowIndex = e.RowIndex;

            if (rowIndex == -1)
            {
                return;
            }

            SchedulerItem   item = _manager.ScheduleData.SchedulerList[rowIndex];
            DataGridViewRow row  = SchedularView.Rows[rowIndex];

            switch (e.ColumnIndex)
            {
            case SCHEDULE_COL_ACTIVE:
                item.Active = (bool)row.Cells[SCHEDULE_COL_ACTIVE].Value;
                break;

            case SCHEDULE_COL_SUCCESS:
                item.Success = (bool)row.Cells[SCHEDULE_COL_SUCCESS].Value;
                break;

            case SCHEDULE_COL_ERROR:
                item.Error = (bool)row.Cells[SCHEDULE_COL_ERROR].Value;
                break;

            case SCHEDULE_COL_DATE:
            case SCHEDULE_COL_TIME:
                DateTime date = (DateTime)row.Cells[SCHEDULE_COL_DATE].Value;
                DateTime time = (DateTime)row.Cells[SCHEDULE_COL_TIME].Value;
                item.Timestamp = new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
                break;

            case SCHEDULE_COL_DEST:
                item.Destination = (string)row.Cells[SCHEDULE_COL_DEST].Value;
                break;

            case SCHEDULE_COL_FILE:
                item.Filename = (string)row.Cells[SCHEDULE_COL_FILE].Tag;
                break;
            }

            ShowSchedules();
        }
Example #5
0
        private void ScheduleTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (_schedulerActive || ScheduleData?.SchedulerList == null)
            {
                return;
            }

            _schedulerActive = true;

            DateTime now = DateTime.Now;

            //bool changed = false;
            for (int i = 0; i < ScheduleData.SchedulerList.Count; i++)
            {
                SchedulerItem item = ScheduleData.SchedulerList[i];
                if (!item.Active || item.Success || item.Error)
                {
                    continue;
                }

                if (!item.Executable)
                {
                    item.Error = true;
                    //changed = true;
                    continue;
                }

                if (item.Timestamp <= now)
                {
                    if (item.Retries > 0 && item.LastRetry != null)
                    {
                        // retry after 10 seconds
                        if (Helper.MilliDiff(item.LastRetry.Value) < 10000)
                        {
                            break;
                        }
                    }

                    SchedulerActive = i;
                    Changed?.Invoke();

                    DoSchedule(item);
                    if (item.Success)
                    {
                        item.Success = true;
                        item.Active  = false;
                        SaveScheduler();
                        Changed?.Invoke();
                    }
                    else
                    {
                        item.LastRetry = DateTime.Now;
                        item.Retries++;
                        if (item.Retries >= Constants.SCHEDULER_MAX_RETRIES)
                        {
                            item.Error  = true;
                            item.Active = false;
                            SaveScheduler();
                            Changed?.Invoke();
                        }
                    }

                    SchedulerActive = -1;
                }
            }
            _schedulerActive = false;
        }
Example #6
0
        public void DoSchedule(SchedulerItem item)
        {
            ScheduleEventArgs args = new ScheduleEventArgs(item);

            Schedule?.Invoke(args);
        }