{ //methods public Models.Country Deserialize(string rawData) { CountryInfo countryInfo = new CountryInfo(); rawData = rawData.TrimStart('['); rawData = rawData.TrimEnd(']'); Models.Country tempElement = new Models.Country(); try { countryInfo = JsonConvert.DeserializeObject <CountryInfo>(rawData); } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); return(tempElement); } tempElement.Name = countryInfo.Name; tempElement.Code = countryInfo.Alpha3Code; tempElement.Area = countryInfo.Area; tempElement.Population = countryInfo.Population; tempElement.Cap.Name = countryInfo.Capital; tempElement.Reg.Name = countryInfo.Region; //TempElement.Show(); return(tempElement); }
//Methods private void SearchButton_Click(object sender, EventArgs e) { string countryinput = CountryInputBox.Text; CountryInfoExctractor exctractor = new CountryInfoExctractor(); //проверка заполненности поля ввода if (countryinput == "") { System.Windows.Forms.MessageBox.Show("Input field cannot be empty!"); } else { //Получение данных о стране в виде строки RawData в формате JSON с помощью внешнего API String RawData = exctractor.RequestCountryInfo(countryinput); if (RawData != "") { //Десериализация строки RawData в объект country типа Country Deserializer DSL = new Deserializer(); Models.Country country = DSL.Deserialize(RawData); //Отображение объекта country в TableView Representation repr = new Representation(country); TableView.DataSource = repr.Table; TableView.Visible = true; //Приглашение на сохранение CI if (country.Name != "") { SaveInfo(country); } } } }
//constructors //Таблица для отображения всех стран из базы public Representation(ArrayList list) { Table = new DataTable("Country Information"); this.MakeHeaders(); for (int i = 0; i < list.Count; i++) { Models.Country CI = ((Models.Country)list[i]); AddRow(CI); } }
//Заполнение строк private void AddRow(Models.Country CI) { DataRow row; row = Table.NewRow(); row[0] = CI.Name; row[1] = CI.Cap.Name; row[2] = CI.Reg.Name; row[3] = CI.Code; row[4] = CI.Area; row[5] = CI.Population; Table.Rows.Add(row); }
private void SaveInfo(Models.Country country) { //Диалог с предложением сохранения DialogResult result = MessageBox.Show("Вы хотите сохранить результат поиска в базу данных?", "Подтвердите действие", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { //Проверка наличия столицы страны country в таблице 'Города'. //Если Id не найден, значение country.сap.Name записывается в таблицу 'Города' //и Id новой записи записывается в country.Cap.Id country.Cap.Id = ((Models.Capital)country.Cap.FindIfExist()[0]).Id; if (country.Cap.Id == 0) { country.Cap.InsertinDB(); country.Cap.Id = ((Models.Capital)country.Cap.FindIfExist()[0]).Id; } //System.Windows.Forms.MessageBox.Show(p_CI.Cap.Id.ToString()); //Проверка наличия Региона страны country в таблице 'Регионы'. //Если Id не найден, значение country.reg.Name записывается в таблицу 'Регионы' //и Id новой записи записывается в country.reg.Id country.Reg.Id = ((Models.Region)country.Reg.FindIfExist()[0]).Id; if (country.Reg.Id == 0) { country.Reg.InsertinDB(); country.Reg.Id = ((Models.Region)country.Reg.FindIfExist()[0]).Id; } //System.Windows.Forms.MessageBox.Show(p_CI.Reg.Id.ToString()); //Проверка наличия страны country в таблице 'Страны'. //Если Id не найден, значение country.Name записывается в таблицу 'Страны' //и Id новой записи записывается в country.Id //иначе, значения найденной записи обновляются country.Id = ((Models.Country)country.FindIfExist()[0]).Id; if (country.Id == 0) { country.InsertinDB(); country.Id = ((Models.Country)country.FindIfExist()[0]).Id; } else { country.UpdateRecord(); } System.Windows.Forms.MessageBox.Show("Success."); } }
//Таблица для отображения одной страны (найденной в поиске) public Representation(Models.Country CI) { Table = new DataTable("Country Information"); this.MakeHeaders(); AddRow(CI); }