static void Main(string[] args) { var console = new ConsoleFacade(); var dataManager = new DataManager(); try { //excel.GetFactoriesFromExcel().GetAwaiter().GetResult(); var task = dataManager.GetFactoriesFromExcel(); task.Start(); task.Wait(); foreach (var factory in dataManager.Factories) { factory.GetInfo(); } var ids = dataManager.Units.Where(d => dataManager.Tanks.Select(x => x.UnitId).Contains(d.ID)); var result = (from t in dataManager.Tanks join u in dataManager.Units on t.UnitId equals u.ID join f in dataManager.Factories on u.FactoryId equals f.ID select new { Unit = u, Tank = t, Factory = f }).ToList(); foreach (var r in result) { console.WriteInConsole($"Название резервуара = {r.Tank.Name}, название цеха = {r.Unit.Name}, название фабрики = {r.Factory.Name}\n"); } double sum = 0; foreach (var t in dataManager.Tanks) { sum += t.Volume; } console.WriteInConsole($"Сумма загрузки всех резервуаров: {sum}"); var search = new SearchCollection(); search.SearchInCollection(dataManager); console.WriteInConsole("Для сериализации нажмите 1"); var key = Console.ReadKey(); if (key.Key == ConsoleKey.D1 || key.Key == ConsoleKey.NumPad1) { var serialize = Serializer.Serialize((IReadOnlyCollection <Factory>)dataManager.Factories, (IReadOnlyCollection <Unit>)dataManager.Units, (IReadOnlyCollection <Tank>)dataManager.Tanks); File.WriteAllText("struct.json", serialize); } } catch (Exception e) { Console.WriteLine($"Возникло исключение {e.Message}"); } }
public void SearchInCollection(DataManager dataManager) { var console = new ConsoleFacade(); console.onConsoleReading += (message) => { console.WriteInConsole($"Вы ввели {message} в {DateTime.Now}"); }; Console.WriteLine("В какой коллекции выполнить поиск?\n"); string searchName; var key = Console.ReadKey(); var flag = true; while (flag) { if (key.Key == ConsoleKey.D1 || key.Key == ConsoleKey.NumPad1) { try { Console.WriteLine("\nВведите название фабрики\n"); searchName = console.ReadLineConsole().ToLower(); var searchFactory = dataManager.Factories.Where(f => f.Name.ToLower().Contains(searchName) || f.Desc.ToLower().Contains(searchName)); if (!searchFactory.Any()) { throw new InvalidOperationException(); } foreach (var s in searchFactory) { Console.WriteLine($"Название фабрики: {s.Name}, Описание: {s.Desc}"); } flag = false; } catch (Exception e) { throw new Exception("\nФабрика не найдена"); } } else if (key.Key == ConsoleKey.D2 || key.Key == ConsoleKey.NumPad2) { try { Console.WriteLine("\nВведите название установки\n"); searchName = console.ReadLineConsole().ToLower(); //var searchUnit = excel.units.Where(u => u.Name.ToLower().Contains(searhName)); var searchUnit = (from u in dataManager.Units where u.Name.ToLower().Contains(searchName) select u); if (!searchUnit.Any()) { throw new InvalidOperationException(); } foreach (var s in searchUnit) { Console.WriteLine($"Название установки: {s.Name}, Номер фабрики: {s.FactoryId}"); } flag = false; } catch (Exception e) { throw new Exception("\nУстановка не найдена"); } } else if (key.Key == ConsoleKey.D3 || key.Key == ConsoleKey.NumPad3) { try { Console.WriteLine("\nВведите название или параметр резервуара\n"); searchName = console.ReadLineConsole().ToLower(); var searchTank = dataManager.Tanks.Where(t => t.Name.ToLower().Contains(searchName) || t.Volume.ToString() == searchName || t.MaxVolume.ToString() == searchName); if (!searchTank.Any()) { throw new InvalidOperationException(); } foreach (var s in searchTank) { Console.WriteLine($"\nНазвание резервуара: {s.Name}, заполнение: {s.Volume}, максимальный объем {s.MaxVolume}"); } flag = false; } catch (Exception e) { throw new Exception("Резервуар не найден!"); } } else { flag = false; } } }