Beispiel #1
0
        static void Main(string[] args)
        {
            while (true)
            {
                using (DataDbContext context = new DataDbContext())
                {
                    IRepository repository = new Repository(context);
                    Console.WriteLine("Чтобы получить содержимое базы данных введите в командной строке 'database'.");
                    Console.WriteLine("Чтобы получить информацию о стране введите ее название.\n");
                    string command = Console.ReadLine();
                    if (command.ToLower() == "database")
                    {
                        IEnumerable <CountryViewModel> result = repository.GetCountryViewModels();
                        foreach (var item in result)
                        {
                            Console.WriteLine(item.GetString());
                        }
                        Console.WriteLine();
                    }
                    else
                    {
                        HttpClient client = new HttpClient();
                        try
                        {
                            string result = client.GetStringAsync(String.Format("https://www.restcountries.eu/rest/v2/name/{0}", command)).Result;
                            JsonSerializerOptions options = new JsonSerializerOptions()
                            {
                                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                            };
                            CountryViewModel ViewModel = JsonSerializer.Deserialize <List <CountryViewModel> >(result, options).First();
                            Console.WriteLine(ViewModel.GetString());
                            Console.WriteLine("Сохранить информацию о стране в базе данных?");
                            Console.WriteLine(" y / n\n");
                            for (bool answered = false; answered == false;)
                            {
                                ConsoleKeyInfo key = Console.ReadKey();
                                switch (key.KeyChar)
                                {
                                case 'y':
                                    repository.AddViewModel(ViewModel);
                                    Console.WriteLine();
                                    Console.WriteLine("Данные были сохранены!");
                                    answered = true;
                                    break;

                                case 'n':
                                    Console.WriteLine();
                                    Console.WriteLine("Данные не были сохранены!");
                                    answered = true;
                                    break;
                                }
                            }
                        }
                        catch (AggregateException ex)
                        {
                            Console.WriteLine("Что-то пошло не так, количество ошибок: {0}, сообщение: {1}", ex.InnerExceptions.Count, ex.Message);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                        finally
                        {
                            Console.WriteLine();
                            client.Dispose();
                        }
                    }
                }
            }
        }