/// <summary> /// Adds all the data from the paths in a file. /// </summary> /// <param name="output">The output.</param> /// <param name="paths">The paths.</param> public static void AddSheets(TextSource output, IEnumerable <string> paths) { foreach (var bank in Factory.Banks) { var lst = new List <Data>(); foreach (var bankSetting in bank.Settings) { var filesBank = paths.Where(f => f.Contains(bankSetting.DataSetting.Pattern)); if (filesBank?.Count() > 0) { foreach (var path in filesBank) { Console.WriteLine("Using the mapping {0} to read the file {1}", bank.Name, Path.GetFileName(path)); using (TextSource input = Factory.GetSource(Path.GetExtension(path))) { input.CreateBook(path); List <Data> data = null; if (bankSetting == null) { data = GetDataSheet(input, bankSetting, bank.Name); } else { data = GetCustomDataSheet(input, bankSetting, bank.Name); } if (data != null) { lst.AddRange(data); } } } } if (lst.Count > 0) { lst = lst.GroupBy(x => string.Concat(x.DateVal.ToString("yyyyMMdd"), x.Id)).Select(g => g.First()).ToList(); lst.Sort(); Func <Data, bool> filter = v => true; if (bankSetting.DataSetting.MaxVal > 0) { filter = v => Math.Abs(v.Value).IsBetween(bankSetting.DataSetting.MinVal, bankSetting.DataSetting.MaxVal); } else if (bankSetting.DataSetting.MinVal > 0) { filter = v => Math.Abs(v.Value) > bankSetting.DataSetting.MinVal; } lst = lst.Where(filter).ToList(); } } if (bank.IncludeBankSheet) { output.AddSheet(lst, bank.Name); } Factory.AddGlobalData(lst); } }
public static void AddSheetsByClassMapping(TextSource output, IEnumerable <string> paths) { foreach (var bank in Factory.Banks) { var dico = new Dictionary <string, Data>(); var lst = new List <Data>(); Type t = GetType(bank.Name); foreach (var bankSetting in bank.Settings) { var filesBank = paths.Where(f => f.Contains(bankSetting.DataSetting.Pattern)); if (filesBank?.Count() > 0) { foreach (var path in filesBank) { Console.WriteLine("Using the mapping {0} to read the file {1}", bank.Name, Path.GetFileName(path)); using (TextSource input = Factory.GetSource(Path.GetExtension(path))) { switch (bank.Name) { case "BNP": input.CreateBook(path); GetBNPSheet(input).ForEach(i => { var key = string.Concat(i.DateVal.ToString("yyyyMMdd"), i.Id); if (!dico.ContainsKey(key)) { dico.Add(key, i); } }); break; case "ING": input.CreateBook(path); GetINGSheet(input).ForEach(i => { var key = string.Concat(i.DateVal.ToString("yyyyMMdd"), i.Id); if (!dico.ContainsKey(key)) { dico.Add(key, i); } }); break; default: input.CreateBook(path); GetDataSheet(input, bankSetting, bank.Name).ForEach(i => { var key = string.Concat(i.DateVal.ToString("yyyyMMdd"), i.Id); if (!dico.ContainsKey(key)) { dico.Add(key, i); } }); break; } } } } if (dico.Count > 0) { foreach (var item in dico.Values) { lst.Add(item); } lst.Sort(); Func <Data, bool> filter = v => true; if (bankSetting.DataSetting.MaxVal > 0) { filter = v => Math.Abs(v.Value).IsBetween(bankSetting.DataSetting.MinVal, bankSetting.DataSetting.MaxVal); } else if (bankSetting.DataSetting.MinVal > 0) { filter = v => Math.Abs(v.Value) > bankSetting.DataSetting.MinVal; } lst = lst.Where(filter).ToList(); } } output.AddSheet(t, lst, bank.Name); Factory.AddGlobalData(lst); } }