private void ParsingPage(int page) { var url = $"https://api.onlc.ru/purchases/v1/public/procedures?sort=-id&total=true&limit=100&offset={page * 100}&include=owner&filters%5BsearchType%5D=2"; var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", url); return; } var jObj = JObject.Parse(s); var tenders = GetElements(jObj, "data"); foreach (var t in tenders) { try { ParserTenderObj(t); } catch (Exception e) { Log.Logger($"Error in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e); } } }
protected int MaxPage() { if (DownloadString.MaxDownload >= 1000) { return(1); } var s = DownloadString.DownLUserAgent(CurrentUrl); if (string.IsNullOrEmpty(s)) { Log.Logger("cannot get first page from EIS", CurrentUrl); throw new Exception("cannot get first page from EIS"); } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var maxPageS = htmlDoc.DocumentNode.SelectSingleNode("//ul[@class = 'pages']/li[last()]/a/span")?.InnerText ?? "1"; if (int.TryParse(maxPageS, out var maxP)) { return(maxP); } return(1); }
private void ParsingPage(string url) { var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", url); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//div[@class = 'purchase-second-line']") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
private void ParsingPage(string url) { var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", url); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//div[@id = 'activeProcurements']/div[contains(@class, 'js-spoilerId')]") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
private void ParsingPage(string url) { var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", url); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//table[contains(@class, 'contractor_search_table')]//tr[position() > 1]") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
private void Parse(string _url) { var s = DownloadString.DownLUserAgent(_url); if (string.IsNullOrEmpty(s)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", _url); return; } var jObj = JObject.Parse(s); var totalCount = (int?)jObj.SelectToken("totalCount") ?? 0; if (_countPage == 0) { _countPage = totalCount / 50 + 1; } var tenders = GetElements(jObj, "entries"); foreach (var t in tenders) { try { ParserTenderObj(t); } catch (Exception e) { Log.Logger($"Error in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e, t.ToString()); } } }
private void ParsingPage(string url) { var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", url); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//table[@id = 'd']//tr[contains(., 'Дата начала подачи заявок:')]") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
private void GetPage(int num) { var url = $"https://tenders.mts.ru/api/v1/tenders?pageSize=20&page={num}&isSubscribe=false&attributesForSort=tenders_publication_date,desc"; var result = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(result)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", url); return; } var jObj = JObject.Parse(result); var tenders = GetElements(jObj, "data"); foreach (var t in tenders) { try { ParserTenderObj(t); } catch (Exception e) { Log.Logger($"Error in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e, t.ToString()); } } }
private void ParsingDpd() { var s = DownloadString.DownLUserAgent(_startUrl); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", _startUrl); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//a[starts-with(@href, '/tenders/index.php?r=site')]") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTendersList(a); } catch (Exception e) { Log.Logger(e); } } }
private void GetPage(int num) { var url = $"https://etp.dellin.ru/searchServlet?query={HttpUtility.UrlEncode($"{{\"types\":[\"BUYING\"]}}&filter={{\"state\":[\"GD\"]}}&sort={{\"placementDate\":false}}&limit={{\"min\":{num},\"max\":{num + 20},\"updateTotalCount\":true}}")}"; var result = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(result)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", url); return; } var jObj = JObject.Parse(result); var tenders = GetElements(jObj, "list"); foreach (var t in tenders) { try { ParserTenderObj(t); } catch (Exception e) { Log.Logger($"Error in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e, t.ToString()); } } }
private void ParsingPage(string url) { var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", url); return; } var parser = new HtmlParser(); var document = parser.Parse(s); var tens = document.All.Where(m => m.Id == "pag_data").Children("tr"); foreach (var t in tens) { try { ParsingTender(t, url); } catch (Exception e) { Log.Logger(e); } } }
private void GetPage(int num) { var url = $"https://torgi.etpu.ru/searchServlet?query=%7B%22types%22%3A%5B%22BUYING%22%2C%22SALE%22%2C%22RFI%22%2C%22SMALL_PURCHASE%22%5D%7D&filter=%7B%22state%22%3A%5B%22ALL%22%5D%7D&sort=%7B%22placementDate%22%3Afalse%7D&limit=%7B%22min%22%3A{num}%2C+%22max%22%3A{num + 20}%7D"; var result = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(result)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", url); return; } var jObj = JObject.Parse(result); var tenders = GetElements(jObj, "list"); foreach (var t in tenders) { try { ParserTenderObj(t); } catch (Exception e) { Log.Logger($"Error in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e, t.ToString()); } } }
private void ParsingPage() { var s = DownloadString.DownLUserAgent(_url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", _url); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//p[contains(., 'Заявки на участие')]") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
private void ParsingPage(int i) { var currUrl = CreateCurrentUrl(CurrentUrl, i); if (DownloadString.MaxDownload >= 1000) { return; } var s = DownloadString.DownLUserAgent(currUrl); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", currUrl); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//div[contains(@class, 'search-registry-entry-block')]/div[contains(@class, 'row')][1]//a[contains(@href, 'printForm/view')]") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserLink(a); } catch (Exception e) { Log.Logger(e); } } }
private void ParsingUral1() { var s = DownloadString.DownLUserAgent(_href); if (string.IsNullOrEmpty(s)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", _href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//div[@class = 'cardtender']/div") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND doc_publish_date = @doc_publish_date AND type_fz = @type_fz AND notice_version = @notice_version AND end_date = @end_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@notice_version", _tn.Status); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var dateUpd = DateTime.Now; var url = $"https://api-zakaz.bashkortostan.ru/apifront/purchases/{_tn.Id}"; var result = DownloadString.DownLUserAgent(url, false, headers); if (string.IsNullOrEmpty(result)) { Log.Logger( $"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", url); return; } var jobj = JObject.Parse(result); var t = jobj.SelectToken("data") ?? throw new ApplicationException($"data was not found {_tn.Href}"); var(updated, cancelStatus) = UpdateTenderVersion(connect, _tn.PurNum, dateUpd); CreaateOrganizer(connect, out var organiserId); GetEtp(connect, out var idEtp); var idRegion = GetRegionFromString("башкор", connect); PlacingWay = ((string)(t.SelectToken( "$..purchase_method")) ?? "").Trim(); GetPlacingWay(connect, out var idPlacingWay); var idTender = CreateTender(connect, 0, organiserId, idPlacingWay, idEtp, cancelStatus, dateUpd, updated); var attacments = GetElements(t, "documents"); WriteAttachments(connect, attacments, idTender); CreateCustomer(connect, out var customerId, t); CreateLot(connect, idTender, customerId, t); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND doc_publish_date = @doc_publish_date AND type_fz = @type_fz AND notice_version = @notice_version AND end_date = @end_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@notice_version", _tn.Status); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var(updated, cancelStatus) = UpdateTenderVersion(connect, _tn.PurNum, dateUpd); CreaateOrganizer(connect, out var organiserId); GetPlacingWay(connect, out var idPlacingWay); GetEtp(connect, out var idEtp); var idRegion = GetRegionFromString(_tn.RegionName, connect); var idTender = CreateTender(connect, idRegion, organiserId, idPlacingWay, idEtp, cancelStatus, dateUpd, updated); CreateCustomer(connect, out var customerId); AddAttachments(htmlDoc, connect, idTender); CreateLot(connect, idTender, customerId, htmlDoc); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
private void addPurObjects(MySqlConnection connect, int idLot, int customerId) { var url = $"https://api.onlc.ru/purchases/v1/public/procedures/{_tn.PurNum}/positions"; var s = DownloadString.DownLUserAgent(url); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in Tender()", url); } var jObj = JObject.Parse(s); var tenders = GetElements(jObj, "data"); tenders.ForEach(po => { var poName = ((string)po.SelectToken("Name") ?? "").Trim(); var cond = ((string)po.SelectToken("OwnerCondi") ?? "").Trim(); var ovnerSrok = ((string)po.SelectToken("OwnerSrok") ?? "").Trim(); var ovnerSklad = ((string)po.SelectToken("OwnerSklad") ?? "").Trim(); poName = $"{poName}\nТехнические характеристики товара: {cond}\nУсловия оплаты: {ovnerSrok}\nСрок поставки, наличие на складе: {ovnerSklad}" .ReplaceHtmlEntyty(); var okei = ((string)po.SelectToken("Metr") ?? "").Trim(); var price = ((string)po.SelectToken("Price") ?? "").Trim(); var sum = ((string)po.SelectToken("TotalPrice") ?? "").Trim(); var quant = ((string)po.SelectToken("TCount") ?? "").Trim(); var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, sum = @sum, okpd2_code = @okpd2_code, okpd2_group_code = @okpd2_group_code, okpd2_group_level1_code = @okpd2_group_level1_code, okpd_name = @okpd_name, price = @price, quantity_value = @quantity_value, okei = @okei, customer_quantity_value = @customer_quantity_value"; var cmd19 = new MySqlCommand(insertLotitem, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@id_customer", customerId); cmd19.Parameters.AddWithValue("@name", poName); cmd19.Parameters.AddWithValue("@sum", sum); cmd19.Parameters.AddWithValue("@okpd2_code", ""); cmd19.Parameters.AddWithValue("@okpd2_group_code", ""); cmd19.Parameters.AddWithValue("@okpd2_group_level1_code", ""); cmd19.Parameters.AddWithValue("@okpd_name", ""); cmd19.Parameters.AddWithValue("@price", price); cmd19.Parameters.AddWithValue("@quantity_value", quant); cmd19.Parameters.AddWithValue("@customer_quantity_value", quant); cmd19.Parameters.AddWithValue("@okei", okei); cmd19.ExecuteNonQuery(); }); }
private void GetPage(int num) { var headers = new Dictionary <string, string> { ["authority"] = "api-zakaz.bashkortostan.ru", ["sec-ch-ua"] = "\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"97\", \"Chromium\";v=\"97\"", ["accept"] = "application/json, text/plain, */*", ["sec-ch-ua-mobile"] = "?0", ["x-atmo"] = "jWkpQzwVDhahJyX9hnuZuqFH2xZA6fNf", ["user-agent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.36 Safari/537.36", ["origin"] = "https://zakaz.bashkortostan.ru", }; var url = $"https://api-zakaz.bashkortostan.ru/apifront/purchases?filter=%7B%22purchaseName%22:%22%22,%22conditionname%22:%22%22,%22orderType%22:null,%22customer%22:%22%22,%22regNumber%22:%22%22,%22orderDateStart%22:null,%22orderDateFinish%22:null,%22priceStartFrom%22:null,%22priceStartTo%22:null%7D&status=&page={num}"; var result = DownloadString.DownLUserAgent(url, false, headers); if (string.IsNullOrEmpty(result)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", url); return; } var jObj = JObject.Parse(result); var tenders = GetElements(jObj, "data"); foreach (var t in tenders) { try { ParserTenderObj(t); } catch (Exception e) { Log.Logger($"Error in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e, t.ToString()); } } }
private void CreateTenderFromDoc(string url) { var s = DownloadString.DownLUserAgent(url); if (String.IsNullOrEmpty(s)) { Log.Logger("Empty string in CreateTenderFromDoc()", url); return; } s = s.CleanStringXml(); var doc = new XmlDocument(); doc.LoadXml(s); var jsons = JsonConvert.SerializeXmlNode(doc); using var jr = new JsonTextReader(new StringReader(jsons)) { DateParseHandling = DateParseHandling.None }; var json = JToken.ReadFrom(jr); var firstOrDefault = json.Children().OfType <JProperty>().FirstOrDefault(p => p.Name.Contains("fcs")); if (firstOrDefault != null) { var tender = firstOrDefault.Value; var t = new TenderType44(tender, url); RunTenderParsing(t); } else { firstOrDefault = json.Children().OfType <JProperty>().FirstOrDefault(p => p.Name.Contains("epN")); if (firstOrDefault != null) { } else { Log.Logger("Can not to define the tender type", url); } } }
private void ParserTendersList(HtmlNode n) { var href = (n?.Attributes["href"]?.Value ?? "") .Trim().ReplaceHtmlEntyty().Replace("&", "&"); if (string.IsNullOrEmpty(href)) { Log.Logger("Empty href"); return; } href = $"https://www1.dpd.ru{href}"; var s = DownloadString.DownLUserAgent(href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParserPage()", href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//div[@class = 'list-view']//div[@class = 'view']") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a); } catch (Exception e) { Log.Logger(e); } } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date AND end_date = @end_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var dateUpd = DateTime.Now; var cancelStatus = 0; var updated = false; var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); updated = UpdateVersion(connect, updated, dateUpd, ref cancelStatus); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var orgName = EtpName; organiserId = AddOrganizer(orgName, connect, organiserId); var idPlacingWay = 0; GetEtp(connect, out var idEtp); var status = navigator.SelectSingleNode( "//span[contains(@class, 'tender-status')]") ?.Value?.Trim() ?? ""; var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", 0); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", status); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(_tn.OrgName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", _tn.OrgName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1, inn = @inn"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", _tn.OrgName); cmd14.Parameters.AddWithValue("@inn", ""); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var price = (navigator.SelectSingleNode("//li[contains(., 'Общий бюджет:')]") ?.Value ?? "").ReplaceHtmlEntyty().ExtractPriceNew().Trim(); var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency, finance_source = @finance_source"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", price); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.Parameters.AddWithValue("@finance_source", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, quantity_value = @quantity_value, okei = @okei, customer_quantity_value = @customer_quantity_value, price = @price, sum = @sum"; var cmd20 = new MySqlCommand(insertLotitem, connect); cmd20.Prepare(); cmd20.Parameters.AddWithValue("@id_lot", idLot); cmd20.Parameters.AddWithValue("@id_customer", customerId); cmd20.Parameters.AddWithValue("@name", _tn.PurName); cmd20.Parameters.AddWithValue("@quantity_value", ""); cmd20.Parameters.AddWithValue("@okei", ""); cmd20.Parameters.AddWithValue("@customer_quantity_value", ""); cmd20.Parameters.AddWithValue("@price", ""); cmd20.Parameters.AddWithValue("@sum", price); cmd20.ExecuteNonQuery(); if (!string.IsNullOrEmpty(_tn.City)) { var insertCustomerRequirement = $"INSERT INTO {AppBuilder.Prefix}customer_requirement SET id_lot = @id_lot, id_customer = @id_customer, delivery_place = @delivery_place, max_price = @max_price, delivery_term = @delivery_term"; var cmd16 = new MySqlCommand(insertCustomerRequirement, connect); cmd16.Prepare(); cmd16.Parameters.AddWithValue("@id_lot", idLot); cmd16.Parameters.AddWithValue("@id_customer", customerId); cmd16.Parameters.AddWithValue("@delivery_place", _tn.City); cmd16.Parameters.AddWithValue("@max_price", ""); cmd16.Parameters.AddWithValue("@delivery_term", ""); cmd16.ExecuteNonQuery(); } TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date AND end_date = @end_date AND notice_version = @notice_version"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd.Parameters.AddWithValue("@notice_version", _tn.Status); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var(updated, cancelStatus) = UpdateTenderVersion(connect, _tn.PurNum, dateUpd); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var orgName = EtpName; GetPlacingWay(connect, out var idPlacingWay); GetEtp(connect, out var idEtp); organiserId = AddOrganizer(orgName, connect, organiserId); var biddingDateT = (navigator .SelectSingleNode( "//td[. = 'Дата подведения итогов:']/following-sibling::td/div") ?.Value ?? "").Trim(); var biddingDate = biddingDateT.ParseDateUn("dd.MM.yyyy"); var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", 0); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", biddingDate); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", _tn.Status); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(_tn.CusName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", _tn.CusName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1, inn = @inn"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", _tn.CusName); cmd14.Parameters.AddWithValue("@inn", ""); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var docs = htmlDoc.DocumentNode.SelectNodes( "//div[@class = 'doc-item']") ?? new HtmlNodeCollection(null); foreach (var doc in docs) { var urlAttT = (doc.SelectSingleNode(".//a")?.Attributes["href"]?.Value ?? "").Trim(); var fName = doc.InnerText.Replace("Скачать", "").Trim(); var urlAtt = $"https://pptk-mos.ru{urlAttT}"; if (!string.IsNullOrEmpty(fName)) { var insertAttach = $"INSERT INTO {AppBuilder.Prefix}attachment SET id_tender = @id_tender, file_name = @file_name, url = @url"; var cmd10 = new MySqlCommand(insertAttach, connect); cmd10.Prepare(); cmd10.Parameters.AddWithValue("@id_tender", idTender); cmd10.Parameters.AddWithValue("@file_name", fName); cmd10.Parameters.AddWithValue("@url", urlAtt); cmd10.ExecuteNonQuery(); } } var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency, finance_source = @finance_source"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", _tn.Nmck); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.Parameters.AddWithValue("@finance_source", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, quantity_value = @quantity_value, okei = @okei, customer_quantity_value = @customer_quantity_value, price = @price, sum = @sum"; var cmd20 = new MySqlCommand(insertLotitem, connect); cmd20.Prepare(); cmd20.Parameters.AddWithValue("@id_lot", idLot); cmd20.Parameters.AddWithValue("@id_customer", customerId); cmd20.Parameters.AddWithValue("@name", _tn.PurName); cmd20.Parameters.AddWithValue("@quantity_value", ""); cmd20.Parameters.AddWithValue("@okei", ""); cmd20.Parameters.AddWithValue("@customer_quantity_value", ""); cmd20.Parameters.AddWithValue("@price", ""); cmd20.Parameters.AddWithValue("@sum", _tn.Nmck); cmd20.ExecuteNonQuery(); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date AND end_date = @end_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var(updated, cancelStatus) = UpdateTenderVersion(connect, _tn.PurNum, dateUpd); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var orgName = EtpName; var idPlacingWay = 0; GetEtp(connect, out var idEtp); organiserId = AddOrganizer(orgName, connect, organiserId); var region = (navigator.SelectSingleNode("//th[contains(., 'Регион')]/following-sibling::td") ?.Value ?? "").Trim(); var idRegion = GetRegionFromString(region, connect); var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", idRegion); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", ""); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(orgName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", orgName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1, inn = @inn"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", orgName); cmd14.Parameters.AddWithValue("@inn", ""); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var docs = htmlDoc.DocumentNode.SelectNodes( "//a[starts-with(@href, '/tenders/uploads')]") ?? new HtmlNodeCollection(null); foreach (var doc in docs) { var urlAttT = (doc?.Attributes["href"]?.Value ?? "").Trim(); var fName = doc.InnerText.Trim(); var urlAtt = $"https://www1.dpd.ru{urlAttT}"; if (!string.IsNullOrEmpty(fName)) { var insertAttach = $"INSERT INTO {AppBuilder.Prefix}attachment SET id_tender = @id_tender, file_name = @file_name, url = @url"; var cmd10 = new MySqlCommand(insertAttach, connect); cmd10.Prepare(); cmd10.Parameters.AddWithValue("@id_tender", idTender); cmd10.Parameters.AddWithValue("@file_name", fName); cmd10.Parameters.AddWithValue("@url", urlAtt); cmd10.ExecuteNonQuery(); } } var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency, finance_source = @finance_source"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", ""); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.Parameters.AddWithValue("@finance_source", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, quantity_value = @quantity_value, okei = @okei, customer_quantity_value = @customer_quantity_value, price = @price, sum = @sum"; var cmd20 = new MySqlCommand(insertLotitem, connect); cmd20.Prepare(); cmd20.Parameters.AddWithValue("@id_lot", idLot); cmd20.Parameters.AddWithValue("@id_customer", customerId); cmd20.Parameters.AddWithValue("@name", _tn.PurName); cmd20.Parameters.AddWithValue("@quantity_value", ""); cmd20.Parameters.AddWithValue("@okei", ""); cmd20.Parameters.AddWithValue("@customer_quantity_value", ""); cmd20.Parameters.AddWithValue("@price", ""); cmd20.Parameters.AddWithValue("@sum", ""); cmd20.ExecuteNonQuery(); var delivPlace = (navigator .SelectSingleNode("//th[contains(., 'Место поставки товара,')]/following-sibling::td") ?.Value ?? "").Trim(); var delivTerm1 = (navigator .SelectSingleNode("//th[contains(., 'Срок и условия')]/following-sibling::td") ?.Value ?? "").Trim(); var delivTerm2 = (navigator .SelectSingleNode("//th[contains(., 'Особенности размещения заказа')]/following-sibling::td") ?.Value ?? "").Trim(); var delivTerm3 = (navigator .SelectSingleNode("//th[contains(., 'Дополнительная информация')]/following-sibling::td") ?.Value ?? "").Trim(); var delivTerm = $"Срок и условия оплаты поставки товаров, выполнения работ, оказания услуг: {delivTerm1}\nОсобенности размещения заказа: {delivTerm2}\nДополнительная информация: {delivTerm3}"; if (!string.IsNullOrEmpty(delivPlace) || !string.IsNullOrEmpty(delivTerm)) { var insertCustomerRequirement = $"INSERT INTO {AppBuilder.Prefix}customer_requirement SET id_lot = @id_lot, id_customer = @id_customer, delivery_place = @delivery_place, max_price = @max_price, delivery_term = @delivery_term"; var cmd16 = new MySqlCommand(insertCustomerRequirement, connect); cmd16.Prepare(); cmd16.Parameters.AddWithValue("@id_lot", idLot); cmd16.Parameters.AddWithValue("@id_customer", customerId); cmd16.Parameters.AddWithValue("@delivery_place", delivPlace); cmd16.Parameters.AddWithValue("@max_price", ""); cmd16.Parameters.AddWithValue("@delivery_term", delivTerm); cmd16.ExecuteNonQuery(); } TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND doc_publish_date = @doc_publish_date AND type_fz = @type_fz AND end_date = @end_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger( $"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", _tn.Href); return; } var tender = JObject.Parse(s); var dateUpd = DateTime.Now; var(updated, cancelStatus) = UpdateTenderVersion(connect, _tn.PurNum, dateUpd); var printForm = _tn.Href; var organiserId = 0; var orgName = EtpName; if (orgName != "") { var selectOrg = $"SELECT id_organizer FROM {AppBuilder.Prefix}organizer WHERE full_name = @full_name"; var cmd3 = new MySqlCommand(selectOrg, connect); cmd3.Prepare(); cmd3.Parameters.AddWithValue("@full_name", orgName); var dt3 = new DataTable(); var adapter3 = new MySqlDataAdapter { SelectCommand = cmd3 }; adapter3.Fill(dt3); if (dt3.Rows.Count > 0) { organiserId = (int)dt3.Rows[0].ItemArray[0]; } else { var phone = ""; var email = ""; var contactPerson = ""; var inn = ""; var kpp = ""; var postAddr = ""; var addOrganizer = $"INSERT INTO {AppBuilder.Prefix}organizer SET full_name = @full_name, contact_phone = @contact_phone, contact_person = @contact_person, contact_email = @contact_email, inn = @inn, kpp = @kpp, post_address = @post_address"; var cmd4 = new MySqlCommand(addOrganizer, connect); cmd4.Prepare(); cmd4.Parameters.AddWithValue("@full_name", orgName); cmd4.Parameters.AddWithValue("@contact_phone", phone); cmd4.Parameters.AddWithValue("@contact_person", contactPerson); cmd4.Parameters.AddWithValue("@contact_email", email); cmd4.Parameters.AddWithValue("@inn", inn); cmd4.Parameters.AddWithValue("@kpp", kpp); cmd4.Parameters.AddWithValue("@post_address", postAddr); cmd4.ExecuteNonQuery(); organiserId = (int)cmd4.LastInsertedId; } } var idPlacingWay = 0; GetEtp(connect, out var idEtp); var idRegion = 0; var regions = GetElements(tender, "regions"); if (regions.Count == 1) { var regName = (string)regions[0].SelectToken("name") ?? ""; idRegion = GetRegionFromString(regName, connect); } var noticeVersion = (int?)tender.SelectToken("status") ?? 0; var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", idRegion); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", noticeVersion); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); var attacments = GetElements(tender, "customer_documents"); WriteAttachments(connect, attacments, idTender); var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", ""); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var customerId = 0; var cusName = ((string)tender.SelectToken("customer_name") ?? "").Trim(); var cusInn = ((string)tender.SelectToken("customer_inn") ?? "").Trim(); if (!string.IsNullOrEmpty(cusName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", cusName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, inn = @inn, is223=1"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", cusName); cmd14.Parameters.AddWithValue("@inn", cusInn); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var restricts = new List <string>(); var forSmallBusiness = (bool?)tender.SelectToken("for_small_business") ?? false; if (forSmallBusiness) { restricts.Add("Субъект малого и среднего предпринимательства"); } var forProducer = (bool?)tender.SelectToken("for_producer") ?? false; if (forProducer) { restricts.Add("Производитель"); } var forAuthorizedDealer = (bool?)tender.SelectToken("for_authorized_dealer") ?? false; if (forAuthorizedDealer) { restricts.Add("Официальный дилер"); } var russianProduction = (bool?)tender.SelectToken("russian_production") ?? false; if (russianProduction) { restricts.Add("Российское производство"); } var nationalProject = (bool?)tender.SelectToken("national_project") ?? false; if (nationalProject) { restricts.Add("Национальный проект"); } var denyAlternative = (bool?)tender.SelectToken("deny_alternative") ?? false; if (denyAlternative) { restricts.Add("Запрет альтернатив"); } foreach (var restrict in restricts) { var insertRestrict = $"INSERT INTO {AppBuilder.Prefix}restricts SET id_lot = @id_lot, foreign_info = @foreign_info, info = @info"; var cmd19 = new MySqlCommand(insertRestrict, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@foreign_info", restrict); cmd19.Parameters.AddWithValue("@info", ""); cmd19.ExecuteNonQuery(); } var delivDateS = (string)tender.SelectToken("date_delivery") ?? ""; var dateDeliv = delivDateS.ParseDateUn("yyyy-MM-dd"); var delivTerm = (string)tender.SelectToken("delivery_conditions") ?? ""; if (dateDeliv != DateTime.MinValue) { delivTerm = $"{delivTerm}\nПредполагаемая дата поставки / выполнения работ (услуг): {dateDeliv:yyyy-MM-dd}"; } foreach (var region in regions) { var regName = (string)regions[0].SelectToken("name") ?? ""; if (delivTerm != "" || regName != "") { var insertCustomerRequirement = $"INSERT INTO {AppBuilder.Prefix}customer_requirement SET id_lot = @id_lot, id_customer = @id_customer, max_price = @max_price, delivery_place = @delivery_place, delivery_term = @delivery_term"; var cmd16 = new MySqlCommand(insertCustomerRequirement, connect); cmd16.Prepare(); cmd16.Parameters.AddWithValue("@id_lot", idLot); cmd16.Parameters.AddWithValue("@id_customer", customerId); cmd16.Parameters.AddWithValue("@delivery_place", regName); cmd16.Parameters.AddWithValue("@delivery_term", delivTerm); cmd16.Parameters.AddWithValue("@max_price", ""); cmd16.ExecuteNonQuery(); } } if (regions.Count == 0) { var insertCustomerRequirement = $"INSERT INTO {AppBuilder.Prefix}customer_requirement SET id_lot = @id_lot, id_customer = @id_customer, max_price = @max_price, delivery_place = @delivery_place, delivery_term = @delivery_term"; var cmd16 = new MySqlCommand(insertCustomerRequirement, connect); cmd16.Prepare(); cmd16.Parameters.AddWithValue("@id_lot", idLot); cmd16.Parameters.AddWithValue("@id_customer", customerId); cmd16.Parameters.AddWithValue("@delivery_place", ""); cmd16.Parameters.AddWithValue("@delivery_term", delivTerm); cmd16.Parameters.AddWithValue("@max_price", ""); cmd16.ExecuteNonQuery(); } var purObjects = GetElements(tender, "positions"); purObjects.ForEach(po => { var okpdName = ((string)po.SelectToken( "okpd2_name") ?? "").Trim(); var okpdCode = ((string)po.SelectToken( "okpd2_code") ?? "").Trim(); var okei = ((string)po.SelectToken( "okei_name") ?? "").Trim(); var quantity = (string)po.SelectToken( "quantity") ?? ""; var price = (string)po.SelectToken( "max_price") ?? ""; var sum = (string)po.SelectToken( "max_cost") ?? ""; var poName = ((string)po.SelectToken( "position_name") ?? "").Trim(); var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, sum = @sum, okpd2_code = @okpd2_code, okpd2_group_code = @okpd2_group_code, okpd2_group_level1_code = @okpd2_group_level1_code, okpd_name = @okpd_name, quantity_value = @quantity_value, customer_quantity_value = @customer_quantity_value, okei = @okei, price = @price"; var cmd19 = new MySqlCommand(insertLotitem, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@id_customer", customerId); cmd19.Parameters.AddWithValue("@name", poName); cmd19.Parameters.AddWithValue("@sum", sum); cmd19.Parameters.AddWithValue("@okpd2_code", okpdCode); cmd19.Parameters.AddWithValue("@okpd2_group_code", ""); cmd19.Parameters.AddWithValue("@okpd2_group_level1_code", ""); cmd19.Parameters.AddWithValue("@okpd_name", okpdName); cmd19.Parameters.AddWithValue("@quantity_value", quantity); cmd19.Parameters.AddWithValue("@customer_quantity_value", quantity); cmd19.Parameters.AddWithValue("@okei", okei); cmd19.Parameters.AddWithValue("@price", price); cmd19.ExecuteNonQuery(); }); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var dateEndT = navigator .SelectSingleNode( "//td[contains(text(), 'Дата и время окончания приема предложений')]/following-sibling::td") ?.Value?.ReplaceHtmlEntyty()?.DelDoubleWhitespace().Trim() ?? throw new Exception( $"cannot find dateEndT in {_tn.Href}"); var dateEnd = dateEndT.ParseDateUn("dd.MM.yyyy HH:mm"); if (dateEnd == DateTime.MinValue) { Log.Logger("Empty dateEnd", _tn.Href); return; } using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND end_date = @end_date AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@end_date", dateEnd); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { //Log.Logger("This tender is exist in base", PurNum); return; } var cancelStatus = 0; var updated = false; var selectDateT = $"SELECT id_tender, date_version, cancel FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz"; var cmd2 = new MySqlCommand(selectDateT, connect); cmd2.Prepare(); cmd2.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd2.Parameters.AddWithValue("@type_fz", TypeFz); var adapter2 = new MySqlDataAdapter { SelectCommand = cmd2 }; var dt2 = new DataTable(); adapter2.Fill(dt2); foreach (DataRow row in dt2.Rows) { //DateTime dateNew = DateTime.Parse(pr.DatePublished); updated = true; if (dateUpd >= (DateTime)row["date_version"]) { row["cancel"] = 1; //row.AcceptChanges(); //row.SetModified(); } else { cancelStatus = 1; } } var commandBuilder = new MySqlCommandBuilder(adapter2) { ConflictOption = ConflictOption.OverwriteChanges }; adapter2.Update(dt2); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var inn = ""; var orgName = navigator.SelectSingleNode( "//td[contains(text(), 'Полное наименование заказчика, место нахождения организации, УНП')]/following-sibling::td/text()[1]") ?.Value?.ReplaceHtmlEntyty()?.Trim() ?? ""; if (!string.IsNullOrEmpty(orgName) || orgName != "-") { var selectOrg = $"SELECT id_organizer FROM {AppBuilder.Prefix}organizer WHERE full_name = @full_name"; var cmd3 = new MySqlCommand(selectOrg, connect); cmd3.Prepare(); cmd3.Parameters.AddWithValue("@full_name", orgName); var dt3 = new DataTable(); var adapter3 = new MySqlDataAdapter { SelectCommand = cmd3 }; adapter3.Fill(dt3); if (dt3.Rows.Count > 0) { organiserId = (int)dt3.Rows[0].ItemArray[0]; } else { var phone = ""; var email = ""; inn = navigator.SelectSingleNode( "//td[contains(text(), 'Полное наименование заказчика, место нахождения организации, УНП')]/following-sibling::td/text()[3]") ?.Value?.Trim() ?? ""; inn = inn.GetDataFromRegex(@"(\d{9})"); var kpp = ""; var contactPerson = navigator.SelectSingleNode( "//td[contains(text(), 'Фамилии, имена и отчества, номера телефонов работников заказчика')]/following-sibling::td") ?.Value?.Trim() ?? ""; var address = navigator.SelectSingleNode( "//td[contains(text(), 'Полное наименование заказчика, место нахождения организации, УНП')]/following-sibling::td/text()[2]") ?.Value?.Trim() ?? ""; var addOrganizer = $"INSERT INTO {AppBuilder.Prefix}organizer SET full_name = @full_name, contact_phone = @contact_phone, contact_person = @contact_person, contact_email = @contact_email, inn = @inn, kpp = @kpp, fact_address = @fact_address"; var cmd4 = new MySqlCommand(addOrganizer, connect); cmd4.Prepare(); cmd4.Parameters.AddWithValue("@full_name", orgName); cmd4.Parameters.AddWithValue("@contact_phone", phone); cmd4.Parameters.AddWithValue("@contact_person", contactPerson); cmd4.Parameters.AddWithValue("@contact_email", email); cmd4.Parameters.AddWithValue("@inn", inn); cmd4.Parameters.AddWithValue("@kpp", kpp); cmd4.Parameters.AddWithValue("@fact_address", address); cmd4.ExecuteNonQuery(); organiserId = (int)cmd4.LastInsertedId; } } var idPlacingWay = 0; GetEtp(connect, out var idEtp); var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", 0); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", dateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", ""); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(orgName) || orgName != "-") { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", orgName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1, inn = @inn"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", orgName); cmd14.Parameters.AddWithValue("@inn", inn); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } GetDocs(htmlDoc, connect, idTender); var requirements = new List <Req>(); var req1 = navigator.SelectSingleNode( "//td[contains(text(), 'Требования к составу участников')]/following-sibling::td") ?.Value?.Trim() ?? ""; var req2 = navigator.SelectSingleNode( "//td[contains(text(), 'Квалификационные требования')]/following-sibling::td") ?.Value?.Trim() ?? ""; if (!string.IsNullOrEmpty(req1)) { requirements.Add(new Req { Name = "Требования к составу участников", Content = req1 }); } if (!string.IsNullOrEmpty(req2)) { requirements.Add(new Req { Name = "Квалификационные требования", Content = req2 }); } GetLots(htmlDoc, connect, idTender, requirements, customerId); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND end_date = @end_date AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date AND notice_version = @notice_version"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@notice_version", _tn.Status); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { //Log.Logger("This tender is exist in base", PurNum); return; } var headers = new Dictionary <string, string> { ["sec-fetch-site"] = "none", ["sec-fetch-mode"] = "navigate", ["sec-fetch-user"] = "******", ["sec-fetch-dest"] = "document", ["accept-language"] = "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", }; var s = DownloadString.DownLUserAgent(_tn.Href, false, headers); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var cancelStatus = 0; var updated = false; var selectDateT = $"SELECT id_tender, date_version, cancel FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz"; var cmd2 = new MySqlCommand(selectDateT, connect); cmd2.Prepare(); cmd2.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd2.Parameters.AddWithValue("@type_fz", TypeFz); var adapter2 = new MySqlDataAdapter { SelectCommand = cmd2 }; var dt2 = new DataTable(); adapter2.Fill(dt2); foreach (DataRow row in dt2.Rows) { //DateTime dateNew = DateTime.Parse(pr.DatePublished); updated = true; if (dateUpd >= (DateTime)row["date_version"]) { row["cancel"] = 1; //row.AcceptChanges(); //row.SetModified(); } else { cancelStatus = 1; } } var commandBuilder = new MySqlCommandBuilder(adapter2) { ConflictOption = ConflictOption.OverwriteChanges }; adapter2.Update(dt2); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var orgName = (navigator .SelectSingleNode( "//div[contains(., 'Организатор')]/following-sibling::div") ?.Value ?? "").Trim(); if (orgName != "") { _tn.OrgName = orgName; } if (!string.IsNullOrEmpty(_tn.OrgName)) { var selectOrg = $"SELECT id_organizer FROM {AppBuilder.Prefix}organizer WHERE full_name = @full_name"; var cmd3 = new MySqlCommand(selectOrg, connect); cmd3.Prepare(); cmd3.Parameters.AddWithValue("@full_name", _tn.OrgName); var dt3 = new DataTable(); var adapter3 = new MySqlDataAdapter { SelectCommand = cmd3 }; adapter3.Fill(dt3); if (dt3.Rows.Count > 0) { organiserId = (int)dt3.Rows[0].ItemArray[0]; } else { var phone = (navigator .SelectSingleNode( "//div[contains(., 'Телефон')]/following-sibling::div") ?.Value ?? "").Trim(); var email = (navigator .SelectSingleNode( "//div[contains(., 'Электронная почта')]/following-sibling::div/a") ?.Value ?? "").Trim(); var inn = ""; var kpp = ""; var contactPerson = (navigator .SelectSingleNode( "//div[contains(., 'Контактное лицо')]/following-sibling::div") ?.Value ?? "").Trim(); var addOrganizer = $"INSERT INTO {AppBuilder.Prefix}organizer SET full_name = @full_name, contact_phone = @contact_phone, contact_person = @contact_person, contact_email = @contact_email, inn = @inn, kpp = @kpp"; var cmd4 = new MySqlCommand(addOrganizer, connect); cmd4.Prepare(); cmd4.Parameters.AddWithValue("@full_name", _tn.OrgName); cmd4.Parameters.AddWithValue("@contact_phone", phone); cmd4.Parameters.AddWithValue("@contact_person", contactPerson); cmd4.Parameters.AddWithValue("@contact_email", email); cmd4.Parameters.AddWithValue("@inn", inn); cmd4.Parameters.AddWithValue("@kpp", kpp); cmd4.ExecuteNonQuery(); organiserId = (int)cmd4.LastInsertedId; } } PlacingWay = (navigator .SelectSingleNode( "//div[contains(., 'Способ закупки')]/following-sibling::div") ?.Value ?? "").Trim(); GetPlacingWay(connect, out var idPlacingWay); GetEtp(connect, out var idEtp); var idRegion = 0; var regionName = (navigator .SelectSingleNode( "//div[contains(., 'Регион')]/following-sibling::div") ?.Value ?? "").Trim(); if (!string.IsNullOrEmpty(regionName)) { idRegion = GetRegionFromString(regionName, connect); } var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", idRegion); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", _tn.Status); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(_tn.OrgName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", _tn.OrgName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", _tn.OrgName); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var docs = htmlDoc.DocumentNode.SelectNodes( "//li[@class = 'documents-list__item']/a") ?? new HtmlNodeCollection(null); foreach (var doc in docs) { var urlAttT = (doc?.Attributes["href"]?.Value ?? "").Trim(); var fName = doc.InnerText.Trim().DelDoubleWhitespace(); var urlAtt = $"https://segezha-group.com{urlAttT}"; if (!string.IsNullOrEmpty(fName)) { var insertAttach = $"INSERT INTO {AppBuilder.Prefix}attachment SET id_tender = @id_tender, file_name = @file_name, url = @url"; var cmd10 = new MySqlCommand(insertAttach, connect); cmd10.Prepare(); cmd10.Parameters.AddWithValue("@id_tender", idTender); cmd10.Parameters.AddWithValue("@file_name", fName); cmd10.Parameters.AddWithValue("@url", urlAtt); cmd10.ExecuteNonQuery(); } } var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency, finance_source = @finance_source"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", ""); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.Parameters.AddWithValue("@finance_source", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, sum = @sum"; var cmd19 = new MySqlCommand(insertLotitem, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@id_customer", customerId); cmd19.Parameters.AddWithValue("@name", _tn.PurName); cmd19.Parameters.AddWithValue("@sum", ""); cmd19.ExecuteNonQuery(); var delivTerm = (navigator .SelectSingleNode( "//h3[contains(., 'ПРЕДМЕТ ЗАКУПКИ')]/following-sibling::div[@class = 'page-text']/text()") ?.Value ?? "").Trim(); if (!string.IsNullOrEmpty(delivTerm)) { var insertCustomerRequirement = $"INSERT INTO {AppBuilder.Prefix}customer_requirement SET id_lot = @id_lot, id_customer = @id_customer, delivery_place = @delivery_place, max_price = @max_price, delivery_term = @delivery_term"; var cmd16 = new MySqlCommand(insertCustomerRequirement, connect); cmd16.Prepare(); cmd16.Parameters.AddWithValue("@id_lot", idLot); cmd16.Parameters.AddWithValue("@id_customer", customerId); cmd16.Parameters.AddWithValue("@delivery_place", ""); cmd16.Parameters.AddWithValue("@max_price", ""); cmd16.Parameters.AddWithValue("@delivery_term", System.Net.WebUtility.HtmlDecode(delivTerm).DelDoubleWhitespace()); cmd16.ExecuteNonQuery(); } TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND end_date = @end_date AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date AND notice_version = @notice_version"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@notice_version", _tn.Status); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { //Log.Logger("This tender is exist in base", PurNum); return; } Thread.Sleep(5000); var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var cancelStatus = 0; var updated = false; var selectDateT = $"SELECT id_tender, date_version, cancel FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz"; var cmd2 = new MySqlCommand(selectDateT, connect); cmd2.Prepare(); cmd2.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd2.Parameters.AddWithValue("@type_fz", TypeFz); var adapter2 = new MySqlDataAdapter { SelectCommand = cmd2 }; var dt2 = new DataTable(); adapter2.Fill(dt2); foreach (DataRow row in dt2.Rows) { //DateTime dateNew = DateTime.Parse(pr.DatePublished); updated = true; if (dateUpd >= (DateTime)row["date_version"]) { row["cancel"] = 1; //row.AcceptChanges(); //row.SetModified(); } else { cancelStatus = 1; } } var commandBuilder = new MySqlCommandBuilder(adapter2) { ConflictOption = ConflictOption.OverwriteChanges }; adapter2.Update(dt2); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var orgName = (navigator .SelectSingleNode( "//div[contains(strong, 'Предприятие')]/ul/li[1]/text()[1]") ?.Value ?? "").Trim(); if (!string.IsNullOrEmpty(orgName)) { var selectOrg = $"SELECT id_organizer FROM {AppBuilder.Prefix}organizer WHERE full_name = @full_name"; var cmd3 = new MySqlCommand(selectOrg, connect); cmd3.Prepare(); cmd3.Parameters.AddWithValue("@full_name", orgName); var dt3 = new DataTable(); var adapter3 = new MySqlDataAdapter { SelectCommand = cmd3 }; adapter3.Fill(dt3); if (dt3.Rows.Count > 0) { organiserId = (int)dt3.Rows[0].ItemArray[0]; } else { var phone = (navigator .SelectSingleNode( "//li[contains(., 'По процедурным и организационным вопросам:')]/following-sibling::ul/li[3]") ?.Value.Replace("Тел.:", "").Replace(" ", "") ?? "").Trim(); var email = (navigator .SelectSingleNode( "//li[contains(., 'По процедурным и организационным вопросам:')]/following-sibling::ul/li[2]/a") ?.Value.Replace("Тел.:", "").Replace(" ", "") ?? "").Trim(); var inn = (navigator .SelectSingleNode( "//div[contains(strong, 'Предприятие')]/ul/li[1]/text()[2]") ?.Value.Replace("ИНН:", "") ?? "").Trim(); var kpp = (navigator .SelectSingleNode( "//div[contains(strong, 'Предприятие')]/ul/li[1]/text()[3]") ?.Value.Replace("КПП:", "") ?? "").Trim(); var contactPerson = (navigator .SelectSingleNode( "//li[contains(., 'По процедурным и организационным вопросам:')]/following-sibling::ul/li[1]/i") ?.Value.Replace("Тел.:", "").Replace(" ", "") ?? "").Trim(); var addOrganizer = $"INSERT INTO {AppBuilder.Prefix}organizer SET full_name = @full_name, contact_phone = @contact_phone, contact_person = @contact_person, contact_email = @contact_email, inn = @inn, kpp = @kpp"; var cmd4 = new MySqlCommand(addOrganizer, connect); cmd4.Prepare(); cmd4.Parameters.AddWithValue("@full_name", orgName); cmd4.Parameters.AddWithValue("@contact_phone", phone); cmd4.Parameters.AddWithValue("@contact_person", contactPerson); cmd4.Parameters.AddWithValue("@contact_email", email); cmd4.Parameters.AddWithValue("@inn", inn); cmd4.Parameters.AddWithValue("@kpp", kpp); cmd4.ExecuteNonQuery(); organiserId = (int)cmd4.LastInsertedId; } } var idPlacingWay = 0; GetEtp(connect, out var idEtp); var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", 0); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", _tn.Status); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(orgName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", orgName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", orgName); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var docs = htmlDoc.DocumentNode.SelectNodes( "//span[contains(., 'Документы:')]/following-sibling::ul/li/a") ?? new HtmlNodeCollection(null); foreach (var doc in docs) { var urlAttT = (doc?.Attributes["href"]?.Value ?? "").Trim(); var fName = (doc?.InnerText ?? "").Trim(); var urlAtt = $"http://sibintek.ru{urlAttT}"; if (!string.IsNullOrEmpty(fName)) { var insertAttach = $"INSERT INTO {AppBuilder.Prefix}attachment SET id_tender = @id_tender, file_name = @file_name, url = @url"; var cmd10 = new MySqlCommand(insertAttach, connect); cmd10.Prepare(); cmd10.Parameters.AddWithValue("@id_tender", idTender); cmd10.Parameters.AddWithValue("@file_name", fName); cmd10.Parameters.AddWithValue("@url", urlAtt); cmd10.ExecuteNonQuery(); } } var nmck = (navigator .SelectSingleNode( "//li[contains(b, 'Сведения о начальной цене договора (цене лота)')]/following-sibling::ul/li[1]") ?.Value ?? "").Trim(); nmck = nmck.GetDataFromRegex(@"([\d ,]+)\s"); nmck = nmck.Replace(" ", "").Replace(",", "."); nmck = Regex.Replace(nmck, @"\s+", ""); var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency, finance_source = @finance_source"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", nmck); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.Parameters.AddWithValue("@finance_source", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name, sum = @sum"; var cmd19 = new MySqlCommand(insertLotitem, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@id_customer", customerId); cmd19.Parameters.AddWithValue("@name", _tn.PurName); cmd19.Parameters.AddWithValue("@sum", nmck); cmd19.ExecuteNonQuery(); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date AND notice_version = @notice_version"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd.Parameters.AddWithValue("@notice_version", _tn.Status); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var dateUpd = DateTime.Now; var cancelStatus = 0; var updated = false; updated = UpdateDate(connect, updated, dateUpd, ref cancelStatus); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; organiserId = AddOrganizer(connect, organiserId); GetEtp(connect, out var idEtp); var resInsertTender = AddTender(connect, organiserId, idEtp, cancelStatus, dateUpd, printForm, out var idTender); Counter(resInsertTender, updated); customerId = AddCustomer(htmlDoc, connect, customerId); var idLot = AddLot(htmlDoc, connect, idTender); AddDelivTerms(htmlDoc, connect, idLot, customerId); var sPo = DownloadString.DownLUserAgent($"http://is-mt.pro/Purchase/ListCgc?id={_tn.PurNum}"); if (string.IsNullOrEmpty(sPo)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); } AddPurObjects(sPo, htmlDoc, connect, idLot, customerId); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { connect.Open(); var selectTend = $"SELECT id_tender FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz AND doc_publish_date = @doc_publish_date"; var cmd = new MySqlCommand(selectTend, connect); cmd.Prepare(); cmd.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd.Parameters.AddWithValue("@type_fz", TypeFz); cmd.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); var dt = new DataTable(); var adapter = new MySqlDataAdapter { SelectCommand = cmd }; adapter.Fill(dt); if (dt.Rows.Count > 0) { return; } var s = DownloadString.DownLUserAgent(_tn.Href); if (string.IsNullOrEmpty(s)) { Log.Logger("Empty string in ParsingTender()", _tn.Href); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var navigator = (HtmlNodeNavigator)htmlDoc.CreateNavigator(); var dateUpd = DateTime.Now; var cancelStatus = 0; var updated = false; var selectDateT = $"SELECT id_tender, date_version, cancel FROM {AppBuilder.Prefix}tender WHERE purchase_number = @purchase_number AND type_fz = @type_fz"; var cmd2 = new MySqlCommand(selectDateT, connect); cmd2.Prepare(); cmd2.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd2.Parameters.AddWithValue("@type_fz", TypeFz); var adapter2 = new MySqlDataAdapter { SelectCommand = cmd2 }; var dt2 = new DataTable(); adapter2.Fill(dt2); foreach (DataRow row in dt2.Rows) { updated = true; if (dateUpd >= (DateTime)row["date_version"]) { row["cancel"] = 1; } else { cancelStatus = 1; } } var commandBuilder = new MySqlCommandBuilder(adapter2) { ConflictOption = ConflictOption.OverwriteChanges }; adapter2.Update(dt2); var printForm = _tn.Href; var customerId = 0; var organiserId = 0; var orgName = "RubEx Group"; if (!string.IsNullOrEmpty(orgName)) { var selectOrg = $"SELECT id_organizer FROM {AppBuilder.Prefix}organizer WHERE full_name = @full_name"; var cmd3 = new MySqlCommand(selectOrg, connect); cmd3.Prepare(); cmd3.Parameters.AddWithValue("@full_name", orgName); var dt3 = new DataTable(); var adapter3 = new MySqlDataAdapter { SelectCommand = cmd3 }; adapter3.Fill(dt3); if (dt3.Rows.Count > 0) { organiserId = (int)dt3.Rows[0].ItemArray[0]; } else { var phone = "+7 4712 37-15-03"; var email = ""; var inn = ""; var kpp = ""; var contactPerson = ""; var addOrganizer = $"INSERT INTO {AppBuilder.Prefix}organizer SET full_name = @full_name, contact_phone = @contact_phone, contact_person = @contact_person, contact_email = @contact_email, inn = @inn, kpp = @kpp"; var cmd4 = new MySqlCommand(addOrganizer, connect); cmd4.Prepare(); cmd4.Parameters.AddWithValue("@full_name", orgName); cmd4.Parameters.AddWithValue("@contact_phone", phone); cmd4.Parameters.AddWithValue("@contact_person", contactPerson); cmd4.Parameters.AddWithValue("@contact_email", email); cmd4.Parameters.AddWithValue("@inn", inn); cmd4.Parameters.AddWithValue("@kpp", kpp); cmd4.ExecuteNonQuery(); organiserId = (int)cmd4.LastInsertedId; } } var idPlacingWay = 0; GetEtp(connect, out var idEtp); var dateEndT = htmlDoc.DocumentNode .SelectSingleNode( "//strong[contains(., 'Дата и время окончания приема заявок')]/following-sibling::strong") ?.InnerText.Trim(); var dateEnd = dateEndT.ParseDateUn("dd.MM.yyyy\nгода hh:ss часов 00 минут"); if (dateEnd == DateTime.MinValue) { dateEndT = s.GetDataFromRegex(@"(\d{2}\.\d{2}\.\d{4} года \d{2})"); dateEnd = dateEndT.ParseDateUn("dd.MM.yyyy года hh"); } if (dateEnd != DateTime.MinValue) { _tn.DateEnd = dateEnd; } var insertTender = $"INSERT INTO {AppBuilder.Prefix}tender SET id_region = @id_region, id_xml = @id_xml, purchase_number = @purchase_number, doc_publish_date = @doc_publish_date, href = @href, purchase_object_info = @purchase_object_info, type_fz = @type_fz, id_organizer = @id_organizer, id_placing_way = @id_placing_way, id_etp = @id_etp, end_date = @end_date, scoring_date = @scoring_date, bidding_date = @bidding_date, cancel = @cancel, date_version = @date_version, num_version = @num_version, notice_version = @notice_version, xml = @xml, print_form = @print_form"; var cmd9 = new MySqlCommand(insertTender, connect); cmd9.Prepare(); cmd9.Parameters.AddWithValue("@id_region", 0); cmd9.Parameters.AddWithValue("@id_xml", _tn.PurNum); cmd9.Parameters.AddWithValue("@purchase_number", _tn.PurNum); cmd9.Parameters.AddWithValue("@doc_publish_date", _tn.DatePub); cmd9.Parameters.AddWithValue("@href", _tn.Href); cmd9.Parameters.AddWithValue("@purchase_object_info", _tn.PurName); cmd9.Parameters.AddWithValue("@type_fz", TypeFz); cmd9.Parameters.AddWithValue("@id_organizer", organiserId); cmd9.Parameters.AddWithValue("@id_placing_way", idPlacingWay); cmd9.Parameters.AddWithValue("@id_etp", idEtp); cmd9.Parameters.AddWithValue("@end_date", _tn.DateEnd); cmd9.Parameters.AddWithValue("@scoring_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@bidding_date", DateTime.MinValue); cmd9.Parameters.AddWithValue("@cancel", cancelStatus); cmd9.Parameters.AddWithValue("@date_version", dateUpd); cmd9.Parameters.AddWithValue("@num_version", 1); cmd9.Parameters.AddWithValue("@notice_version", ""); cmd9.Parameters.AddWithValue("@xml", _tn.Href); cmd9.Parameters.AddWithValue("@print_form", printForm); var resInsertTender = cmd9.ExecuteNonQuery(); var idTender = (int)cmd9.LastInsertedId; Counter(resInsertTender, updated); if (!string.IsNullOrEmpty(orgName)) { var selectCustomer = $"SELECT id_customer FROM {AppBuilder.Prefix}customer WHERE full_name = @full_name"; var cmd13 = new MySqlCommand(selectCustomer, connect); cmd13.Prepare(); cmd13.Parameters.AddWithValue("@full_name", orgName); var reader7 = cmd13.ExecuteReader(); if (reader7.HasRows) { reader7.Read(); customerId = (int)reader7["id_customer"]; reader7.Close(); } else { reader7.Close(); var insertCustomer = $"INSERT INTO {AppBuilder.Prefix}customer SET reg_num = @reg_num, full_name = @full_name, is223=1, inn = @inn"; var cmd14 = new MySqlCommand(insertCustomer, connect); cmd14.Prepare(); var customerRegNumber = Guid.NewGuid().ToString(); cmd14.Parameters.AddWithValue("@reg_num", customerRegNumber); cmd14.Parameters.AddWithValue("@full_name", orgName); cmd14.Parameters.AddWithValue("@inn", ""); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var lotNum = 1; var insertLot = $"INSERT INTO {AppBuilder.Prefix}lot SET id_tender = @id_tender, lot_number = @lot_number, max_price = @max_price, currency = @currency, finance_source = @finance_source"; var cmd18 = new MySqlCommand(insertLot, connect); cmd18.Prepare(); cmd18.Parameters.AddWithValue("@id_tender", idTender); cmd18.Parameters.AddWithValue("@lot_number", lotNum); cmd18.Parameters.AddWithValue("@max_price", ""); cmd18.Parameters.AddWithValue("@currency", ""); cmd18.Parameters.AddWithValue("@finance_source", ""); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var insertLotitem = $"INSERT INTO {AppBuilder.Prefix}purchase_object SET id_lot = @id_lot, id_customer = @id_customer, name = @name"; var cmd19 = new MySqlCommand(insertLotitem, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@id_customer", customerId); cmd19.Parameters.AddWithValue("@name", _tn.PurName); cmd19.ExecuteNonQuery(); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }