internal override void PerformAction() { ExtensionAndGroupMenuManager.GetSelectionPolFunPar(cc, out List <CountryConfig.PolicyRow> polRows, out List <CountryConfig.FunctionRow> funRows, out List <CountryConfig.ParameterRow> parRows); CountryConfig countryConfig = CountryAdministrator.GetCountryConfigFacade(cc).GetCountryConfig(); CountryConfig.LookGroupRow groupRow = (from lg in countryConfig.LookGroup where lg.Name.ToLower() == groupName.ToLower() select lg).First(); foreach (CountryConfig.PolicyRow policyRow in polRows) { if (!(from pg in countryConfig.LookGroup_Policy where pg.PolicyID == policyRow.ID && pg.LookGroupID == groupRow.ID select pg).Any()) { countryConfig.LookGroup_Policy.AddLookGroup_PolicyRow(groupRow, policyRow); // make sure to not add twice (and thus crash) } } foreach (CountryConfig.FunctionRow functionRow in funRows) { if (!(from fg in countryConfig.LookGroup_Function where fg.FunctionID == functionRow.ID && fg.LookGroupID == groupRow.ID select fg).Any()) { countryConfig.LookGroup_Function.AddLookGroup_FunctionRow(groupRow, functionRow); } } foreach (CountryConfig.ParameterRow parameterRow in parRows) { if (!(from pg in countryConfig.LookGroup_Parameter where pg.ParameterID == parameterRow.ID && pg.LookGroupID == groupRow.ID select pg).Any()) { countryConfig.LookGroup_Parameter.AddLookGroup_ParameterRow(groupRow, parameterRow); } } }
internal override void PerformAction() { CountryConfig countryConfig = CountryAdministrator.GetCountryConfigFacade(cc).GetCountryConfig(); ExtensionAndGroupMenuManager.GetSelectionPolFunPar(cc, out selectedPolRows, out selectedFunRows, out List <CountryConfig.ParameterRow> parRows); string extensionID = (from e in ExtensionAndGroupManager.GetExtensions(cc) where e.Name == extensionName select e.ID).FirstOrDefault(); if (extensionID == null) { return; } List <CountryConfig.Extension_PolicyRow> delPolicyRows = new List <CountryConfig.Extension_PolicyRow>(); List <CountryConfig.Extension_FunctionRow> delFunctionRows = new List <CountryConfig.Extension_FunctionRow>(); List <CountryConfig.Extension_ParameterRow> delParameterRows = new List <CountryConfig.Extension_ParameterRow>(); foreach (CountryConfig.PolicyRow policyRow in selectedPolRows) { selectedFunRows.AddRange(policyRow.GetFunctionRows()); // to make sure that all functions of the policy are removed as well - note: the AddContent-function // does not remove a single function if its parent-policy is added (later) foreach (CountryConfig.Extension_PolicyRow del in from pe in countryConfig.Extension_Policy where pe.ExtensionID == extensionID& pe.PolicyID == policyRow.ID select pe) { if (!delPolicyRows.Contains(del)) { delPolicyRows.Add(del); // theoretically (but stupidly) this can be 2 (off and on) } } } foreach (CountryConfig.FunctionRow functionRow in selectedFunRows) { parRows.AddRange(functionRow.GetParameterRows()); // see above foreach (CountryConfig.Extension_FunctionRow del in from fe in countryConfig.Extension_Function where fe.ExtensionID == extensionID& fe.FunctionID == functionRow.ID select fe) { if (!delFunctionRows.Contains(del)) { delFunctionRows.Add(del); } } } foreach (CountryConfig.ParameterRow parameterRow in parRows) { foreach (CountryConfig.Extension_ParameterRow del in from pe in countryConfig.Extension_Parameter where pe.ExtensionID == extensionID& pe.ParameterID == parameterRow.ID select pe) { if (!delParameterRows.Contains(del)) { delParameterRows.Add(del); } } } for (int i = delPolicyRows.Count - 1; i >= 0; --i) { delPolicyRows[i].Delete(); } for (int i = delFunctionRows.Count - 1; i >= 0; --i) { delFunctionRows[i].Delete(); } for (int i = delParameterRows.Count - 1; i >= 0; --i) { delParameterRows[i].Delete(); } }
internal override void PerformAction() { ExtensionAndGroupMenuManager.GetSelectionPolFunPar(cc, out List <CountryConfig.PolicyRow> polRows, out List <CountryConfig.FunctionRow> funRows, out List <CountryConfig.ParameterRow> parRows); CountryConfig countryConfig = CountryAdministrator.GetCountryConfigFacade(cc).GetCountryConfig(); CountryConfig.LookGroupRow groupRow = (from lg in countryConfig.LookGroup where lg.Name.ToLower() == groupName.ToLower() select lg).First(); List <CountryConfig.LookGroup_PolicyRow> delPolicyRows = new List <CountryConfig.LookGroup_PolicyRow>(); List <CountryConfig.LookGroup_FunctionRow> delFunctionRows = new List <CountryConfig.LookGroup_FunctionRow>(); List <CountryConfig.LookGroup_ParameterRow> delParameterRows = new List <CountryConfig.LookGroup_ParameterRow>(); foreach (CountryConfig.PolicyRow policyRow in polRows) { funRows.AddRange(policyRow.GetFunctionRows()); // to make sure that all functions of the policy are removed as well - note: the AddContent-function // does not remove a single function if its parent-policy is added (later) var del = from pg in countryConfig.LookGroup_Policy where pg.LookGroupID == groupRow.ID && pg.PolicyID == policyRow.ID select pg; if (del.Any() && !delPolicyRows.Contains(del.First())) { delPolicyRows.Add(del.First()); } } foreach (CountryConfig.FunctionRow functionRow in funRows) { parRows.AddRange(functionRow.GetParameterRows()); // see above var del = from fg in countryConfig.LookGroup_Function where fg.LookGroupID == groupRow.ID && fg.FunctionID == functionRow.ID select fg; if (del.Any() && !delFunctionRows.Contains(del.First())) { delFunctionRows.Add(del.First()); } } foreach (CountryConfig.ParameterRow parameterRow in parRows) { var del = from pg in countryConfig.LookGroup_Parameter where pg.LookGroupID == groupRow.ID && pg.ParameterID == parameterRow.ID select pg; if (del.Any() && !delParameterRows.Contains(del.First())) { delParameterRows.Add(del.First()); } } for (int i = delPolicyRows.Count - 1; i >= 0; --i) { delPolicyRows[i].Delete(); } for (int i = delFunctionRows.Count - 1; i >= 0; --i) { delFunctionRows[i].Delete(); } for (int i = delParameterRows.Count - 1; i >= 0; --i) { delParameterRows[i].Delete(); } }
internal override void PerformAction() { CountryConfig countryConfig = CountryAdministrator.GetCountryConfigFacade(cc).GetCountryConfig(); ExtensionAndGroupMenuManager.GetSelectionPolFunPar(cc, out List <CountryConfig.PolicyRow> polRows, out List <CountryConfig.FunctionRow> funRows, out List <CountryConfig.ParameterRow> parRows); string extensionID = (from e in ExtensionAndGroupManager.GetExtensions(cc) where e.Name == extensionName select e.ID).FirstOrDefault(); if (extensionID == null) { return; } bool baseOff = !on; foreach (CountryConfig.PolicyRow polRow in polRows) { if (!(from pe in countryConfig.Extension_Policy where pe.PolicyID == polRow.ID && pe.ExtensionID == extensionID && pe.BaseOff == baseOff select pe).Any()) { countryConfig.Extension_Policy.AddExtension_PolicyRow(extensionID, polRow, baseOff); // make sure to not add twice (and thus crash) if (polRow.Switch == DefPar.Value.NA) { polRow.Switch = DefPar.Value.OFF; // if set to n/a the xml-reader would ignore the policy, before extensions are taken into account } } } foreach (CountryConfig.FunctionRow funRow in funRows) { if (!(from fe in countryConfig.Extension_Function where fe.FunctionID == funRow.ID && fe.ExtensionID == extensionID && fe.BaseOff == baseOff select fe).Any()) { countryConfig.Extension_Function.AddExtension_FunctionRow(extensionID, funRow, baseOff); if (funRow.Switch == DefPar.Value.NA) { funRow.Switch = DefPar.Value.OFF; } } } foreach (CountryConfig.ParameterRow parRow in parRows) { if (!(from pe in countryConfig.Extension_Parameter where pe.ParameterID == parRow.ID && pe.ExtensionID == extensionID && pe.BaseOff == baseOff select pe).Any()) { countryConfig.Extension_Parameter.AddExtension_ParameterRow(extensionID, parRow, baseOff); } } if (!on) { return; } // adapt switches in treelist directly, as a full update takes too long foreach (CountryConfig.PolicyRow polRow in polRows) { SetSwitch(polRow.ID, polRow.SystemID, false, DefPar.Value.SWITCH); // for functions, which are part of an extension-policy one still needs to show off and n/a instead of switch (see GetExtensionAdaptedSwitch) foreach (CountryConfig.FunctionRow funRow in polRow.GetFunctionRows()) { SetSwitch(funRow.ID, polRow.SystemID, true, ExtensionAndGroupManager.GetExtensionAdaptedSwitch(funRow)); } } foreach (CountryConfig.FunctionRow funRow in funRows) { SetSwitch(funRow.ID, funRow.PolicyRow.SystemID, true, DefPar.Value.SWITCH); } void SetSwitch(string rowID, string sysID, bool isFun, string switchValue) { KeyValuePair <TreeListNode, TreeListColumn> cell = mainForm.GetTreeListBuilder().GetCellByDataRow(rowID, sysID, isFun); if (cell.Key != null && cell.Value != null) { cell.Key.SetValue(cell.Value, switchValue); } } }