private void GetPage(string url) { var s = DownloadString.DownLHttpPostWithCookies(url, HttpsT2Federal1Ru, Cookie); if (string.IsNullOrEmpty(s)) { Log.Logger($"Empty string in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", url); return; } var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(s); var tens = htmlDoc.DocumentNode.SelectNodes( "//table[contains(@class, 'mte-grid-table')]/tbody/tr") ?? new HtmlNodeCollection(null); foreach (var a in tens) { try { ParserTender(a, url); } catch (Exception e) { Log.Logger(e); } } }
public void ParsingTender() { using (var connect = ConnectToDb.GetDbConnection()) { var dateUpd = DateTime.Now; 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 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("@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.DownLHttpPostWithCookies(_tn.Href, ParserFederal.HttpsT2Federal1Ru, ParserFederal.Cookie); 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 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; //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; if (!string.IsNullOrEmpty(EtpName)) { 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", EtpName); 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 addOrganizer = $"INSERT INTO {AppBuilder.Prefix}organizer SET full_name = @full_name, contact_phone = @contact_phone, contact_person = @contact_person, contact_email = @contact_email"; var cmd4 = new MySqlCommand(addOrganizer, connect); cmd4.Prepare(); cmd4.Parameters.AddWithValue("@full_name", EtpName); cmd4.Parameters.AddWithValue("@contact_phone", phone); cmd4.Parameters.AddWithValue("@contact_person", contactPerson); cmd4.Parameters.AddWithValue("@contact_email", email); cmd4.ExecuteNonQuery(); organiserId = (int)cmd4.LastInsertedId; } } GetEtp(connect, out var idEtp); GetPlacingWay(connect, out var idPlacingWay); var biddingDateT = navigator.SelectSingleNode( "//td[contains(., 'проведения аукциона')]/following-sibling::td")?.Value?.Trim() ?? ""; var dateBiddingT = biddingDateT.GetDataFromRegex(@"(\d{2}\.\d{2}\.\d{4}\s+\d{2}:\d{2})"); var biddingDate = dateBiddingT.ParseDateUn("dd.MM.yyyy HH:mm"); var scoringDateT = navigator.SelectSingleNode( "//td[contains(., 'рассмотрения заявок')]/following-sibling::td")?.Value?.Trim() ?? ""; var dateScoringT = scoringDateT.GetDataFromRegex(@"(\d{2}\.\d{2}\.\d{4}\s+\d{2}:\d{2})"); var scoringDate = dateScoringT.ParseDateUn("dd.MM.yyyy HH:mm"); 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", scoringDate); 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"; 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.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } AddAttachments(connect, idTender); AddLots(htmlDoc, connect, idTender, customerId); TenderKwords(connect, idTender); AddVerNumber(connect, _tn.PurNum, TypeFz); } }