public StructuraHotel XamlTable(string s, StructuraHotel st) { XElement el = XElement.Parse(s); //el.Save("D:/max.xml"); /*Получим адрес*/ IEnumerable<XElement> elements = el.Element("Контакты").Elements("Адрес"); foreach (XElement p in elements) { st.adress = p.Value.ToString(); } City c = new City(); st.city = c.GetCity(st.adress); /*Получим телефон*/ elements = el.Element("Контакты").Elements("Телефон"); foreach (XElement p in elements) { st.phone1 = p.Value.ToString(); } /*Получим сайт*/ elements = el.Element("Контакты").Elements("Сайт"); foreach (XElement p in elements) { st.www = p.Value.ToString(); } var parser = new Http_parser(); /*иначе выбрасывает исключение*/ if(st.www != null) st.www = parser.Parser_http(st.www); return st; }
public StructuraHotel GetHotel(StructuraHotel s, ncnew_module_description_list line) { /*Для чтения файла по uri*/ var gp = new GetPicFile(); s.name = line.name; //имя отеля s.description = line.description; //описание s.contacts = line.contacts; /*Считываем картинки*/ if (File.Exists(line.image1)) { s.image1 = gp.GetFile(line.image1); s.countPic++; } if (File.Exists(line.image2)) { s.image2 = gp.GetFile(line.image2); s.countPic++; } if (File.Exists(line.image3)) { s.image3 = gp.GetFile(line.image3); s.countPic++; } if (File.Exists(line.image4)) { s.image4 = gp.GetFile(line.image4); s.countPic++; } if (File.Exists(line.image5)) { s.image5 = gp.GetFile(line.image5); s.countPic++; } if (File.Exists(line.image6)) { s.image6 = gp.GetFile(line.image6); s.countPic++; } if (File.Exists(line.image7)) { s.image7 = gp.GetFile(line.image7); s.countPic++; } if (File.Exists(line.image8)) { s.image8 = gp.GetFile(line.image8); s.countPic++; } if (File.Exists(line.image9)) { s.image9 = gp.GetFile(line.image9); s.countPic++; } if (File.Exists(line.image10)) { s.image10 = gp.GetFile(line.image10);s.countPic++; } return s; }
public void SaveCategorySubcategory(StructuraHotel s, db_UH_UA db) { /*************Разбираемся с категорией - Город************************/ //1.Проверяем, есть ли уже такая (такой город), если есть - то catInBaza наш объект // нет - создадим категорию try { Categories catInBaza = (from p in db.Categories where p.CategoryName == s.city select p).Single(); var sub = new Subcategories { SubcategoryName = s.name }; catInBaza.Subcategories.Add(sub); return; } //Такой категории/города нет catch { var newCategory = new Categories { CategoryName = s.city }; var sub = new Subcategories { SubcategoryName = s.name }; newCategory.Subcategories.Add(sub); db.Categories.AddObject(newCategory); } }
public void RunCopy() { var sql = new dbUkraine(); var db = new db_UH_UA(); var productData = new StructuraHotel(); var getsql = new GetSql(); /*Создание пустой без инициализации объект BuildXaml*/ var xml = new BuildXaml(); /*Извлечение из xml город, тел ...*/ var structuraHotel = new XamlToTable(); //SaveUkrHotel - заполняет structuraHotel данными одного продукта //пока голая инициализация var s = new SaveUkrHotel(); //Получаем IQueryable отелей из базы MySQL удовлетворяющих некоторым условиям IQueryable<ncnew_module_description_list> singleProduct = from p in sql.ncnew_module_description_list .Where(p => p.description != "empty") .Where(p => p.description != "") .Where(p => p.description != null) .Where(p => p.image1 != "empty") .Where(p => p.image1 != "") .Where(p => p.image1 != null) //.Where(p => p.id < 50) .OrderBy(p => p.name) select p; //Задаем старт Id productData.Id = 1; //Главный цикл, в котором все и происходит, до этого ничего не делалось кроме IQueryable //перебираем IQueryable<singleProduct> foreach (var d in singleProduct) { //Очищаем структуру productData productData.Clear(); /*1. Получаем запись отеля*/ productData = getsql.GetHotel(productData, d); /*2. Преобразуем XAML, там разобрано на имя, телеф. и т д */ string descriptionHtml = xml.BuildHaml(productData.name, productData.description, productData.contacts, productData.Id); /*Будем записывать если есть данные*/ /*Если ошибка текста или нет контактов*/ if ((descriptionHtml != "ОШИБКА ОБРАБОТКИ") && (!string.IsNullOrEmpty(productData.contacts)) && (productData.countPic != 0) ) { /*3. Извлекаем из XAML город, тел, емаил, сайт*/ productData = structuraHotel.XamlTable(descriptionHtml, productData); /*Имеем все данные в productData - начинаем строить структуру Mtender*/ //1. Записываем категории/подкатегории s.SaveCategorySubcategory(productData, db); db.SaveChanges(); // int cat = (from p in db.Categories where p.CategoryName == productData.city select p.CategoryId).Single(); //Могут быть одинаковые поддиректории //Например Гостиница Украина в Киеве и .. int sub = (from p in db.Subcategories where (p.SubcategoryName == productData.name & p.CategorySet_CategoryId == cat) select p.SubcategoryId).First();//Single(); //Генерим объект Products var pp = s.SaveProduct(productData, cat, sub); db.Products.AddObject(pp); db.SaveChanges(); } } //Добавим в базу Products //db.SaveChanges(); }
//Добавляет в базу отдельные Product, они не связаны отношениями //с категориями и подкатегориями, но имеют свойства CategoryId и SubcategoryId public Products SaveProduct(StructuraHotel s, int cat, int sub) { int count = 0; var product = new Products { Name = s.name, City = s.city, Description = s.description, Contacts = s.contacts, Adress = s.adress, Phone = s.phone1, Site = s.www, //Обрежим Description и сделаем Title Title = MadeTitle(s.description), //Определим CategoryId и SubcategoryId CategoryId = cat, SubcategoryId = sub, Price = 10, EnrollmentDate = DateTime.Now }; //db.Products.AddObject(product); //Добавляем картинки if (count < s.countPic) { var img = new Pictures { PicBig = s.image1, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image2, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image3, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image4, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image5, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image6, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image7, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image8, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image9, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); count++; } if (count < s.countPic) { var img = new Pictures { PicBig = s.image10, PicBigMime = "image/jpeg" }; product.Pictures.Add(img); } return product; }