Esempio n. 1
0
        // generate rules for options associated to probes (and related forbidden probes)
        public static List <Uirule> ImportOptionProbes(DBBuffer _buffer, Paths Paths, string log)
        {
            List <Uirule> result   = new List <Uirule>();
            var           filename = "OptionProbeRules.txt";

            Provider.WriteImportLogFormat(log, filename);
            try
            {
                List <List <String> > file = Provider.CreateFile(Paths.importFilePath + "\\" + filename);
                var Options = file.Skip(1).GroupBy(r => r[0]);                  // first line contains column names

                foreach (var OptionGroup in Options)
                {
                    var OptionId        = _buffer.p_option.Single(o => o.Name == OptionGroup.Key).Id;
                    var AvailableProbes = OptionGroup.ToList().Join(_buffer.p_probes, r => r[1], p => p.SaleName, (r, p) => p).ToList();
                    var ForbiddenProbes = _buffer.p_probes.Except(AvailableProbes).ToList();

                    // allow for all listed probes
                    foreach (var AvailableProbe in AvailableProbes)
                    {
                        result.Add(new Uirule()
                        {
                            Allow      = AllowModes.Def,
                            OptionId   = OptionId,
                            ProbeId    = AvailableProbe.Id,
                            RuleOrigin = ruleOrigins.InputOptionProbeRule
                        });
                    }

                    // forbid the missing probes
                    foreach (var forbiddenProbe in ForbiddenProbes)
                    {
                        result.Add(new Uirule()
                        {
                            Allow      = AllowModes.No,
                            OptionId   = OptionId,
                            ProbeId    = forbiddenProbe.Id,
                            RuleOrigin = ruleOrigins.InputOptionProbeRule
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ParsingException(filename, ex);
            }
            return(result);
        }