public void Add(StationElement el) { var buf = elements.Where(x => x.name == el.name); if (buf.Count() == 0) { elements.Add(el); } else { throw new Exception("NotUniqueName"); } }
static public void CompareConditions(string blockName, string elementName, StationElement el) { var scr = GetScriptByName(blockName, elementName); if (scr == null) { var lst = scriptsList.Where(x => x is MutuallyExclusiveTemplate).Select(x => x as MutuallyExclusiveTemplate); scr = lst.SingleOrDefault(x => x.secondElementBlockName == blockName && x.secondElementName == elementName); } if (scr != null) { if (el is TwoPositionsElement) { var element = el as TwoPositionsElement; if (scr is TwoPositionsElementTemplate) { var script = scr as TwoPositionsElementTemplate; if (element.position == script.nessPosition) { script.InstallScriptCondition(true); } else { script.InstallScriptCondition(false); } } else if (scr is MutuallyExclusiveTemplate) { var script = scr as MutuallyExclusiveTemplate; var firstEl = StationModel.GetStationBlock(script.blockName).elementsList.GetItemByName(script.elementName) as TwoPositionsElement; var secondEl = StationModel.GetStationBlock(script.secondElementBlockName).elementsList.GetItemByName(script.secondElementName) as TwoPositionsElement; if (firstEl.position && secondEl.position) { script.InstallScriptCondition(false); } else { script.InstallScriptCondition(true); } } } //else //if (el is PositionalSwitchModel) //{ // var element = el as PositionalSwitchModel; // if (scr is PositionalSwitchConditionTemplate) // { // var script = scr as PositionalSwitchConditionTemplate; // if (script.necessaryPosition == element.conditionList[element.currentPosition].value) // { // script.InstallScriptCondition(true); // } // else script.InstallScriptCondition(false); // } // else if (scr is IsPostionalSwitchPositionUse) // { // var script = scr as IsPostionalSwitchPositionUse; // } //} CheckAllScripts(); } }