// 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); }