Beispiel #1
0
        private void UpdatePropCollection()
        {
            var tmpList = new List <PropValueInfo>();

            if (EditingTask.TaskTypeID > 0)
            {
                var props = Context.taskWork.GetAllProperties(EditingTask.TaskTypeID);
                foreach (var prop in props)
                {
                    int parentListTaskID         = 0;
                    List <ListsValue> listValues = new List <ListsValue>();
                    //если тип список, который тянется от родителя, нужно найти этого родителя и значения
                    if (prop.DataType == 5 && prop.ListType == true)
                    {
                        if (EditingTreeNodeParent == null)
                        {
                            continue;
                        }
                        var parentNode = EditingTreeNodeParent;
                        while (parentNode != null && parentNode.Task.TaskTypeID != prop.TaskTypeID)
                        {
                            parentNode = parentNode.ParentNode;
                        }
                        if (parentNode == null)
                        {
                            MessageBox.Show($"Ошибка! У свойства {prop.PropName} не найден родитель с типом задачи Заказчик, из которого подгружается список. Данные свойства не будут отображены", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning);
                            continue;
                        }
                        parentListTaskID = parentNode.Task.ID;
                        listValues       = Context.listWork.GetListValues(parentListTaskID, (int)prop.ListID);
                    }

                    var propWithValue = EditingTask.PropValues.FirstOrDefault(pval => pval.Property == prop);
                    var propValInfo   = new PropValueInfo(propWithValue, parentListTaskID, listValues);
                    if (propWithValue != null)
                    {
                        tmpList.Add(propValInfo);
                    }
                    else
                    {
                        PropValue pv = new PropValue();
                        pv.Property = prop;
                        pv.PropID   = prop.ID;
                        pv.TaskID   = EditingTask.ID;
                        pv.DataType = prop.DataType;
                        propValInfo = new PropValueInfo(pv, parentListTaskID, listValues);
                        if (EditingTask.TaskTypeID == TaskTypesCb.First(t => t.TypeName.ToLower() == "обращение").ID&& EditingTask.ParentTaskID != null &&
                            prop.PropName.ToLower() == "номер обращения")
                        {
                            pv.ValueInt = Context.procedureWork.GetLastAppealNumber((int)EditingTask.ParentTaskID) + 1;
                        }
                        tmpList.Add(propValInfo);
                    }
                }
            }
            PropValuesCollection = tmpList;
        }
Beispiel #2
0
        public TaskDialogViewModel(TasksAllViewModel allVM, Task task, TaskCommandEnum command, TreeNode editNodeParent = null, bool _isEnabled = true)
        {
            ALLVM = allVM;
            _generate_TaskTypesCb();

            IsEditEnabled         = _isEnabled;
            _task                 = task;
            EditingTreeNodeParent = editNodeParent;
            EditingTask           = new Task(task);

            SelectedTaskTypeIndex = task.TaskTypeID;

            if (command == TaskCommandEnum.Add)
            {
                var taskTypeObj = TaskTypesCb.FirstOrDefault(tp => tp.TypeName.ToLower() == "задача");
                if (taskTypeObj != null)
                {
                    SelectedTaskTypeIndex = TaskTypesCb.IndexOf(taskTypeObj);
                }
            }

            levels   = Context.levelWork.Read_AllLevelsLowerMe();
            SelLevel = levels[0];

            users           = Context.usersWork.Read_AllUsers();
            ResponsibleUser = GlobalInfo.CurrentUser;
            OwnerUser       = GlobalInfo.CurrentUser;

            if (command == TaskCommandEnum.Edit)
            {
                var treeNode = TasksVM.DictionaryFull[EditingTask.ID];
                _generate_Tree(treeNode);
                Message         = "Выбрать задачу-родителя";
                SelLevel        = levels.FirstOrDefault(l => l.LevelID == task.LevelID);
                ResponsibleUser = users.FirstOrDefault(u => u.ID == task.ResponsibleID);
                OwnerUser       = users.FirstOrDefault(u => u.ID == task.OwnerID);
            }
            _command = command;
            Command  = (int)_command;


            AcceptCommand      = new RelayCommand(Accept, CanAccept); // todo чем чётче мы показываем намерения, тем легче программа
            CancelCommand      = new RelayCommand(Cancel, CanCancel); // в данном случае у нас return true всегда, наглядней было бы CancelCommand = new RelayCommand(Cancel, (_) => true);
            _filterTaskCommand = new RelayCommand(FilterTree, (_) => true);
        }