/*Cria uma nova licitação para a modalidade Dispensa de Licitação.*/ private static Licitacao CreateLicitacao(ChromeDriver web, string ocnum, string municipio, string objeto, string situacao) { RService.Log("(CreateLicitacao) " + Name + ": Criando licitação.. " + ocnum + " at {0}", Path.GetTempPath() + Name + ".txt"); Licitacao licitacao = new Licitacao(); try { licitacao.Lote = Lote; licitacao.Num = ocnum; licitacao.IdLicitacaoFonte = long.Parse(ocnum); licitacao.SegmentoAguardandoEdital = 0; licitacao.DigitacaoUsuario = 43; //Robo licitacao.Modalidade = Modalidades[1]; licitacao.LinkSite = Constants.BEC_SITE; licitacao.Orgao = Orgao; licitacao.IdFonte = 507; licitacao.Excluido = 0; licitacao.Situacao = situacao; licitacao.Departamento = web.FindElement(By.Id("ctl00_DetalhesOfertaCompra1_txtNomUge")).Text; //Busca as datas dentro da página da licitação string dates = web.FindElement(By.Id("ctl00_DetalhesOfertaCompra1_txtPerCotEletronica")).Text.Replace(" às", "").Replace(" a", ""); MatchCollection matches = StringHandle.GetMatches(dates, @"(\d{2}\/\d{2}\/\d{4}\s+\d{2}:\d{2}:\d{2})"); if (matches != null) { licitacao.EntregaData = DateHandle.Parse(matches[0].Groups[1].Value, "dd/MM/yyyy hh:mm:ss"); licitacao.AberturaData = DateHandle.Parse(matches[1].Groups[1].Value, "dd/MM/yyyy hh:mm:ss"); if (licitacao.AberturaData < DateTime.Today) { return(null); } } //CultureInfo para tratar o nome do município var textInfo = new CultureInfo("pt-BR").TextInfo; municipio = municipio.ToLower(); licitacao.Cidade = textInfo.ToTitleCase(municipio).ToString(); licitacao.Estado = Constants.BEC_ESTADO; licitacao.EstadoFonte = Constants.BEC_UF; licitacao.CidadeFonte = Cidades.ContainsKey(licitacao.Cidade) ? Cidades[licitacao.Cidade] : CityUtil.GetCidadeFonte(licitacao.Cidade, Cidades); licitacao.Objeto = "Contratação de " + objeto; //Acessa a página com os itens da licitação web.FindElement(By.XPath("//*[@id=\"topMenu\"]/li[2]/a")).Click(); Thread.Sleep(3000); licitacao.ItensLicitacao = licitacao.ItensLicitacao ?? new List <ItemLicitacao>(); CreateItensLicitacao(web, licitacao); } catch (Exception e) { RService.Log("Exception (CreateLicitacao)" + Name + ":" + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null); }
private static Licitacao CreateLicitacao(HtmlDocument licPage, string link, string num, string situacao) { RService.Log("(CreateLicitacao) " + Name + ": Criando licitação " + num + " at {0}", Path.GetTempPath() + Name + ".txt"); Licitacao licitacao = new Licitacao(); try { licitacao.IdLicitacaoFonte = Convert.ToInt64(num); licitacao.IdFonte = 1249; licitacao.Estado = Constants.TCMCE_ESTADO; licitacao.EstadoFonte = Constants.TCMCE_UF; licitacao.LinkEdital = link; licitacao.LinkSite = Constants.TCMCE_HOST; licitacao.Lote = Lote; var licInfo = licPage.DocumentNode.ChildNodes[2].ChildNodes[5].ChildNodes[5].InnerHtml; string city = Regex.Replace(StringHandle.GetMatches(licInfo, @"h2>(.*)\|")[0].ToString(), @"h2>|\|", "").Trim(); string orgao = Regex.Replace(StringHandle.GetMatches(licInfo, @"\|(.*)<")[0].ToString(), @"(\|)|<", "").Trim(); string numero = Regex.Replace(StringHandle.GetMatches(licInfo, @"h1>(.*)</h1")[0].ToString(), @"h1>Licitação:|</h1", "").Trim(); string obj = Regex.Replace(StringHandle.GetMatches(licInfo, @"Objeto:( *)<b>(.|\n)*?</b>")[0].ToString(), @"Objeto:|<b>|</b>", "").Trim(); string modal = Regex.Replace(StringHandle.GetMatches(licInfo, @"Modalidade:( *)<b>(.*)</b>")[0].ToString(), @"Modalidade:|<b>|</b>", "").Split('|')[0].Trim(); if (modal == "Concorrência Pública") { modal = "Concorrência"; } string dataAb = Regex.Replace(StringHandle.GetMatches(licInfo, @"Data( *)de( *)Abertura:( *)<b>(.*)</b>")[0].ToString(), @"Data( *)de( *)Abertura:|<b>|</b>", "").Split('|')[0].Trim(); string horaAb = Regex.Replace(StringHandle.GetMatches(licInfo, @"Hora( *)da( *)Abertura:( *)<b>(.*)</b>")[0].ToString(), @"Hora( *)da( *)Abertura:|<b>|</b>", "").Trim(); string endereco = Regex.Replace(StringHandle.GetMatches(licInfo, @"Local:( *)<b>(.*)</b>")[0].ToString(), @"Local:|<b>|</b>", "").Trim(); string processo = Regex.Replace(StringHandle.GetMatches(licInfo, @"Administrativo:( *)<b>(.*)<")[0].ToString(), @"Administrativo:|<b>|<", "").Trim(); string dpto = ""; if (Regex.IsMatch(licInfo, @"Órgãos</b>", RegexOptions.IgnoreCase)) { dpto = Regex.Replace(StringHandle.GetMatches(licInfo, @"Órgãos</b>(.|\n)*?</li")[0].ToString(), @"Órgãos|</b>|<ul>|<li>|</li", "").Trim(); } string obs = Regex.Replace(StringHandle.GetMatches(licInfo, @"Objeto/Lote/Item(.|\n)*?</b")[0].ToString(), @"Objeto/Lote/Item:|<b>|</b", "").Trim(); city = city.ToLower(); var textInfo = new CultureInfo("pt-BR").TextInfo; licitacao.Cidade = textInfo.ToTitleCase(city).ToString(); licitacao.CidadeFonte = Cidades.ContainsKey(licitacao.Cidade.ToUpper()) ? Cidades[licitacao.Cidade.ToUpper()] : CityUtil.GetCidadeFonte(licitacao.Cidade, Cidades); licitacao.Departamento = dpto; licitacao.Orgao = OrgaoController.GetOrgaoByNameAndUf(orgao + ":CE", NameToOrgao); if (licitacao.Orgao.Nome == "Prefeitura Municipal") { licitacao.Orgao.Nome = "Prefeitura Municipal de " + licitacao.Cidade; } licitacao.Num = numero; licitacao.Processo = processo; licitacao.AberturaData = DateHandle.Parse(dataAb + " " + horaAb, "dd/MM/yyyy hh:mm:ss"); licitacao.EntregaData = licitacao.AberturaData; licitacao.Modalidade = NameToModalidade.ContainsKey(StringHandle.RemoveAccent(modal.ToUpper())) ? NameToModalidade[StringHandle.RemoveAccent(modal.ToUpper())] : null; licitacao.Situacao = situacao; licitacao.Objeto = obj; licitacao.Observacoes = obs; licitacao.Endereco = endereco; licitacao.DigitacaoUsuario = 43; //Id do Robô no sistema LM //licitacao.DigitacaoData = null; //licitacao.ProcessamentoData = null; } catch (Exception e) { RService.Log("Exception (CreateLicitacao) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null); }
/*Cria uma nova licitação para a modalidade Carta Convite*/ private static Licitacao CreateLicitacao(HtmlDocument htmDoc, string ocnum, string situacao) { RService.Log("(CreateLicitacao) " + Name + ": Criando licitação.. " + ocnum + " at {0}", Path.GetTempPath() + Name + ".txt"); Licitacao licitacao = new Licitacao(); try { licitacao.Lote = Lote; licitacao.Num = ocnum; licitacao.IdLicitacaoFonte = long.Parse(ocnum); licitacao.SegmentoAguardandoEdital = 0; licitacao.DigitacaoUsuario = 43; //Robo licitacao.Modalidade = Modalidades[0]; licitacao.LinkSite = Constants.BEC_SITE; licitacao.Orgao = Orgao; licitacao.IdFonte = 507; licitacao.Excluido = 0; licitacao.Situacao = situacao; int count = 0; /*Tabela com as informações da OC*/ var dadosOc = htmDoc.DocumentNode.Descendants().SingleOrDefault(x => x.Id == "ctl00_DetalhesOfertaCompra1_UpdatePanel1"); /*Percorre todas as colunas de todas as linhas dessa tabela*/ List <HtmlNode> inf = dadosOc.Descendants("td").ToList(); foreach (var data in inf) { if (data.InnerText.Trim().Contains("Proposta")) { MatchCollection matches = StringHandle.GetMatches(data.InnerText.Trim(), @"(\d{2}\/\d{2}\/\d{4}\s+\d{2}:\d{2}:\d{2})"); if (matches != null) { licitacao.EntregaData = DateHandle.Parse(matches[0].Groups[1].Value, "dd/MM/yyyy hh:mm:ss"); licitacao.AberturaData = DateHandle.Parse(matches[1].Groups[1].Value, "dd/MM/yyyy hh:mm:ss"); if (licitacao.AberturaData < DateTime.Today) { return(null); } } } else if (data.InnerText.Trim().Contains("UC")) { licitacao.Departamento = data.InnerText.Split(':')[1].Trim(); } count++; } var dadosUC = htmDoc.DocumentNode.Descendants().FirstOrDefault(x => x.Id == "formulario"); /*Percorre todas as colunas de todas as linhas dessa tabela*/ List <HtmlNode> infUC = dadosUC.Descendants("span").ToList(); foreach (var info in infUC) { if (info.Id.Equals("ctl00_c_area_conteudo_wuc_dados_oc1_txt_endereco_uge")) { licitacao.Endereco = info.InnerText.Trim(); } else if (info.Id.Equals("ctl00_c_area_conteudo_wuc_dados_oc1_txt_local_entrega")) { string localidade = info.InnerText.Split('-').Last().ToString(); string[] cidadeEstado = localidade.Split('/'); string cidade = cidadeEstado.Last().ToString().ToLower().Trim(); //CultureInfo para poder tornar apenas as iniciais maiúsculas var textInfo = new CultureInfo("pt-BR").TextInfo; licitacao.Cidade = textInfo.ToTitleCase(cidade).ToString(); licitacao.Estado = Constants.BEC_ESTADO; licitacao.EstadoFonte = Constants.BEC_UF; cidade = licitacao.Cidade.ToString(); licitacao.CidadeFonte = Cidades.ContainsKey(cidade) ? Cidades[cidade] : CityUtil.GetCidadeFonte(cidade, Cidades); } else if (info.Id.Equals("ctl00_c_area_conteudo_wuc_dados_oc1_txt_natureza_despesa")) { licitacao.Objeto = "Contratação de " + info.InnerText.ToString().Trim(); } } NameValueCollection formData = new NameValueCollection(); href = href.Replace("Fornecedores_Dados_OC", "OC_Item"); var htmItens = WebHandle.GetHtmlDocOfPageDefaultEncoding(href, formData); licitacao.ItensLicitacao = licitacao.ItensLicitacao ?? new List <ItemLicitacao>(); /*Contador das linhas da tabela*/ CreateItensLicitacao(htmItens, licitacao); } catch (Exception e) { RService.Log("Exception (CreateLicitacao)" + Name + ":" + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null); }
private static void HandleCidade(Licitacao licitacao, string orgao) { Dictionary <string, int?> ufToCidade = UfToNomeCidadeToIdCidade.ContainsKey(licitacao.EstadoFonte) ? UfToNomeCidadeToIdCidade[licitacao.EstadoFonte] : null; List <Cidade> cities = new CidadeRepository().FindByUf(licitacao.EstadoFonte); string cidadeEstado = CityUtil.FindCity(licitacao); string cityMatch = GetCityMatch(ufToCidade, orgao); if (orgao.Contains("MUNICIPIO")) { licitacao.Cidade = orgao.Replace("MUNICIPIO DE ", "").Replace("MUNICIPIO DA ", ""); licitacao.CidadeFonte = ufToCidade.ContainsKey(StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())) ? ufToCidade[StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())] : CityUtil.GetCidadeFonte(licitacao.Cidade, ufToCidade); return; } if (orgao.Contains("PREFEITURA MUNICIPAL")) { licitacao.Cidade = orgao.Replace("PREFEITURA MUNICIPAL DE ", "").Replace("PREFEITURA MUNICIPAL DA ", ""); licitacao.CidadeFonte = ufToCidade.ContainsKey(StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())) ? ufToCidade[StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())] : CityUtil.GetCidadeFonte(licitacao.Cidade, ufToCidade); return; } if (!string.IsNullOrEmpty(cidadeEstado)) { licitacao.Cidade = cidadeEstado.Split('/')[0]; licitacao.CidadeFonte = Convert.ToInt16(cidadeEstado.Split('/')[2]); return; } if (!string.IsNullOrEmpty(cityMatch)) { licitacao.Cidade = cityMatch.ToUpper(); licitacao.CidadeFonte = ufToCidade.ContainsKey(StringHandle.RemoveAccent(cityMatch.ToUpper())) ? ufToCidade[StringHandle.RemoveAccent(cityMatch.ToUpper())] : CityUtil.GetCidadeFonte(licitacao.Cidade, ufToCidade); return; } if (licitacao.Cidade == null || licitacao.CidadeFonte == null) { if (UfToCapital.ContainsKey(licitacao.EstadoFonte)) { licitacao.Cidade = UfToCapital[licitacao.EstadoFonte]; licitacao.CidadeFonte = ufToCidade != null?ufToCidade.ContainsKey(StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())) ? ufToCidade[StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())] : null : null; } else { Orgao orgaoDb = OrgaoRepository.FindOrgao(licitacao.Departamento); if (orgaoDb != null) { licitacao.Cidade = UfToCapital.ContainsKey(orgaoDb.Estado) ? UfToCapital[orgaoDb.Estado] : null; licitacao.CidadeFonte = ufToCidade != null? ufToCidade.ContainsKey(StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())) ? ufToCidade[StringHandle.RemoveAccent(licitacao.Cidade.ToUpper())] : null : null; } } } }
private static Licitacao CreateQuote(HtmlDocument htmlQuote, string quoteLink, out string situacao) { Licitacao l = new Licitacao(); int count = 0; situacao = null; try { l.IdFonte = 508; l.LinkEdital = string.Format(Constants.CN_COTACAO_LINK, quoteLink); l.LinkSite = Constants.CN_HOST; l.Excluido = 0; l.SegmentoAguardandoEdital = 0; l.DigitacaoUsuario = 43; //Robo l.Lote = lote; l.Modalidade = nameToModalidade.ContainsKey("COTACAO ELETRONICA") ? nameToModalidade["COTACAO ELETRONICA"] : null; l.ItensLicitacao = l.ItensLicitacao ?? new List <ItemLicitacao>(); foreach (var row in htmlQuote.DocumentNode.Descendants("tr").Where(x => x.Attributes.Contains("height"))) { switch (count) { case 0: string uasg = row.InnerText.Split('-')[0].TrimEnd().Replace("UASG: ", ""); string departamento = string.Empty; if (row.InnerText.Split('-').Count() > 2) { for (int i = 1; i < row.InnerText.Split('-').Count(); i++) { if (i != 1) { departamento = departamento + "-" + row.InnerText.Split('-')[i].TrimStart(); } else { departamento = row.InnerText.Split('-')[i].TrimStart(); } } } else { departamento = row.InnerText.Split('-')[1].TrimStart(); } l.Uasg = uasg; l.Departamento = departamento; break; case 1: string numero = row.InnerText.Split(':')[1].TrimStart(); l.Num = numero; break; case 2: string objeto = row.InnerText.Replace("Objeto: ", string.Empty); l.Objeto = objeto; break; case 3: string dataEntrega = row.InnerText.Split(':')[1].TrimStart(); l.EntregaData = Convert.ToDateTime(dataEntrega); break; case 4: string obsLink = row.ChildNodes[0].ChildNodes[1].Attributes["href"].Value.ToString().Remove(0, 8); HtmlDocument htmlObs = WebHandle.GetHtmlDocOfPage(string.Format(Constants.CN_COTACAO_LINK, obsLink), Encoding.GetEncoding("ISO-8859-1")); string obs = Regex.Replace(htmlObs.DocumentNode.InnerHtml.ToString(), "<.*?>", string.Empty) .Replace("\n\n\n\n \tCOMPRASNET - O Portal de Compras do Governo Federal :: Observações Gerais da Cotação Eletrônica.\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\n\n function erroLogin(){\n window.opener.erroLogin();\n window.close();\n }\n\n\n\n function popup(ev, elA, features) {\n var url, target;\n url = elA.getAttribute(\"href\");\n target = elA.getAttribute(\"target\");\n window.open(url, target, features);\n\n if (ev.cancelBubble != undefined) { //IE\n ev.cancelBubble = true; \n ev.returnValue = false;\n }\n if (ev.preventDefault) ev.preventDefault(); //Outros\n }\n\n\n\n\n\n\nAguarde!\n\n\nObservações Gerais da Cotação Eletrônica\n\r\n ", string.Empty) .Replace(" ", string.Empty); if (icms) { l.Observacoes = "ICMS: Sim\n\n" + obs; } else { l.Observacoes = "ICMS: Não\n\n" + obs; } break; case 5: situacao = Regex.Replace(StringHandle.GetMatches(row.InnerHtml, @"Situação:( *)</b><span(.*?)>(.*?)</span")[0].ToString(), @"Situação:|</b><span(.*?)>|</span", "").Trim(); l.Situacao = situacao; break; case 6: string dataAbertura = row.InnerText.Split(':')[1].TrimStart().Split('(')[0].Replace('h', ':'); l.AberturaData = DateHandle.Parse(dataAbertura, "dd/MM/yyyy hh:mm"); break; case 7: string valor = row.InnerText.Split(':')[1].TrimStart(); l.ValorMax = valor; break; } count++; } l.IdLicitacaoFonte = Convert.ToInt64(l.Uasg + l.Num.ToString()); Licitacao oldLic = LicitacaoRepository.FindByUASG(l.Uasg); if (oldLic != null) { l.Orgao = oldLic.Orgao; l.EstadoFonte = oldLic.EstadoFonte; l.CidadeFonte = oldLic.CidadeFonte; l.Endereco = oldLic.Endereco; l.Cidade = oldLic.Cidade; l.Estado = oldLic.Estado; } else { l.Orgao = OrgaoRepository.FindOrgao(l.Departamento); if (l.Orgao == null) { Orgao org = OrgaoRepository.CreateOrgao(l.Departamento, l.Observacoes); OrgaoRepository repo = new OrgaoRepository(); repo.Insert(org); l.Orgao = org; } l.Estado = l.Orgao.Estado; l.EstadoFonte = l.Orgao.Estado; l.Cidade = ufToCapital.ContainsKey(l.EstadoFonte) ? ufToCapital[l.EstadoFonte] : null; Dictionary <string, int?> ufToCidade = ufToNomeCidadeToIdCidade.ContainsKey(l.EstadoFonte) ? ufToNomeCidadeToIdCidade[l.EstadoFonte] : null; l.CidadeFonte = ufToCidade != null?ufToCidade.ContainsKey(StringHandle.RemoveAccent(l.Cidade.ToUpper())) ? ufToCidade[StringHandle.RemoveAccent(l.Cidade.ToUpper())] : CityUtil.GetCidadeFonte(l.Cidade, ufToCidade) : CityUtil.GetCidadeFonte(l.Cidade, ufToCidade); l.Endereco = null; } GetItens(htmlQuote, l); return(LicitacaoController.IsValid(l, out mensagemErro) ? l : null); } catch (Exception e) { if (l.Orgao == null) { RService.Log("Exception (CreateQuote) " + Name + ": Órgão não foi localizado - ver log do serviço RService" + " at {0}", Path.GetTempPath() + Name + ".txt"); } else { RService.Log("Exception (CreateQuote) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } return(null); } }
private static Licitacao CreateLicitacao(string licitLink, int index) { ChromeDriver webLicit = null; if (web != null) { web.Quit(); } var driver = ChromeDriverService.CreateDefaultService(); driver.HideCommandPromptWindow = true; var op = new ChromeOptions(); webLicit = new ChromeDriver(driver, new ChromeOptions(), TimeSpan.FromSeconds(300)); webLicit.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(300); wait = new WebDriverWait(web, TimeSpan.FromSeconds(300)); Licitacao licitacao = new Licitacao(); licitacao.IdLicitacaoFonte = Convert.ToInt64(licitLink.Split('=')[1].Split('&')[0]); licitacao.IdFonte = 1250; licitacao.Estado = Constants.TCESE_ESTADO; licitacao.EstadoFonte = Constants.TCESE_UF; licitacao.LinkEdital = licitLink; licitacao.LinkSite = Constants.TCESE_HOST; licitacao.DigitacaoUsuario = 43; licitacao.Lote = Lote; //licitacao.DigitacaoData = null; //licitacao.ProcessamentoData = null; try { webLicit.Navigate().GoToUrl(licitLink); string licitText = webLicit.FindElement(By.XPath("//*[@id=\"aspnetForm\"]/table[3]/tbody/tr/td[2]")).Text; var textInfo = new CultureInfo("pt-BR").TextInfo; string dataAb = webLicit.FindElement(By.Id("ctl00_ContentPlaceHolder1_lblCte_DtLicitacaoMIA")).Text; licitacao.AberturaData = Convert.ToDateTime(StringHandle.GetMatches(dataAb, @"\d+/\d+/\d+")[0].ToString()); string dataEnt = webLicit.FindElement(By.Id("ctl00_ContentPlaceHolder1_lblCto_DtModificacaoMIA")).Text; licitacao.EntregaData = Convert.ToDateTime(dataEnt); licitacao.Cidade = Constants.TCESE_MUN_NAME[index].Replace("PREFEITURA MUNICIPAL DE ", ""); licitacao.CidadeFonte = Cidades.ContainsKey(licitacao.Cidade) ? Cidades[licitacao.Cidade] : CityUtil.GetCidadeFonte(licitacao.Cidade, Cidades); licitacao.Departamento = Constants.TCESE_MUN_NAME[index]; licitacao.Endereco = webLicit.FindElement(By.Id("ctl00_ContentPlaceHolder1_lblCte_LocalMIA")).Text; string modal = StringHandle.GetMatches(licitText, @"Modalidade:(.*?)Número")[0].ToString().Split(':')[1].Replace(" Número", "").Trim(); licitacao.Modalidade = NameToModalidade.ContainsKey(StringHandle.RemoveAccent(modal.ToUpper())) ? NameToModalidade[StringHandle.RemoveAccent(modal.ToUpper())] : null; licitacao.Num = StringHandle.GetMatches(licitText, "Ano:(.*)")[0].ToString().Replace("Ano:", "").Replace("\r", ""); licitacao.Objeto = webLicit.FindElement(By.Id("ctl00_ContentPlaceHolder1_lblCto_ResumoMIA")).Text; licitacao.Observacoes = webLicit.FindElement(By.Id("ctl00_ContentPlaceHolder1_lblCto_ConteudoMIA")).Text; licitacao.Orgao = OrgaoController.GetOrgaoByNameAndUf(textInfo.ToTitleCase(licitacao.Departamento) + ":SE", NameToOrgao); } catch (Exception e) { RService.Log("Exception (CreateLicitacao) " + name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", logPath); } finally { if (webLicit != null) { webLicit.Close(); } } return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null); }
//Cria a licitação em questão com os respectivos dados private static Licitacao CreateLicitacao(string lic) { Licitacao licitacao = new Licitacao(); try { licitacao.DigitacaoUsuario = 43; licitacao.Estado = Constants.TCEPI_ESTADO; licitacao.EstadoFonte = Constants.TCEPI_UF; licitacao.IdLicitacaoFonte = Convert.ToInt64(lic); licitacao.IdFonte = 1442; licitacao.LinkEdital = string.Format(Constants.TCEPI_LICIT, lic); licitacao.LinkSite = Constants.TCEPI_HOST; licitacao.Lote = lote; web.Navigate().GoToUrl(licitacao.LinkEdital); string licitacaoHtmlText = web.PageSource.ToString(); var helper = StringHandle.GetMatches(licitacaoHtmlText, "negrito\">(.|\n)*?</span"); licitacao.Processo = helper[1].ToString().Replace("negrito\">", "").Replace("</span", "").Replace("Pregão ", ""); licitacao.Observacoes = null; licitacao.AberturaData = Convert.ToDateTime(helper[2].ToString().Replace("negrito\">", "").Replace("</span", "")); licitacao.EntregaData = Convert.ToDateTime(helper[7].ToString().Replace("negrito\">", "").Replace("</span", "")); licitacao.ValorMax = helper[4].ToString().Replace("negrito\">", "").Replace("</span", ""); var num = web.FindElement(By.XPath("//*[@id=\"j_idt23_content\"]/div[1]/div[2]/span")); licitacao.Num = num.Text.Split('º')[1].Trim(); var modalidade = num.Text.Split('º')[0].Replace(" N", "").Trim(); licitacao.Modalidade = NameToModalidade.ContainsKey(StringHandle.RemoveAccent(modalidade.ToUpper())) ? NameToModalidade[StringHandle.RemoveAccent(modalidade.ToUpper())] : null; if (licitacao.Modalidade == null) { licitacao.Modalidade = NameToModalidade["PREGAO"]; } var objeto = web.FindElement(By.XPath("//*[@id=\"j_idt23_content\"]/div[4]/div[2]/label")); licitacao.Objeto = objeto.Text.Trim(); var depto = web.FindElement(By.XPath("//*[@id=\"j_idt20_content\"]/div/div[2]/h2")); licitacao.Departamento = depto.Text.Trim(); licitacao.Orgao = OrgaoController.GetOrgaoByNameAndUf(licitacao.Departamento + ":PI", NameToOrgao); if (licitacao.Departamento.Contains("P. M. DE ")) { var textInfo = new CultureInfo("pt-BR").TextInfo; string cidade = licitacao.Departamento.Remove(0, 9); licitacao.Cidade = textInfo.ToTitleCase(cidade); licitacao.CidadeFonte = Cidades.ContainsKey(cidade) ? Cidades[licitacao.Cidade.ToUpper()] : CityUtil.GetCidadeFonte(licitacao.Cidade, Cidades); } else { foreach (var cid in Cidades) { if (licitacao.Objeto.Contains(cid.Key)) { licitacao.Cidade = cid.Key; licitacao.CidadeFonte = cid.Value; } } if (string.IsNullOrEmpty(licitacao.Cidade)) { licitacao.Cidade = "Teresina"; licitacao.CidadeFonte = 5721; } } } catch (Exception e) { RService.Log("Exception (CreateLicitacao) " + name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", logPath); } return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null); }