private void cmsWebServiceClient_GetAvailableIssueWorkFlowRulesCompleted(object sender, GetAvailableIssueWorkFlowRulesCompletedEventArgs e) { var availableIssueWorkFlowRules = e.Result; //We are editing IssueStatus var rules = new List<StatusTypeRule>(); foreach (var issueWorkFlowRule in availableIssueWorkFlowRules) { //If rule exist that means its enabled var existingRule = mIssueStatus.StatusTypeRules.FirstOrDefault(x => x.RuleName == issueWorkFlowRule.Name && x.StatusId == mIssueStatus.Id && x.IssueTypeId == mIssueType.Id); if (existingRule != null) { existingRule.Description = issueWorkFlowRule.Description; existingRule.IsEnabled = true; } else { StatusTypeRule issueStatusRule = new StatusTypeRule(); issueStatusRule.StatusId = mIssueStatus.Id; issueStatusRule.IssueTypeId = mIssueType.Id; issueStatusRule.RuleName = issueWorkFlowRule.Name; issueStatusRule.Description = issueWorkFlowRule.Description; issueStatusRule.IsEnabled = false; rules.Add(issueStatusRule); } } mIssueStatus.StatusTypeRules.AddRange(rules); RaisePropertyChanged("Rules"); }
public IssueStatus SaveIssueStatus(IssueStatus issueStatus) { IssueStatus issueStatusToUpdate = null; try { using (var cee = new CmsEntities()) { //Check if the object exist issueStatusToUpdate = (from x in cee.IssueStatuses where x.Id == issueStatus.Id select x).FirstOrDefault(); int issueStatusId = issueStatus.Id; if (issueStatusToUpdate == null) { //Create new Issue Status issueStatusToUpdate = new IssueStatus { Name = issueStatus.Name, Ordinal = issueStatus.Ordinal, Code = issueStatus.Name.Replace(" ", ""), IsActive = issueStatus.IsActive, DisableWorkflow = issueStatus.DisableWorkflow }; cee.IssueStatuses.Add(issueStatusToUpdate); cee.SaveChanges(); issueStatusId = issueStatusToUpdate.Id; } else { //Update existing Status issueStatusToUpdate.Name = issueStatus.Name; issueStatusToUpdate.Ordinal = issueStatus.Ordinal; issueStatusToUpdate.IsActive = issueStatus.IsActive; issueStatusToUpdate.DisableWorkflow = issueStatus.DisableWorkflow; //Delete Rules cee.DeleteWhere<StatusTypeRule>(cee, x => x.StatusId == issueStatus.Id); //Delete Issue Control Statuses cee.DeleteWhere<StatusTypeEnabledControl>(cee, x => x.IssueStatusId == issueStatus.Id); //Delete Issue Available Statuses cee.DeleteWhere<StatusTypeAvailableStatus>(cee, x => x.StatusId == issueStatus.Id); } //Update Rules foreach (StatusTypeRule issueStatusRule in issueStatus.StatusTypeRules) { StatusTypeRule newStatusTypeRule = new StatusTypeRule { RuleName = issueStatusRule.RuleName, StatusId = issueStatusId, IssueTypeId = issueStatusRule.IssueTypeId }; issueStatusToUpdate.StatusTypeRules.Add(newStatusTypeRule); } //Update Issue Control Statuses foreach (StatusTypeEnabledControl issueStatuesControl in issueStatus.StatusTypeEnabledControls) { StatusTypeEnabledControl newStatusTypeEnabledControl = new StatusTypeEnabledControl { IssueStatusId = issueStatusId, IssueTypeId = issueStatuesControl.IssueTypeId, IssueTabControlId = issueStatuesControl.IssueTabControlId }; issueStatusToUpdate.StatusTypeEnabledControls.Add(newStatusTypeEnabledControl); } //Update Issue Available Statuses foreach (StatusTypeAvailableStatus issueAvailableStatus in issueStatus.StatusTypeAvailableStatuses) { StatusTypeAvailableStatus newStatusTypeAvailableStatus = new StatusTypeAvailableStatus { StatusId = issueStatusId, IssueTypeId = issueAvailableStatus.IssueTypeId, AvailableStatusId = issueAvailableStatus.AvailableStatusId, IsEnabled = issueAvailableStatus.IsEnabled, IsVisible = issueAvailableStatus.IsVisible }; issueStatusToUpdate.StatusTypeAvailableStatuses.Add(newStatusTypeAvailableStatus); } cee.SaveChanges(); } } catch (DbEntityValidationException ex) { foreach (var validationErrors in ex.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { log.Error("", ex, "Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); } } } catch (Exception ex) { log.Error("", ex, "Error in SaveIssueStatus()"); } return issueStatusToUpdate; }