public ControlSystemAlarmPropertyDetailsViewModel(ControlSystemAlarmPropertyValue controlSystemAlarmPropertyValue, int level) { CompositionInitializer.SatisfyImports(this); CloneAndSetNulls(controlSystemAlarmPropertyValue); mControlSystemAlarmPropertyValue = controlSystemAlarmPropertyValue; mLevel = level; LoadData(); }
public ControlSystemAlarmPropertiesWrapViewModel(List<ControlSystemAlarmMappingCentum> alarmMappingCentums, ControlSystemAlarmPropertyValue propertyValue, int level, List<ControlSystemAlarmPriority> priorities, List<ControlSystemAlarmColour> colours, List<ControlSystemAlarmPurpose> puposes, List<ControlSystemAlarmResponse> responses, List<ControlSystemAlarmConsequence> consequenses) { mPropertyValue = propertyValue; mAlarmMappingCentums = alarmMappingCentums; Priorities = priorities; Colours = colours; Purposes = puposes; Responses = responses; Consequences = consequenses; }
private ControlSystemComponent BuildClone(ControlSystemComponent controlSystemComponent) { var clone = new ControlSystemComponent(); CommonUtils.CloneObject(clone, controlSystemComponent, ""); clone.ControlSystemComponentTypeId = controlSystemComponent.ControlSystemComponentTypeId; clone.ControlSystemComponentType = controlSystemComponent.ControlSystemComponentType; foreach (var pv in controlSystemComponent.ControlSystemAlarmPropertyValues) { var pvClone = new ControlSystemAlarmPropertyValue(); CommonUtils.CloneObject(pvClone, pv, ""); clone.ControlSystemAlarmPropertyValues.Add(pvClone); var propClone = new ControlSystemAlarmProperty(); CommonUtils.CloneObject(propClone, pv.ControlSystemAlarmProperty, ""); propClone.ControlSystemUserInterfacePlatform = pv.ControlSystemAlarmProperty.ControlSystemUserInterfacePlatform; propClone.UserInterfacePlatformId = pv.ControlSystemAlarmProperty.UserInterfacePlatformId; pvClone.ControlSystemAlarmProperty = propClone; pvClone.ControlSystemAlarmPropertyId = propClone.Id; } return clone; }
private void CloneAndSetNulls(ControlSystemAlarmPropertyValue controlSystemAlarmPropertyValue) { CommonUtils.CloneObject(mClone, controlSystemAlarmPropertyValue, controlSystemAlarmPropertyValue.Id.ToString()); //we need to set to ensure we have no NULLS in the Properties of type 'string'. otherwise the 'string.Equals' will not pick up changes. mClone.Guidance += ""; mClone.Notes += ""; mClone.MaskingExpr += ""; mClone.ActivationExpr += ""; mClone.AlarmCalcExpr += ""; mClone.MaskingExpr += ""; }
private void ImportAlarmPropertyValues(CmsEntities cee, OldCmsEntities old) { Logger.Out("ImportControlSystemAlarmPropertyValues - start"); var sw = new Stopwatch(); sw.Start(); var dicKeyValuePairs = LoadExistingPropertyValueKeys(cee); var newResponses = (from x in cee.ControlSystemAlarmResponses select x).ToList(); var newPurposeListNames = (from x in cee.ControlSystemAlarmPurposes select x).ToList(); var newConseqListNames = (from x in cee.ControlSystemAlarmConsequences select x).ToList(); var newPriorityNames = (from x in cee.ControlSystemAlarmPriorities select x).ToList(); var alarmProperties = (from x in cee.ControlSystemAlarmProperties select x).ToList(); var oldAlarms = (from x in old.Alarms .Include("AlarmType") .Include("AlarmConsequence") .Include("AlarmPurpose") .Include("AlarmResponse") .Include("Element") .Include("Element.ElementTypical") .Include("Element.ControlModule") select x).ToList(); var index = 0; foreach (var oldAlarm in oldAlarms.OrderBy(x => x.Id)) { var apv = new ControlSystemAlarmPropertyValue(); //ControlSystemComponent ControlSystemComponent matchedNewCmsComponent; if (MatchNewComponentFailed(cee, oldAlarm, out matchedNewCmsComponent)) continue; //AlarmProperty ControlSystemAlarmProperty matchedAlarmProperty; if (MatchAlarmPropertyFailed(alarmProperties, oldAlarm, out matchedAlarmProperty)) continue; //checkforduplicate var kvp = new KeyValuePair<int, int>(matchedNewCmsComponent.Id, matchedAlarmProperty.Id); if (!dicKeyValuePairs.Contains(kvp)) { dicKeyValuePairs.Add(kvp); } else { Logger.Out(string.Format("Skipping Alarm ID {0} - duplicate on ComponentId '{1}' and AlarmPropertyId '{2}'.", oldAlarm.Id, matchedNewCmsComponent.Id, matchedAlarmProperty.Id)); continue; } //ControlSystemComponentType ControlSystemComponentType matchedComponentType; if (MatchComponentTypeFailed(cee, old, oldAlarm, out matchedComponentType)) continue; //ReviewCompleted if (oldAlarm.Element == null || oldAlarm.Element.ControlModule == null) { Logger.Out(string.Format("Element or ControlModule on Alarm ID {0} was null. Trying to set the Review Completed values.", oldAlarm.Id)); continue; } if (oldAlarm.Detection) { apv.ReviewCompleted = oldAlarm.Element.ControlModule.AlarmSettingsConfirmed; apv.ReviewedCompletedById = oldAlarm.Element.ControlModule.AlarmSettingsConfirmedUserId; apv.ReviewedCompletedDate = oldAlarm.Element.ControlModule.AlarmSettingsConfirmedDate; } //AlarmPurpose ControlSystemAlarmPurpose matchPurpose; if (MatchPurposeFailed(newPurposeListNames, oldAlarm, out matchPurpose)) continue; //AlarmConsequence ControlSystemAlarmConsequence matchConsequence; if (MatchConsequenceFailed(newConseqListNames, oldAlarm, out matchConsequence)) continue; //AlarmResponse ControlSystemAlarmResponse matchResponse; if (MatchResponseFailed(newResponses, oldAlarm, out matchResponse)) continue; //TestedBy if (oldAlarm.Tested) { User matchedTestedUser; if (!MatchTestebByUserFailed(cee, old, oldAlarm, out matchedTestedUser)) { if (matchedTestedUser!=null) { apv.TestedUserId = matchedTestedUser.Id; apv.TestedDate = oldAlarm.TestedDate; apv.Tested = oldAlarm.Tested; } } } //ModifiedBy User matchedLastModifiedByUser; if (!MatchModifiedByUserFailed(cee, old, oldAlarm, out matchedLastModifiedByUser)) { if (matchedLastModifiedByUser!=null) { apv.ModifiedUserId = matchedLastModifiedByUser.Id; apv.ModifiedDate = oldAlarm.ModifiedDate; } } //Enabled (JIRA comment - https://jira.issgroup.com.au/browse/BODCMS-1840?focusedCommentId=80527&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-80527) apv.Enabled = oldAlarm.Detection; //Priority //step 1 EngParameter matchedEngParam; if (MatchEngParamFailed(old, oldAlarm, out matchedEngParam)) { apv.PriorityId = null; } else { //step 2 AlarmTable matchedAlarmTable; if (MatchAlarmTableRecordFailed(old, oldAlarm, matchedEngParam, out matchedAlarmTable)) { apv.PriorityId = null; } else { //step 3 if (matchedAlarmTable == null) { apv.PriorityId = null; } else { ControlSystemAlarmPriority matchedPriority; if (MatchPriorityNameFailed(newPriorityNames, matchedAlarmTable, oldAlarm, out matchedPriority)) { apv.PriorityId = null; } if (matchedPriority != null) { apv.PriorityId = matchedPriority.Id; } } } } apv.ActivationExpr = oldAlarm.ActivationExpr; apv.AlarmCalcExpr = oldAlarm.AlarmCalcExpr; apv.AlarmCalcExprEnabled = oldAlarm.Calc; apv.ControlSystemAlarmPropertyId = matchedAlarmProperty.Id; apv.ControlSystemComponentId = matchedNewCmsComponent.Id; if (!string.IsNullOrEmpty(oldAlarm.Guidance)) { apv.Guidance = oldAlarm.Guidance.Trim(); } if (!string.IsNullOrEmpty(oldAlarm.Notes)) { apv.Notes = oldAlarm.Notes.Trim(); } apv.MaskingExpr = oldAlarm.MaskingCondition; //apv.Reportable = oldAlarm.Reportable; kim will do manually. apv.OnDelay = oldAlarm.OnDelay; apv.OffDelay = oldAlarm.OffDelay; if (matchConsequence != null) { apv.ConsequenceId = matchConsequence.Id; } if (matchPurpose != null) { apv.PurposeId = matchPurpose.Id; } if (matchResponse != null) { apv.ResponseTimeId = matchResponse.Id; } cee.ControlSystemAlarmPropertyValues.Add(apv); index++; UpdateStatus(string.Format("Alarm PropertyValues: Mapped Alarm ID {0} ({1} of {2}).", oldAlarm.Id, index, oldAlarms.Count)); } Logger.Out("Saving Alarm PropertyValues..."); cee.SaveChanges(); sw.Stop(); Logger.Out(string.Format("Imported {0} out of {1} AlarmPropertyValues in {2} min, {3} sec. ", index, oldAlarms.Count, sw.Elapsed.Minutes, sw.Elapsed.Seconds)); Logger.Out(""); Logger.Out(""); }
public ModifiedAlarmPropertyComparer(ControlSystemAlarmPropertyValue Original_In, ControlSystemAlarmPropertyValue Modified_In, List<ControlSystemAlarmPriority> priorities, List<ControlSystemAlarmPurpose> purposes, List<ControlSystemAlarmConsequence> consequences, List<ControlSystemAlarmResponse> responses, List<QuickUser> users) { mPriorities = priorities; mPurposes = purposes; mConsequences = consequences; mResponses = responses; mUsers = users; Original = Original_In; Modified = Modified_In; var result = BuildMessage(); Result = result; }
private void SaveControlSystemAlarms(ControlSystem controlSystem) { using (var cee = new CmsEntities()) { foreach (var component in controlSystem.ControlSystemComponents) { List<int> ctapList = (from x in cee.ControlSystemComponentTypeAlarmProperties where x.ComponentTypeId == component.ControlSystemComponentTypeId select x.AlarmPropertyId).ToList(); var dbAlarmPropertyValues = (from x in cee.ControlSystemAlarmPropertyValues where x.ControlSystemComponentId == component.Id select x).ToList(); foreach (ControlSystemAlarmPropertyValue dbAlarmPropertyValue in dbAlarmPropertyValues) { cee.ControlSystemAlarmPropertyValues.Remove(dbAlarmPropertyValue); cee.SaveChanges(); } List<ControlSystemAlarmPropertyValue> newPVs = new List<ControlSystemAlarmPropertyValue>(); foreach (var pv in component.ControlSystemAlarmPropertyValues) { bool isInList = ctapList.IndexOf(pv.ControlSystemAlarmPropertyId) != -1; if (!isInList) { continue; }//no business adding this... //needed to new up to ensure decoupled. ControlSystemAlarmPropertyValue insert = new ControlSystemAlarmPropertyValue { ActivationExpr = pv.ActivationExpr, AlarmCalcExpr = pv.AlarmCalcExpr, AlarmCalcExprEnabled = pv.AlarmCalcExprEnabled, ColourId = pv.ColourId, ConsequenceId = pv.ConsequenceId, ControlSystemAlarmPropertyId = pv.ControlSystemAlarmPropertyId, ControlSystemComponentId = component.Id, Enabled = pv.Enabled, Guidance = pv.Guidance, MaskingExpr = pv.MaskingExpr, Notes = pv.Notes, OffDelay = pv.OffDelay, OnDelay = pv.OnDelay, PriorityId = pv.PriorityId, PurposeId = pv.PurposeId, Reportable = pv.Reportable, ReportableSetById = pv.ReportableSetById, ReportableSetDate = pv.ReportableSetDate, ResponseTimeId = pv.ResponseTimeId, ReviewedCompletedById = pv.ReviewedCompletedById, ReviewCompleted = pv.ReviewCompleted, ReviewedCompletedDate = pv.ReviewedCompletedDate, Tested = pv.Tested, TestedDate = pv.TestedDate, TestedUserId = pv.TestedUserId, ModifiedDate = pv.ModifiedDate, ModifiedUserId = pv.ModifiedUserId }; cee.ControlSystemAlarmPropertyValues.Add(insert); } } cee.SaveChanges(); } }
private void BuildAlarmRevisionHistory(int controlSystemId, int userId, List<ControlSystemComponent> controlSystemComponents, CmsEntities cee) { var modifiedList = new List<ControlSystemAlarmPropertyValue>(); foreach (var component in controlSystemComponents) { if (component.ControlSystemAlarmPropertyValues != null && component.ControlSystemAlarmPropertyValues.Any()) { modifiedList.AddRange(component.ControlSystemAlarmPropertyValues); } } if (!modifiedList.Any()) { return; } var idList = (from x in modifiedList select x.Id).ToArray(); var dbMatches = (from x in cee.ControlSystemAlarmPropertyValues where idList.Contains(x.Id) select x).ToList(); var purposes = (from x in cee.ControlSystemAlarmPurposes select x).ToList(); var consequences = (from x in cee.ControlSystemAlarmConsequences select x).ToList(); var responses = (from x in cee.ControlSystemAlarmResponses select x).ToList(); var priorities = (from x in cee.ControlSystemAlarmPriorities select x).ToList(); var users = GetQuickUsersInternal(true, cee); var messages = new List<string>(); foreach (var pv in modifiedList) { ControlSystemAlarmPropertyValue db; if (pv.Id != 0) { db = (from x in dbMatches where x.Id == pv.Id select x).FirstOrDefault(); } else { db = new ControlSystemAlarmPropertyValue(); } if (db != null) { var propertyComparer = new ModifiedAlarmPropertyComparer(db, pv, priorities, purposes, consequences, responses, users); if (!string.IsNullOrEmpty(propertyComparer.Result)) { var heading = string.Format("[Component: {0}, Alarm: {1}] ", pv.ControlSystemComponent.Name, pv.ControlSystemAlarmProperty.Name); messages.Add(heading); messages.Add(propertyComparer.Result.TrimEnd(Environment.NewLine.ToCharArray())); } } } var rh = new ControlSystemRevisionHistory(); if (messages.Any()) { var joined = string.Join(Environment.NewLine, messages); rh.Description = joined; rh.ControlSystemId = controlSystemId; rh.Date = DateTime.Now; rh.UserId = userId; rh.IsSystemMessage = true; var latestPrh = (from x in cee.ControlSystemRevisionHistories where x.ControlSystemId == controlSystemId select x.Revision).ToList(); if (latestPrh.Count > 0) { rh.Revision = latestPrh.AsQueryable().Max() + VERSIONINCREMENT; } else { rh.Revision = VERSIONINCREMENT; } cee.ControlSystemRevisionHistories.Add(rh); } }
public List<ControlSystemAlarmPropertyValue> GetAlarmPropertyValuesRequiredForComponentType(int controlSystemComponentTypeId) { List<ControlSystemAlarmPropertyValue> result = new List<ControlSystemAlarmPropertyValue>(); using (var cee = new CmsEntities()) { List<ControlSystemComponentTypeAlarmProperty> properties = (from x in cee.ControlSystemComponentTypeAlarmProperties .Include("ControlSystemAlarmProperty") .Include("ControlSystemAlarmProperty.ControlSystemUserInterfacePlatform") where x.ComponentTypeId == controlSystemComponentTypeId select x).ToList(); foreach (ControlSystemComponentTypeAlarmProperty property in properties) { ControlSystemAlarmPropertyValue pv = new ControlSystemAlarmPropertyValue { ControlSystemAlarmPropertyId = property.AlarmPropertyId, ControlSystemAlarmProperty = property.ControlSystemAlarmProperty, Enabled = false, Reportable = false }; result.Add(pv); } return result; } }