private void ParsingTekTkp() { var dateM = DateTime.Now.AddMinutes(-1 * DateMinus * 24 * 60); var urlStart = $"https://www.tektorg.ru/rosnefttkp/procedures?dpfrom={dateM:dd.MM.yyyy}"; var max = 0; try { max = SharedTekTorg.GetCountPage(urlStart); } catch (Exception e) { Log.Logger( $"Exception recieve count page in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", e, urlStart); } if (max == 0) { Log.Logger( $"Null count page in {GetType().Name}.{System.Reflection.MethodBase.GetCurrentMethod().Name}", urlStart); max = 1; } GetPage(max, urlStart); }
private void GetLots(IHtmlCollection <IElement> lots, MySqlConnection connect, int idTender, int customerId) { foreach (var lot in lots) { var lotNumT = (lot.QuerySelector("div.procedure__lot-header span")?.TextContent ?? "").Trim(); lotNumT = lotNumT.GetDataFromRegex(@"Лот (\d+)"); int.TryParse(lotNumT, out var lotNum); if (lotNum == 0) { lotNum = 1; } var currency = (lot.QuerySelector("td:contains('Валюта:') + td")?.TextContent ?? "").Trim(); var nmckT = (lot.QuerySelector("td:contains('Начальная цена:') + td")?.TextContent ?? "0.0") .Trim(); var nmck = SharedTekTorg.ParsePrice(nmckT); 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", nmck); cmd18.Parameters.AddWithValue("@currency", currency); cmd18.ExecuteNonQuery(); var idLot = (int)cmd18.LastInsertedId; var customerFullName = (lot.QuerySelector("td:contains('Заказчик:') + td")?.TextContent ?? "0.0").Trim(); if (!string.IsNullOrEmpty(customerFullName)) { 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", customerFullName); 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", customerFullName); cmd14.ExecuteNonQuery(); customerId = (int)cmd14.LastInsertedId; } } var purName = (lot.QuerySelector("td:contains('Предмет договора:') + td")?.TextContent ?? "").Trim(); var okpd2Temp = (lot.QuerySelector("td:contains('Код классификатора ОКДП/ОКПД2') + td")?.TextContent ?? "") .Trim(); var okpd2Code = okpd2Temp.GetDataFromRegex(@"^(\d[\.|\d]*\d)"); var okpd2GroupCode = 0; var okpd2GroupLevel1Code = ""; if (!String.IsNullOrEmpty(okpd2Code)) { GetOkpd(okpd2Code, out okpd2GroupCode, out okpd2GroupLevel1Code); } var okpdName = okpd2Temp.GetDataFromRegex(@"^\d[\.|\d]*\d (.*)$"); if (!string.IsNullOrEmpty(purName)) { 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"; var cmd19 = new MySqlCommand(insertLotitem, connect); cmd19.Prepare(); cmd19.Parameters.AddWithValue("@id_lot", idLot); cmd19.Parameters.AddWithValue("@id_customer", customerId); cmd19.Parameters.AddWithValue("@name", purName); cmd19.Parameters.AddWithValue("@sum", nmck); cmd19.Parameters.AddWithValue("@okpd2_code", okpd2Code); cmd19.Parameters.AddWithValue("@okpd2_group_code", okpd2GroupCode); cmd19.Parameters.AddWithValue("@okpd2_group_level1_code", okpd2GroupLevel1Code); cmd19.Parameters.AddWithValue("@okpd_name", okpdName); cmd19.ExecuteNonQuery(); } var appGuarAt = (lot.QuerySelector("td:contains('Обеспечение заявки:') + td")?.TextContent ?? "") .Trim(); var appGuarA = SharedTekTorg.ParsePrice(appGuarAt); if (appGuarA != 0.0m) { var insertCustomerRequirement = $"INSERT INTO {AppBuilder.Prefix}customer_requirement SET id_lot = @id_lot, id_customer = @id_customer, application_guarantee_amount = @application_guarantee_amount, max_price = @max_price"; var cmd16 = new MySqlCommand(insertCustomerRequirement, connect); cmd16.Prepare(); cmd16.Parameters.AddWithValue("@id_lot", idLot); cmd16.Parameters.AddWithValue("@id_customer", customerId); cmd16.Parameters.AddWithValue("@application_guarantee_amount", appGuarA); cmd16.Parameters.AddWithValue("@max_price", nmck); cmd16.ExecuteNonQuery(); } } }