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(); }
/// <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); }