示例#1
0
        private void mnuEditClearLog_Click(object sender, EventArgs e)
        {
            if (grdMain.CurrentRow == null)
            {
                return;
            }
            int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value;

            //проверка, не заблокирована ли запись
            if (LockedRecIDs.Contains(RecID))
            {
                CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется",
                                            "Запись заблокирована");
                return;
            }
            DialogResult Ask = MessageBox.Show("Очистить протокол?", "Очистка протокола",
                                               MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (Ask == DialogResult.No)
            {
                return;
            }


            cTask tmptsk = new cTask(cConfig.dsConfig, "Tasks", RecID);

            tmptsk.ClearLog();
            tmptsk.ToDataSet(cConfig.dsConfig, "Tasks");
            cConfig.SaveConfig();
            Worker.ClearTaskLog(RecID);
        }
示例#2
0
        public bool RunningInCurrentPeriod(cTask tsk)
        {
            string date = GetDate(tsk.GetNextDateTime());

            if (CurrentDate == date)
            {
                return(true);
            }

            return(false);
        }
示例#3
0
        private void mnuEditEdit_Click(object sender, EventArgs e)
        {
            if (grdMain.CurrentRow == null)
            {
                return;
            }

            //Подготовка данных для редактирования
            int   RecID = (int)grdMain.CurrentRow.Cells["ID"].Value;
            cTask Task  = null;

            //проверка, не заблокирована ли запись
            if (LockedRecIDs.Contains(RecID))
            {
                CommonFunctions.InfoMessage("Запись заблокирована, так как данное задание выполняется",
                                            "Запись заблокирована");
                return;
            }

            try
            {
                Task = new cTask(cConfig.dsConfig, "Tasks", RecID);
            }
            catch (Exception ex)
            {
                CommonFunctions.ErrMessage(ex.Message);
                statlblMessages.ForeColor = Color.Red;
                statlblMessages.Text      = "ОШИБКА: " + ex.Message;
                return;
            }

            //форма редактирования
            frmAddTask fAddTask = new frmAddTask();

            fAddTask.fMain = this;
            fAddTask.Task  = Task;
            fAddTask.bEdit = true;
            fAddTask.ShowDialog();
            OnLockRecord   = null;
            OnUnlockRecord = null;

            if (fAddTask.bSuccess)
            {
                FindRows = null; //обнуление поиска

                //отредактированное задание должно быть в очереди на выполнение
                if (Worker.RunningInCurrentPeriod(RecID))
                {
                    Worker.RemoveTask(RecID, false);              //удаляем
                    WorkerErrorLevel wol = Worker.AddTask(RecID); //перезапускаем
                    showworkererror(wol, "Задача сохранена и запущена на выполнение.");
                }
            }
        }
示例#4
0
        private bool OverdueRecord(DateTime curDateTime, int recID)
        {
            cTask tmpTsk = null;

            try
            {
                tmpTsk = new cTask(cConfig.dsConfig, "Tasks", recID);
            }
            catch
            {
                return(false);
            }

            return(tmpTsk.TaskOverdue(curDateTime));
        }
示例#5
0
        private void mnuEditViewLog_Click(object sender, EventArgs e)
        {
            if (grdMain.CurrentRow == null)
            {
                return;
            }
            int RecID = (int)grdMain.CurrentRow.Cells["ID"].Value;

            cTask      tmptsk   = new cTask(cConfig.dsConfig, "Tasks", RecID);
            frmLogView fLogView = new frmLogView();

            fLogView.NoClear = LockedRecIDs.Contains(RecID);
            fLogView.log     = tmptsk.Log;
            fLogView.ShowDialog();
            if (fLogView.bClear)
            {
                tmptsk.ClearLog();
                tmptsk.ToDataSet(cConfig.dsConfig, "Tasks");
                cConfig.SaveConfig();
            }
        }
示例#6
0
        public WorkerErrorLevel CorrectOverdueTime(DateTime startDT)
        {
            cTask tmpTsk = null;

            foreach (int otID in OverdueTaskIDs)
            {
                try
                {
                    tmpTsk = new cTask(cConfig.dsConfig, "Tasks", otID);
                }
                catch (Exception ex)
                {
                    TaskErrMessage = ex.Message;
                    return(WorkerErrorLevel.Error);
                }

                tmpTsk.CorrectOverdueTime(startDT, true);
                tmpTsk.ToDataSet(cConfig.dsConfig, "Tasks");
                tmpTsk = null;
            }
            return(WorkerErrorLevel.OK);
        }
示例#7
0
        public bool RunningInCurrentPeriod(int tskID)
        {
            cTask tmpTsk = null;

            try
            {
                tmpTsk = new cTask(cConfig.dsConfig, "Tasks", tskID);
            }
            catch (Exception ex)
            {
                TaskErrMessage = ex.Message;
                return(false);
            }

            string date = GetDate(tmpTsk.GetNextDateTime());

            if (CurrentDate == date)
            {
                return(true);
            }

            return(false);
        }
示例#8
0
        public WorkerErrorLevel RunOverdueTasks()
        {
            cTask tmpTsk = null;

            foreach (int otID in OverdueTaskIDs)
            {
                try
                {
                    tmpTsk = new cTask(cConfig.dsConfig, "Tasks", otID);
                }
                catch (Exception ex)
                {
                    TaskErrMessage = ex.Message;
                    return(WorkerErrorLevel.Error);
                }

                tmpTsk.onSendMessage += cTaskWorker_onSendMessage;
                tmpTsk.NoRemind       = true;
                tmpTsk.RunTask();
                tmpTsk.onSendMessage -= cTaskWorker_onSendMessage;
                tmpTsk = null;
            }
            return(WorkerErrorLevel.OK);
        }
示例#9
0
 void Worker_OnStartRunTask(cTask task)
 {
     LockUnlock(true, task.ID);
 }
示例#10
0
 void Worker_OnStopTask(cTask task)
 {
     LockUnlock(false, task.ID);
 }
示例#11
0
 void Worker_OnCompleteTask(cTask task)
 {
     LockUnlock(false, task.ID);
 }
示例#12
0
        void cTaskWorker_onSendMessage(object sender, bool NoAddTime)
        {
            cTask tsk = (cTask)sender;

            switch (tsk.TaskSoundType)
            {
            case SoundType.Internal:
            {
                SoundPlayer sp = new SoundPlayer(Properties.Resources.alarm);
                sp.Load();
                sp.Play();
            }; break;

            case SoundType.User:
            {
                try
                {
                    SoundPlayer sp = new SoundPlayer(tsk.SoundPath);
                    sp.Load();
                    sp.Play();
                }
                catch
                {
                    SystemSounds.Hand.Play();
                }
            }; break;
            }

            //показываем всплывающую подсказку
            if ((WorkerNotification == NotificationType.Baloon) ||
                (WorkerNotification == NotificationType.Both))
            {
                fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate
                {
                    CommonFunctions.globalNI.ShowBalloonTip(5000, tsk.TaskName,
                                                            tsk.MessageText + " ",
                                                            System.Windows.Forms.ToolTipIcon.Info);
                });
            }

            //показываем окно с оповещением
            if ((WorkerNotification == NotificationType.Window) ||
                (WorkerNotification == NotificationType.Both))
            {
                if (tsk.Overdue)
                {
                    fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate
                    {
                        CommonFunctions.InfoMessage(tsk.MessageText,
                                                    tsk.TaskName + ": " + tsk.LastRun);
                    });
                    return;
                }
                if (MessageForms[tsk.ID] == null) //формы сообщения нет
                {
                    fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate
                    {
                        MessageForms[tsk.ID]           = new frmMessage();
                        MessageForms[tsk.ID].Task      = tsk;
                        MessageForms[tsk.ID].NoAddTime = NoAddTime;
                        MessageForms[tsk.ID].TopMost   = true; //поверх всех окон
                        MessageForms[tsk.ID].Show();
                    });
                }
                else
                {
                    //форма для этой задачи есть, сообщение выслано повторно (Remind)
                    //а пользователь не реагирует
                    fMain.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate
                    {
                        MessageForms[tsk.ID].TopMost = true; //Форма поверх всех окон, в форме это отключается.
                        MessageForms[tsk.ID].Task    = tsk;
                        MessageForms[tsk.ID].Show();
                    });
                }
            }
        }
示例#13
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if ((TaskActionType == ActionType.Message) || (TaskActionType == ActionType.Both))
            {
                if (txtMessage.Text.Trim() == string.Empty)
                {
                    DialogResult Ans = MessageBox.Show("Сообщение пустое. Продолжить?",
                                                       "Пустое сообщение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    if (Ans == DialogResult.No)
                    {
                        return;
                    }
                }
            }

            if (bEdit)
            {
                if (dtStartDateTime.Value != Task.GetStartDateTime())
                {
                    if ((TaskTimeType != TimeType.One) && (TaskTimeType != TimeType.EveryDay) &&
                        (TaskTimeType != TimeType.EveryNDays))
                    {
                        DialogResult Ans = MessageBox.Show("Дата (время) были изменены." +
                                                           "При сохранении изменится дата (время) первого и следующих запусков. " +
                                                           "Изменить дату (время)?",
                                                           "Изменение даты", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                        if (Ans == DialogResult.No)
                        {
                            dtStartDateTime.Value = Task.GetStartDateTime();
                            return;
                        }
                    }

                    Task.StartDateTime = cTask.DateTimeToString(dtStartDateTime.Value);
                    Task.ResetNextTime();
                    Task.ClearLastRun();
                }
            }
            else
            {
                try
                {
                    Task = new cTask(txtName.Text.Trim(), dtStartDateTime.Value, false);
                }
                catch (Exception ex)
                {
                    lblFormMsg.ForeColor = Color.Red;
                    lblFormMsg.Text      = ex.Message;
                    return;
                }
            }

            //установка свойств объекта
            Task.Active            = chkActive.Checked;
            Task.MessageText       = txtMessage.Text.Trim();
            Task.N                 = Convert.ToInt32(txtN.Text);
            Task.ProgramParameters = txtProgramParams.Text.Trim();
            Task.ProgramPath       = txtProgramPath.Text.Trim();
            Task.ProgramHide       = chkProgramHide.Checked;
            Task.Remind            = Convert.ToInt32(txtRemind.Text);
            Task.SoundPath         = SoundFile;
            Task.TaskActionType    = TaskActionType;
            Task.TaskName          = txtName.Text.Trim();
            Task.TaskRemindType    = TaskRemindType;
            Task.TaskSoundType     = TaskSoundType;
            Task.TaskTimeType      = TaskTimeType;

            //внутренняя проверка объекта
            try
            {
                Task.CheckTask();
            }
            catch (Exception ex)
            {
                lblFormMsg.ForeColor = Color.Red;
                lblFormMsg.Text      = ex.Message;
                return;
            }

            //Запись в БД
            try
            {
                Task.ToDataSet(cConfig.dsConfig, "Tasks");
            }
            catch (Exception ex)
            {
                lblFormMsg.ForeColor = Color.Red;
                lblFormMsg.Text      = ex.Message;
                return;
            }

            //сохранение
            if (!cConfig.SaveConfig())
            {
                lblFormMsg.ForeColor = Color.Red;
                lblFormMsg.Text      = cConfig.ConfigErrMessage;
                return;
            }



            bSuccess = true;
            this.Close();
        }