示例#1
0
        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);
                }
            }
        }