Ejemplo n.º 1
0
        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}");
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }