コード例 #1
0
        /*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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /*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);
        }
コード例 #4
0
ファイル: BBController.cs プロジェクト: FTorres41/WebCrawlers
        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;
                    }
                }
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        //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);
        }