Example #1
0
        public NewEditShedulerTaskForm(int taskId = 0)
        {
            _taskId = taskId;
            InitializeComponent();

            if (_taskId > 0)
            {
                _shedulerTask = MQueryCommand.SelectShedulerTasks().FirstOrDefault(f => f.Id == _taskId);
                if (_shedulerTask == null)
                {
                    MessageBox.Show("Не найден [ShedulerTask]", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.Dispose();
                    return;
                }
            }
            else
            {
                _shedulerTask = new ShedulerTask();
            }

            InitControls();
        }
Example #2
0
        private void AddEditTask()
        {
            if (string.IsNullOrEmpty(this.edTaskName.Text))
            {
                MessageBox.Show("Значение поля 'Название задачи' не может быть пустым.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                this.ActiveControl = this.edTaskName;
                return;
            }
            List <int> selectedComputers = rgvComputersForSheduler.SelectedValues.Select(s => (int)s).ToList();

            // Добавление таска
            this.lbTasks.DisplayMember = "Name";
            this.lbTasks.ValueMember   = "Id";

            var schedulerTask = new ShedulerTask
            {
                Name = this._newTaskName,
                //StartTime = DateTime.Now.AddHours(1)
            };

            // Заполнение списка компьютеров
            var computersList = selectedComputers.Select(x => new ShedulerTasksComputersList
            {
                ComputerId = x
            }).ToList();

            if (this._isAddTaskMode)
            {
                var addedIndex = this.lbTasks.Items.Add(schedulerTask);
                // Добавление новой задачи
                var addTaskResult = MQueryCommand.TryInsertNewTask(this.edTaskName.Text,
                                                                   cmbTaskModes.SelectedIndex,
                                                                   this.pckrStartDateTime.Value.Add(-_utcOffset),
                                                                   computersList,
                                                                   this.chbEnable.Checked);
                if (!addTaskResult.IsComplete)
                {
                    MessageBox.Show($"Ошибка добавления новой задачи{Environment.NewLine}{addTaskResult.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // Добавление шагов
                var stepsWereAdded = stepsTree1.AddSteps(addTaskResult.ReturnedId);
                if (!stepsWereAdded)
                {
                    using (EntityDb context = new EntityDb())
                    {
                        try
                        {
                            var task = context.ShedulerTasks.First(x => x.Id == addTaskResult.ReturnedId);
                            context.ShedulerTasks.Remove(task);
                            context.SaveChanges();
                        }
                        catch (Exception ex)
                        {
                            MLogger.Error(ex.ToString());
                            MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }

                    this.lbTasks.Items.Remove(schedulerTask);

                    MessageBox.Show("Невозможно добавление новой задачи без указания операций. Необходимо указать как минимум одну операцию.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    return;
                }

                // Перезагрузка списка задач
                this.UpdateTasksList();
                this.lbTasks.SelectedIndex = addedIndex;
                this._isAddTaskMode        = false;
                MessageBox.Show($"Задача '{this.edTaskName.Text}' была успешно добавлена", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                // Редактирование выбранной задачи
                var selectedTaskItem = (ShedulerTask)lbTasks.SelectedItem;
                if (selectedTaskItem == null)
                {
                    return;
                }

                var updateResult = MQueryCommand.TryUpdateTask(selectedTaskItem.Id,
                                                               this.chbEnable.Checked,
                                                               this.edTaskName.Text,
                                                               null,
                                                               cmbTaskModes.SelectedIndex,
                                                               this.pckrStartDateTime.Value.Add(-_utcOffset),
                                                               computersList);
                if (!updateResult.IsComplete)
                {
                    MessageBox.Show($"Ошибка при обновлении данных{Environment.NewLine}{updateResult.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // Очистка списка шагов
                //if (!this.stepsTree1.IsEmpty())
                //{
                //	this.ClearSteps(selectedTaskItem.Id);
                //}

                //Удаление шагов
                var stepsWereDeleted = MQueryCommand.TryDeleteSteps(stepsTree1.StepsIdListToDelete);
                if (!stepsWereDeleted.IsComplete)
                {
                    MessageBox.Show(stepsWereDeleted.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                // Добавление шагов
                var stepsWereEdited = stepsTree1.AddSteps(selectedTaskItem.Id);
                if (!stepsWereEdited)
                {
                    MessageBox.Show("Невозможно сохраниение изменений для дерева операций. Требуется добавить хотя бы одну операцию.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                var currentSelectedIndex = this.lbTasks.SelectedIndex;
                this.UpdateTasksList();
                this.lbTasks.SelectedIndex = currentSelectedIndex;

                MessageBox.Show($"Изменения по задаче '{this.edTaskName.Text}' были успешно сохранены", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            this.toolStripButtonAddTask.Enabled        =
                this.toolStripButtonRemoveTask.Enabled =
                    this.lbTasks.Enabled = true;
            this.labelEditing.Visible    = false;
            this.btnCancel.Visible       = false;
        }