private void LoadData(int? docTypeId)
        {
            var getIssueActionTypesTask = DatabaseLoader.GetIssueActionTypes();
            Task<IssueStandardAction> getIssueStandardActionTask = null;

            var tasks = new List<Task> { getIssueActionTypesTask };
            if (docTypeId.HasValue)
            {
                getIssueStandardActionTask = DatabaseLoader.GetIssueStandardAction(docTypeId.Value);
                tasks.Add(getIssueStandardActionTask);
            }

            Task.Factory.ContinueWhenAll(tasks.ToArray(), t =>
            {
                CMS.UiFactory.StartNew(() =>
                {

                    if (IssueCategories == null)
                    {
                        IssueCategories = new List<IssueCategory>();
                    }

                    IssueCategories.AddRange(CMS.Cache.IssueCategories);
                    RaisePropertyChanged("IssueCategories");

                    if (IssueTypes == null)
                    {
                        IssueTypes = new List<IssueType>();
                    }

                    IssueTypes.AddRange(CMS.Cache.IssueTypes);

                    ActionTypes = getIssueActionTypesTask.Result;
                    RaisePropertyChanged("ActionTypes");
                    RaisePropertyChanged("SelectedActionType");
                    RaisePropertyChanged("AddWhenIssueCreated");

                    if (docTypeId.HasValue && getIssueStandardActionTask != null)
                    {
                        mIssueStandardAction = getIssueStandardActionTask.Result;

                        var cachedUser = (from x in CMS.Cache.ActiveUsers where x.Id == mIssueStandardAction.AssignedToId select x).FirstOrDefault();

                        mIssueStandardAction.IssueCategory = (from x in IssueCategories where x.Id == mIssueStandardAction.IssueCategoryId select x).FirstOrDefault();
                        mIssueStandardAction.IssueType = (from x in IssueTypes where x.Id == mIssueStandardAction.IssueTypeId select x).FirstOrDefault();
                        if (cachedUser != null)
                        {
                            mIssueStandardAction.AssignedToUser = new User
                            {
                                Id = cachedUser.Id,
                                FirstName = cachedUser.FirstName,
                                LastName = cachedUser.LastName,
                                ActiveUser = cachedUser.IsActive
                            };
                        }
                    }
                    else
                    {
                        mIssueStandardAction = new IssueStandardAction();
                    }

                    if (DataLoaded != null)
                    {
                        DataLoaded();

                    }

                });
            });
        }
        private void AddStandardAction(NodeView standardActionsNode, IssueStandardAction standardAction)
        {
            bool actionNodeProcessed = false;
            var actionTypesNode = standardActionsNode.Children;

            NodeView actionNode = new NodeView(null)
            {
                Id = standardAction.Id,
                Name = standardAction.Name,
                Description = standardAction.Description,
                Icon = "/CmsEquipmentDatabase;component/Images/Configuration.png",
                Type = NodeType.StandardActionNode,
                SortField = standardAction.Ordinal.ToString()
            };

            foreach (NodeView actionTypeNode in actionTypesNode)
            {
                if (actionTypeNode.Id == standardAction.IssueTypeId)
                {
                    foreach (var actionCategoryNode in actionTypeNode.Children)
                    {
                        if (actionCategoryNode.Id == standardAction.IssueCategoryId)
                        {
                            var existingActionNode = actionCategoryNode.Children.FirstOrDefault(x => x.Id == standardAction.Id);

                            if (existingActionNode == null)
                            {
                                actionNode.Parent = actionCategoryNode;
                                actionCategoryNode.Children.Add(actionNode);
                            }
                            else
                            {
                                existingActionNode.Name = standardAction.Name;
                                existingActionNode.Description = standardAction.Description;
                                existingActionNode.Parent = actionCategoryNode;
                                actionCategoryNode.Children.Add(existingActionNode);
                            }
                            actionNodeProcessed = true;
                            break;
                        }
                    }

                    if (actionNodeProcessed == false)
                    {
                        //We didnt find the categoryNode so create it

                        var categoryNode = new NodeView(actionTypeNode)
                        {
                            Id = standardAction.IssueCategoryId,
                            Icon = "/CmsEquipmentDatabase;component/Images/Configuration.png",
                            Name = standardAction.IssueCategory.Name,
                            Description = standardAction.IssueCategory.Description
                        };

                        actionTypeNode.Children.Add(categoryNode);

                        actionNode.Parent = categoryNode;
                        categoryNode.Children.Add(actionNode);
                        actionNodeProcessed = true;
                        break;
                    }
                }
            }

            if (actionNodeProcessed == false)
            {
                //The new actionNode is still not added so we need to create TypeNode, CategoryNode and add our actionNode
                var typeNode = new NodeView(standardActionsNode)
                {
                    Id = standardAction.IssueTypeId,
                    Icon = "/CmsEquipmentDatabase;component/Images/Configuration.png",
                    Type = NodeType.StandardActionTypeNode,
                    Name = standardAction.IssueType.Name,
                    Description = standardAction.IssueCategory.Description,
                    SortField = standardAction.Ordinal.ToString()
                };

                standardActionsNode.Children.Add(typeNode);

                var categoryNode = new NodeView(typeNode)
                {
                    Id = standardAction.IssueCategoryId,
                    Icon = "/CmsEquipmentDatabase;component/Images/Configuration.png",
                    Type = NodeType.StandardActionCategoryNode,
                    Name = standardAction.IssueCategory.Name,
                    Description = standardAction.IssueCategory.Description,
                    SortField = standardAction.Ordinal.ToString()
                };

                typeNode.Children.Add(categoryNode);

                actionNode.Parent = categoryNode;
                categoryNode.Children.Add(actionNode);
            }

            standardActionsNode.Sort();
        }
Example #3
0
        /// <summary>
        ///     Save/Update IssueStandardAction
        /// </summary>
        /// <param name="issueStandardAction"> </param>
        /// <returns> </returns>
        public IssueStandardAction SaveIssueStandardAction(IssueStandardAction issueStandardAction)
        {
            try
            {
                using (var cee = new CmsEntities())
                {
                    //Check if the IssueStandardAction exist
                    IssueStandardAction originalIssueStandardAction = (from x in cee.IssueStandardActions where x.Id == issueStandardAction.Id select x).FirstOrDefault();

                    if (originalIssueStandardAction == null)
                    {
                        //Add new IssueStandardAction
                        issueStandardAction.IssueCategory = null;
                        issueStandardAction.IssueType = null;
                        issueStandardAction.AssignedToUser = null;
                        issueStandardAction.IssueActionType = null;
                        cee.IssueStandardActions.Add(issueStandardAction);
                    }
                    else
                    {
                        //Update existing IssueStandardAction
                        originalIssueStandardAction.Name = issueStandardAction.Name;
                        int categoryId = issueStandardAction.IssueCategoryId;
                        originalIssueStandardAction.IssueCategoryId = categoryId;
                        originalIssueStandardAction.IssueCategory = null;
                        int typeId = issueStandardAction.IssueTypeId;
                        originalIssueStandardAction.IssueTypeId = typeId;
                        originalIssueStandardAction.IssueType = null;
                        int? assignedToUserId = issueStandardAction.AssignedToId;
                        originalIssueStandardAction.AssignedToId = assignedToUserId;
                        originalIssueStandardAction.AssignedToUser = null;

                        int actionTypeId = issueStandardAction.IssueActionTypeId;
                        originalIssueStandardAction.IssueActionType = null;
                        originalIssueStandardAction.IssueActionTypeId = actionTypeId;
                        originalIssueStandardAction.RequiredByDays = issueStandardAction.RequiredByDays;
                        originalIssueStandardAction.Description = issueStandardAction.Description;
                        originalIssueStandardAction.Ordinal = issueStandardAction.Ordinal;
                        originalIssueStandardAction.AddWhenIssueCreated = issueStandardAction.AddWhenIssueCreated;
                    }

                    cee.SaveChanges();

                    issueStandardAction =
                        (from x in cee.IssueStandardActions
                            .Include("IssueType")
                            .Include("IssueCategory")
                            .Include("AssignedToUser")
                         where x.Id == issueStandardAction.Id
                         select x).FirstOrDefault();
                }
            }
            catch (DbEntityValidationException dbEx)
            {
                foreach (DbEntityValidationResult validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (DbValidationError validationError in validationErrors.ValidationErrors)
                    {
                        log.Error("", dbEx, "Error in SaveIssueStandardAction. Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                    }
                }
            }
            return issueStandardAction;
        }
        private void UpdateCurrentNode(NodeView editedActionNode, IssueStandardAction standardAction)
        {
            var standardActionsNode = editedActionNode.Parent.Parent.Parent;

            //If the type and category didnt change update just the name
            if (standardAction.IssueCategoryId == editedActionNode.Parent.Id &&
                standardAction.IssueTypeId == editedActionNode.Parent.Parent.Id)
            {
                editedActionNode.Name = standardAction.Name;
                editedActionNode.Description = standardAction.Description;
                editedActionNode.SortField = standardAction.Ordinal.ToString();
                editedActionNode.Parent.Sort();
                return;
            }

            //Delete self
            editedActionNode.Parent.Children.Remove(editedActionNode);

            if (!editedActionNode.Parent.Children.Any())
            {
                editedActionNode.Parent.Parent.Children.Remove(editedActionNode.Parent);
            }

            AddStandardAction(standardActionsNode, standardAction);
        }