Example #1
0
        private static void SegmentarLicitacao(Licitacao licitacao)
        {
            List <Segmento> segmentos = SegmentoController.CreateListaSegmentos(licitacao);

            foreach (Segmento segmento in segmentos)
            {
                int matchCount    = 0;
                var palavrasChave = segmento.PalavrasChave.Split(';');

                foreach (var palavrachave in palavrasChave)
                {
                    if (licitacao.Objeto.ToUpper().Contains(palavrachave))
                    {
                        matchCount++;
                    }
                }

                if (matchCount >= 4)
                {
                    LicitacaoSegmento licSeg = new LicitacaoSegmento()
                    {
                        IdLicitacao = licitacao.Id,
                        IdSegmento  = segmento.IdSegmento
                    };

                    LicitacaoSegmentoRepository repoLS = new LicitacaoSegmentoRepository();
                    repoLS.Insert(licSeg);
                }
            }
        }
Example #2
0
        private static void GetPrecos(HtmlNode grupo, Licitacao licitacao)
        {
            try
            {
                var itens = grupo.ChildNodes.Where(i => i.InnerText.Contains("Item")).ToList();

                for (int i = 0; i < itens.Count; i += 2)
                {
                    int j = i + 1;

                    if (itens[i].InnerText.Contains("Homologado"))
                    {
                        Preco preco = CreatePreco(itens[i], itens[j], licitacao.Id);

                        if (preco != null && !repo.Exists(preco))
                        {
                            repo.Insert(preco);
                            NumPrecos++;
                            RService.Log("(GetPrecos) " + Name + ": Preço obtido com sucesso para licitacao " + licitacao.Id + " at {0}", LogPath);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (GetPrecos) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", LogPath);
            }
        }
        private static void HandleCreate(HtmlDocument htmlDoc, HtmlNode row)
        {
            try
            {
                if (row.InnerHtml.Contains("href"))
                {
                    string       situacao;
                    string       quoteLink = row.ChildNodes[3].ChildNodes["a"].Attributes["href"].Value.ToString();
                    HtmlDocument htmlQuote = WebHandle.GetHtmlDocOfPage(string.Format(Constants.CN_COTACAO_LINK, quoteLink), Encoding.GetEncoding("ISO-8859-1"));
                    Licitacao    l         = CreateQuote(htmlQuote, quoteLink, out situacao);
                    //RandomSleep();
                    if (l != null && !repo.Exists(l.IdLicitacaoFonte.ToString()))
                    {
                        repo.Insert(l);
                        numCotacoes++;
                        RService.Log("Cotação " + l.IdLicitacaoFonte + " inserida com sucesso" + " at {0}", Path.GetTempPath() + Name + ".txt");

                        //SegmentarCotacao(l);
                    }
                    else if (l != null && repo.Exists(l.IdLicitacaoFonte.ToString()) && LicitacaoController.SituacaoAlterada(l.IdLicitacaoFonte.ToString(), situacao))
                    {
                        l          = repo.GetByIdLicitacaoFonte(l.IdLicitacaoFonte.ToString());
                        l.Situacao = situacao;

                        repo.Update(l);
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (HandleCreate) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
Example #4
0
        private static void ConsultaAtaPregao(Licitacao licitacao)
        {
            RService.Log("(ConsultaAtaPregao) " + Name + ": Buscando ata do pregão at {0}", LogPath);

            try
            {
                if (!string.IsNullOrEmpty(licitacao.Uasg) && !string.IsNullOrEmpty(licitacao.NumPregao))
                {
                    List <LicitacaoHistorico> itens = new List <LicitacaoHistorico>();

                    string       _num      = Regex.Replace(licitacao.NumPregao, @"[^\d+]", "");
                    string       _url      = string.Format(Constants.CN_ATA_PREGAO, licitacao.Uasg, _num);
                    HtmlDocument htmlDoc   = WebHandle.GetHtmlDocOfPage(_url, Encoding.GetEncoding("ISO-8859-1"));
                    var          licitInfo = FindLicitInfo(htmlDoc.DocumentNode.InnerHtml);

                    if (!string.IsNullOrEmpty(licitInfo))
                    {
                        HandleTermoHomologacao(licitInfo, licitacao);
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (ConsultaAtaPregao) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", LogPath);
            }
        }
Example #5
0
 public IEnumerable <Licitacao> Fetch(Licitacao entity)
 {
     return(DataHelper.List <Licitacao>("PR_LICITACAO_CONSULTAR",
                                        new SqlParameter("@id_licitacao", entity.Id),
                                        new SqlParameter("@ds_licitacao", entity.Descricao)
                                        ));
 }
Example #6
0
        private static void HandleModalidade(Licitacao licitacao, string modalidade)
        {
            Modalidade modal = NameToModalidade.ContainsKey(StringHandle.RemoveAccent(modalidade.ToUpper())) ?
                               NameToModalidade[StringHandle.RemoveAccent(modalidade.ToUpper())] : null;

            if (modal == null)
            {
                switch (modalidade.Trim())
                {
                case "Processo de Dispensa Eletrônica":
                    modal = NameToModalidade["DISPENSA DE LICITACAO"];
                    break;

                case "Licitação Lei ./ Presencial":
                    modal = NameToModalidade["PREGAO PRESENCIAL"];
                    break;

                case "Licitação Lei ./ Eletrônico":
                    modal = NameToModalidade["PREGAO ELETRONICO"];
                    break;

                default:
                    modal = NameToModalidade["Licitação"];
                    break;
                }
            }

            licitacao.Modalidade = modal;
        }
Example #7
0
        internal static List <Segmento> CreateListaSegmentos(Licitacao licitacao)
        {
            List <Segmento> segmentos = new List <Segmento>();

            if (licitacao.Modalidade.Modalidades == "Leilão")
            {
                segmentos = SegmentoController.GetSegmentosLeilao();
            }
            else if (licitacao.Objeto.ToUpper().Contains("VETERINÁR") || licitacao.Objeto.ToUpper().Contains("VETERINAR"))
            {
                segmentos = SegmentoController.GetSegmentosVeterinaria();
            }
            else if (licitacao.Objeto.ToUpper().Contains("CONCESSÃO") ||
                     licitacao.Objeto.ToUpper().Contains("CONCESSAO") ||
                     licitacao.Objeto.ToUpper().Contains("OUTORGA") ||
                     licitacao.Objeto.ToUpper().Contains("PERMISSÃO DE USO") ||
                     licitacao.Objeto.ToUpper().Contains("PERMISSAO DE USO") ||
                     licitacao.Objeto.ToUpper().Contains("EXPLORAÇÃO") ||
                     licitacao.Objeto.ToUpper().Contains("EXPLORACAO"))
            {
                segmentos = SegmentoController.GetSegmentosConcessao();
            }
            else
            {
                segmentos = SegmentoController.GetSegmentosHumanos();
            }

            return(segmentos);
        }
Example #8
0
        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;
                    }
                }
            }
        }
Example #9
0
        //Métodos que controlam o envio de arquivos para o Amazon Simple Storage Service (S3)
        internal static bool SendObject(Licitacao l, string pathEditais, string fileName)
        {
            bool segundaTentativa = false;

            try
            {
                do
                {
                    //cria o bucket no cliente caso o bucket não exista
                    if (!AmazonS3Util.DoesS3BucketExist(s3Client, bucketName))
                    {
                        CreateABucket(s3Client);
                    }

                    //Reúne os dados necessários do arquivo
                    PutObjectRequest putRequest = new PutObjectRequest
                    {
                        BucketName = bucketName + "/licitacoes",
                        Key        = fileName,
                        FilePath   = pathEditais + fileName,
                        Grants     = new List <S3Grant>
                        {
                            new S3Grant {
                                Grantee = new S3Grantee {
                                    URI = "http://acs.amazonaws.com/groups/global/AllUsers"
                                }, Permission = S3Permission.READ
                            }
                        }/*,
                          * TagSet = new List<Tag>
                          * {
                          * new Tag {Key = "IdLicitacao", Value = l.Id.ToString() },
                          * new Tag {Key = "Lote", Value = l.Lote.Id.ToString() },
                          * new Tag {Key = "Fonte", Value = l.LinkSite }
                          * }*/
                    };

                    //Envia o arquivo para o bucket
                    PutObjectResponse putResponse = s3Client.PutObject(putRequest);
                    return(true);
                } while (segundaTentativa);
            }
            catch (Exception e)
            {
                RService.Log("RService Exception AWS (SendObject): " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " / " + e.InnerException + " at {0}", Path.GetTempPath() + "RSERVICE" + ".txt");

                //Faz uma segunda tentativa de envio
                segundaTentativa = !segundaTentativa;
                if (segundaTentativa)
                {
                    RService.Log("AWS (SendObject): Segunda tentativa de envio... at {0}", Path.GetTempPath() + "RSERVICE" + ".txt");
                    Thread.Sleep(5000);
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }
Example #10
0
        private static void GetArquivos(Licitacao licitacao)
        {
            if (!Directory.Exists(PathEditais))
            {
                Directory.CreateDirectory(PathEditais);
            }

            if (web != null)
            {
                web.Quit();
            }

            var driver = ChromeDriverService.CreateDefaultService();

            driver.HideCommandPromptWindow = true;
            var op = new ChromeOptions();

            op.AddUserProfilePreference("download.default_directory", PathEditais);
            web = new ChromeDriver(driver, new ChromeOptions(), TimeSpan.FromSeconds(300));
            web.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(300);
            wait = new WebDriverWait(web, TimeSpan.FromSeconds(300));

            web.Navigate().GoToUrl(licitacao.LinkEdital);

            try
            {
                var fileLinks = web.FindElements(By.TagName("td"))
                                .Where(l => l.GetAttribute("headers") == "DOWNLOAD2")
                                .ToList();

                if (fileLinks.Count > 0)
                {
                    int count = 1;
                    foreach (var fileLink in fileLinks)
                    {
                        fileLink.Click();

                        //if (IsElementPresent(web, By.XPath("//*[@id=\"apex_dialog_" + count + "\"]/iframe")))
                        //{
                        //    fileLink.Click();
                        //}

                        string captchaToken = GetCaptchaToken(Constants.TCERS_DOCUMENTSITEKEY, web.Url);
                        web.SwitchTo().Frame(web.FindElement(By.XPath("//*[@id=\"apex_dialog_" + count + "\"]/iframe")));
                        string fileName = web.FindElement(By.XPath("//*[@id=\"P100_NM_ARQUIVO_DISPLAY\"]")).Text.Split('(')[0].Trim();
                        ((IJavaScriptExecutor)web).ExecuteScript(string.Format("document.getElementById('g-recaptcha-response').value='{0}'", captchaToken));
                        web.FindElement(By.XPath("//*[@id=\"P100_DOWNLOAD\"]")).Click();
                        Thread.Sleep(10000);
                        CreateArquivo(licitacao, fileName);
                        count++;
                        web.FindElement(By.TagName("html")).SendKeys(Keys.Escape);
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (GetArquivos) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", LogPath);
            }
        }
Example #11
0
        private static void CreateItensLicitacao(HtmlDocument htmDoc, Licitacao licitacao)
        {
            RService.Log("(CreateItensLicitacao) " + Name + ": Criando itens do objeto da licitação num.. " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + Name + ".txt");

            int      count;
            HtmlNode dadosOc;
            int      rows = 1;

            /*Pega o html da table com o id dgItensOc pra essa OC*/
            dadosOc = htmDoc.DocumentNode.Descendants().FirstOrDefault(x => x.Id == "ctl00_c_area_conteudo_grdv_item");
            /*Percorre as linhas da tabela exceto o Header que tem o atributo class HeaderStyle*/
            foreach (var row in dadosOc.Descendants("tr") /*.Where(x => x.Attributes.Contains("class") && !x.Attributes["class"].Value.Contains("HeaderSt"))*/)
            {
                if (!row.InnerHtml.Contains("th scope="))
                {
                    ItemLicitacao item = new ItemLicitacao();
                    /*Contador usado para as colunas da tabela*/
                    count = 0;
                    /*Percorre cada coluna de uma linha da tabela Intes da Oferta de Compra*/
                    foreach (var data in row.Descendants("td"))
                    {
                        /*A terceira coluna da tabela de Itens da Oferta de Compra contém a descrição do Item.*/
                        switch (count)
                        {
                        case 0:
                            break;

                        case 1:
                            item.Numero = int.Parse(data.InnerText.Trim());
                            break;

                        case 2:
                            item.Codigo = data.InnerText.Trim();
                            break;

                        case 3:
                            string desc = data.InnerText.Trim();
                            item.DescricaoDetalhada = desc;
                            item.Descricao          = desc.Length > 50 ? desc.Substring(0, 50) + "..." : desc;
                            break;

                        case 4:
                            item.Quantidade = int.Parse(data.InnerText.Trim());
                            break;

                        case 5:
                            item.Unidade = data.InnerText.Trim();
                            break;
                        }
                        count++;
                    }

                    item.MargemPreferencia = "0";
                    item.Decreto7174       = "0";
                    licitacao.ItensLicitacao.Add(item);
                    rows++;
                }
            }
        }
Example #12
0
        /*Baixa os arquivos de edital*/
        private static void DownloadEditais(List <string> editais, Licitacao licitacao, MatchCollection linkForm)
        {
            try
            {
                RService.Log("(DownloadEditais) " + Name + ": Consultando arquivos de edital, licitação... " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + Name + ".txt");

                if (!Directory.Exists(PathEditais))
                {
                    Directory.CreateDirectory(PathEditais);
                }

                for (int i = 0; i < editais.Count; i++)
                {
                    //Busca os arquivos da licitação
                    LicitacaoArquivoRepository repoArq         = new LicitacaoArquivoRepository();
                    List <LicitacaoArquivo>    arquivosAntigos = repoArq.FindByLicitacao(licitacao.Id);

                    var  edital  = editais[i];
                    bool isExist = false;

                    string nameFile = Regex.Replace(edital.Split('/')[edital.Split('/').Length - 1],
                                                    string.Format("[{0}]", Regex.Escape(
                                                                      new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars()))), "");

                    while (nameFile.Contains("%1A"))
                    {
                        nameFile = Regex.Replace(nameFile, "%1A", "_");
                    }

                    foreach (var arquivoAntigo in arquivosAntigos)
                    {
                        /*Verifica se o arquivo já existe*/
                        if (nameFile.Equals(arquivoAntigo.NomeArquivoFonte))
                        {
                            isExist = true;
                            break;
                        }
                    }
                    if (!isExist)
                    {
                        Thread.Sleep(5000);
                        FillForm(linkForm[i].Value);
                        if (LicitacaoArquivoController.CreateLicitacaoArquivo(Name, licitacao, edital, PathEditais, nameFile, web.Manage().Cookies.AllCookies))
                        {
                            NumArquivosLicitacao++;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (DownloadEditais) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
        private static void SegmentarCotacao(Licitacao l)
        {
            List <Segmento> segmentos = SegmentoController.CreateListaSegmentos(l);

            foreach (Segmento segmento in segmentos)
            {
                int  objMatch = 0, segmentoCount = 0;
                bool itemMatch     = false;
                var  palavrasChave = segmento.PalavrasChave.Split(';');

                if (palavrasChave.Length > 0)
                {
                    foreach (var palavrachave in palavrasChave)
                    {
                        if (l.Objeto.ToUpper().Contains(palavrachave))
                        {
                            objMatch++;
                        }

                        foreach (var item in l.ItensLicitacao)
                        {
                            if (item.Descricao.ToUpper().Contains(palavrachave) || item.DescricaoDetalhada.ToUpper().Contains(palavrachave))
                            {
                                itemMatch = true;
                            }
                        }
                    }

                    if (objMatch >= 2 && itemMatch == true)
                    {
                        LicitacaoSegmento licSeg = new LicitacaoSegmento()
                        {
                            IdLicitacao = l.Id,
                            IdSegmento  = segmento.IdSegmento
                        };

                        segmentoCount++;
                        LicitacaoSegmentoRepository repoLS = new LicitacaoSegmentoRepository();
                        repoLS.Insert(licSeg);
                    }
                }

                if (segmentoCount > 0)
                {
                    RService.Log("(SegmentarLicitacao) " + Name + ": Licitação " + l.IdLicitacaoFonte + " foi segmentada em " + segmentoCount + " segmentos at {0}", Path.GetTempPath() + Name + ".txt");
                }
                else
                {
                    RService.Log("(SegmentarLicitacao) " + Name + ": Licitação " + l.IdLicitacaoFonte + " não foi segmentada at {0}", Path.GetTempPath() + Name + ".txt");
                }
            }
        }
Example #14
0
        private static void CreateItensLicitacao(ChromeDriver web, Licitacao licitacao)
        {
            RService.Log("(CreateItensLicitacao) " + Name + ": Criando itens do objeto da licitação num.. " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + Name + ".txt");
            int count;

            var itens = web.FindElements(By.TagName("tr"));

            //Percorre cada linha da tabela com os itens, cria cada registro no banco e os adiciona à licitação
            foreach (var row in itens)
            {
                var text = row.GetAttribute("style").ToString();
                if (row.GetAttribute("style").Contains("background-color: ") && !row.GetAttribute("style").Contains("color: white; background-color: rgb(107, 105, 107); font-weight: bold;"))
                {
                    count = 0;
                    ItemLicitacao item = new ItemLicitacao();
                    foreach (var td in row.FindElements(By.TagName("td")))
                    {
                        switch (count)
                        {
                        case 0:
                            break;

                        case 1:
                            item.Numero = int.Parse(td.Text);
                            break;

                        case 2:
                            item.Codigo = td.Text;
                            break;

                        case 3:
                            item.DescricaoDetalhada = td.Text;
                            item.Descricao          = item.DescricaoDetalhada.Length > 50 ? item.DescricaoDetalhada.Substring(0, 50) + "..." : item.DescricaoDetalhada;
                            break;

                        case 4:
                            item.Quantidade = int.Parse(td.Text);
                            break;

                        case 5:
                            item.Unidade = td.Text;
                            break;
                        }
                        count++;
                    }
                    item.MargemPreferencia = "0";
                    item.Decreto7174       = "0";
                    licitacao.ItensLicitacao.Add(item);
                }
            }
        }
Example #15
0
        /**Cria uma nova licitação*/
        private static Licitacao CreateLicitacao(HtmlDocument htmlDocument, string linkEdital)
        {
            RService.Log("(CreateLicitacao) " + Name + ": Criando licitação... " + Id + " at {0}", Path.GetTempPath() + Name + ".txt");
            try
            {
                IEnumerable <HtmlNode> spanNodes = htmlDocument.DocumentNode.Descendants("span");
                Licitacao licitacao = new Licitacao();
                licitacao.Lote             = Lote;
                licitacao.Num              = Id;
                licitacao.IdLicitacaoFonte = long.Parse(Id);
                string modalidade = spanNodes.SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("procedimentoContratacao")).InnerText;
                licitacao.Modalidade = modalidade.Contains("eletr") ? Modalidades[0] : Modalidades[1];
                licitacao.LinkSite   = Constants.CMG_HOST;
                licitacao.Orgao      = Orgao;
                licitacao.IdFonte    = 506;
                licitacao.Excluido   = 0;
                licitacao.SegmentoAguardandoEdital = 0;
                licitacao.DigitacaoUsuario         = 43; //Robo
                licitacao.LinkEdital  = linkEdital;
                licitacao.CidadeFonte = 2754;
                licitacao.Cidade      = Constants.CMG_CIDADE;
                licitacao.EstadoFonte = Constants.CMG_UF;
                licitacao.Estado      = Constants.CMG_ESTADO;
                licitacao.Observacoes = "ENDERECO NAO DIVULGADO.";
                licitacao.Situacao    = Situacao;

                //licitacao.DigitacaoData = null;
                //licitacao.ProcessamentoData = null;

                string departamento = spanNodes.SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("unidadeCompra")).InnerText;

                licitacao.Departamento = departamento.Trim() + " SECRETARIA: " + Secretaria;

                string data = spanNodes.SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("dataInicioSessaoPregao")).InnerText;
                string hora = spanNodes.SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("horaInicioSessaoPregao")).InnerText;

                DateTime?aberturaEntrega = DateHandle.Parse(data.Trim() + " " + hora.Trim(), "dd/MM/yyyy hh:mm:ss");

                licitacao.AberturaData = aberturaEntrega;
                licitacao.EntregaData  = aberturaEntrega;
                licitacao.Objeto       = spanNodes.SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("objetoLicitacao")).InnerText;

                return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null);
            }
            catch (Exception e)
            {
                RService.Log("Exception " + Name + ": (CreateLicitacao)" + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
                return(null);
            }
        }
        private static void GetItens(HtmlDocument htmlQuote, Licitacao l)
        {
            try
            {
                foreach (var row in htmlQuote.DocumentNode.Descendants("tr").Where(x => !x.Attributes.Contains("height") && x.Attributes.Contains("class") && x.Attributes["class"].Value.Equals("tex3")))
                {
                    ItemLicitacao item  = new ItemLicitacao();
                    int           count = 0;

                    foreach (var cell in row.ChildNodes.Where(x => x.Name.Equals("td")))
                    {
                        switch (count)
                        {
                        case 0:
                            item.Numero = Convert.ToInt32(cell.InnerText);
                            break;

                        case 1:
                            item.Descricao = cell.InnerText.Replace("\");\r\n      \">", "");
                            string       itemLink   = cell.ChildNodes[0].Attributes["href"].Value.ToString().Split('/')[2];
                            HtmlDocument itemDetail = WebHandle.GetHtmlDocOfPage(string.Format(Constants.CN_COTACAO_LINK, itemLink), Encoding.GetEncoding("ISO-8859-1"));
                            string       descDetail = Regex.Replace(itemDetail.DocumentNode.InnerHtml.ToString().Replace("<br>", "\n"), "<.*?>", String.Empty)
                                                      .Replace("\n\n\n\n  \tCOMPRASNET - O Portal de Compras do Governo Federal :: DESCRIÇÃO COMPLEMENTAR.\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\nDESCRIÇÃO COMPLEMENTAR\n\r\n\r\n", "")
                                                      .Replace("\r\n\r\n\r\n", "\n")
                                                      .Replace("  ", "");
                            item.DescricaoDetalhada = descDetail;
                            break;

                        case 2:
                            item.Quantidade = Convert.ToInt32(cell.InnerText);
                            break;

                        case 3:
                            item.Unidade = cell.InnerText;
                            break;
                        }
                        count++;
                    }
                    item.Decreto7174       = "0";
                    item.MargemPreferencia = "0";

                    l.ItensLicitacao.Add(item);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (GetItens) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
Example #17
0
        /*Cria os objetos Licitacao, Lote e LicitacaoArquivo fazendo as verificações necessárias.*/
        private static void HandleCreate(HtmlDocument htmlDoc, string ocnum, string situacao)
        {
            try
            {
                Regex  regex = new Regex("\\d{4}OC");
                string ocn   = ocnum;
                ocnum = "1" + regex.Replace(ocnum, DateTime.Now.ToString("yy"));

                /*Verifica se a oc já não esta na base de dados, cria um novo lote se for preciso*/
                //if (!string.IsNullOrEmpty(ocnum) && !AlreadyInserted.Contains(long.Parse(ocnum)) && AguardandoPropostasEditalPub(htmlDoc) && !AlreadyColected.Contains(long.Parse(ocnum)))
                if (!string.IsNullOrEmpty(ocn) && !LicitacaoController.ExistsBEC(ocn))
                {
                    //AlreadyColected.Add(long.Parse(ocnum));
                    //Preenche os dados da licitação e retorna para inserir na lista
                    Licitacao licitacao = CreateLicitacao(htmlDoc, ocnum, situacao);
                    if (licitacao != null && !string.IsNullOrEmpty(licitacao.LinkEdital))
                    {
                        licitacao.Observacoes = ocn;

                        Repo.Insert(licitacao);
                        //licitacoes.Add(licitacao);

                        HtmlDocument htmlEditais   = WebHandle.GetHtmlDocOfPage(licitacao.LinkEdital);
                        int          numeroArquivo = 2;
                        //Faz o download de todos os arquivos do edital
                        foreach (HtmlNode editais in htmlEditais.DocumentNode.Descendants("a").Where(x => x.Attributes.Contains("href") && x.Attributes["href"].Value.Contains("ctl00$conteudo$WUC_Documento1$dgDocumento")))
                        {
                            DownloadEditais(licitacao.LinkEdital, GetFormParametersEdital(htmlEditais, numeroArquivo));
                        }
                        CreateLicitacaoArquivo(licitacao);
                        NumLicitacoes++;
                    }
                    else
                    {
                        RService.Log("Exception (HandleCreate) " + Name + ": A licitação não foi salva - Motivo(s): " + mensagemErro + " at {0}", Path.GetTempPath() + Name + ".txt");
                    }
                }
                else if (!string.IsNullOrEmpty(ocn) && LicitacaoController.ExistsBEC(ocn) && LicitacaoController.SituacaoAlteradaBEC(ocn, situacao))
                {
                    int id = LicitacaoController.GetIdByObservacoes(ocn);
                    LicitacaoController.UpdateSituacaoByIdLicitacao(id, situacao);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (HandleCreate) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
Example #18
0
        private static Licitacao GetLicitacao()
        {
            Licitacao licitacao = new Licitacao();

            licitacao.Lote    = Lote;
            licitacao.IdFonte = Constants.CRJ_ID_FONTE;
            var x = web.FindElement(By.Id("idLicitacao")).GetAttribute("value");

            licitacao.IdLicitacaoFonte = long.Parse(x);
            licitacao.LinkSite         = Constants.CRJ_HOST;
            licitacao.LinkEdital       = Constants.CRJ_LINK_LICITACAO;
            licitacao.EstadoFonte      = Constants.CRJ_ESTADO_FONTE;
            licitacao.Estado           = Constants.CRJ_ESTADO;
            licitacao.DigitacaoUsuario = 43;

            var title     = web.FindElement(By.XPath("//*[@id=\"panelId\"]/div[1]/div/div/p")).Text.Trim();
            var dept      = web.FindElement(By.XPath("//*[@id=\"panelId\"]/div[2]/div/div/p[1]")).Text.Trim();
            var situation = web.FindElement(By.XPath("//*[@id=\"panelId\"]/div[3]/div[1]/div/p")).Text.Trim();
            var modal     = web.FindElement(By.XPath("//*[@id=\"panelId\"]/div[3]/div[2]/div/p")).Text.Trim();
            var publish   = web.FindElement(By.XPath("//*[@id=\"panelId\"]/div[4]/div[1]/div/p")).Text.Trim();
            var opening   = web.FindElement(By.XPath("//*[@id=\"panelId\"]/div[4]/div[2]/div/p")).Text.Trim();

            licitacao.Num          = title.Split('-')[0].Trim();
            licitacao.Processo     = title.Split('-')[0].Trim();
            licitacao.Objeto       = title + " Obs.: Os arquivos do edital podem ser obtidos no site do Compras Rio de Janeiro.";
            licitacao.Departamento = dept;
            licitacao.Situacao     = situation;
            licitacao.Modalidade   = NameToModalidade.ContainsKey(StringHandle.RemoveAccent(modal.ToUpper())) ?
                                     NameToModalidade[StringHandle.RemoveAccent(modal.ToUpper())] : null;
            if (licitacao.Modalidade == null && licitacao.Processo.Contains("PE"))
            {
                licitacao.Modalidade = NameToModalidade["PREGAO ELETRONICO"];
            }

            var orgao = dept.Split('-')[1].Trim();

            licitacao.Orgao = Orgaos.Exists(o => o.Nome == orgao) ?
                              Orgaos.First(o => o.Nome == orgao) :
                              OrgaoRepository.CreateOrgao(orgao, Constants.CRJ_ESTADO_FONTE);
            licitacao.EntregaData  = DateHandle.Parse(publish, "dd/MM/yyyy-hh:mm");
            licitacao.AberturaData = DateHandle.Parse(opening, "dd/MM/yyyy-hh:mm");
            licitacao.Cidade       = Constants.CRJ_ESTADO;
            licitacao.CidadeFonte  = Constants.CRJ_CIDADE_FONTE;

            return(LicitacaoController.IsValid(licitacao, out mensagemErro) ? licitacao : null);
        }
Example #19
0
        private static void CreateItensAlternateId(HtmlDocument htmDoc, Licitacao licitacao, ref int count, ref int rows)
        {
            HtmlNode dadosOc = htmDoc.DocumentNode.Descendants().SingleOrDefault(x => x.Id == "ctl00_conteudo_loteGridItens_grdLote");

            foreach (var row in dadosOc.Descendants("tr"))
            {
                if (row.Attributes.Contains("class") && row.Attributes["class"].Value.Contains("HeaderStyle"))
                {
                    continue;
                }

                ItemLicitacao item = new ItemLicitacao();
                /*Contador usado para as colunas da tabela*/
                count = 0;
                /*Percorre cada coluna de uma linha da tabela Intes da Oferta de Compra*/
                foreach (var data in row.Descendants("td"))
                {
                    /*A quarta coluna da tabela de Itens da Oferta de Compra contém a descrição do Item.*/
                    switch (count)
                    {
                    case 2:
                        item.Numero = int.Parse(data.InnerText.Trim());
                        break;

                    case 3:
                        string desc = data.InnerText.Trim();
                        item.Descricao          = desc.Length > 50 ? desc.Substring(0, 50) + "..." : desc;
                        item.DescricaoDetalhada = desc;
                        break;

                    case 4:
                        item.Quantidade = int.Parse(data.InnerText.Trim().Replace(".", ""));
                        break;

                    case 1:
                        item.Unidade = "GRUPO";
                        break;
                    }
                    count++;
                }

                licitacao.ItensLicitacao.Add(item);
                rows++;
            }
        }
Example #20
0
        /*Baixa os arquivos de edital*/
        private static void DownloadEditais(List <string> editais, Licitacao licitacao, MatchCollection linkForm)
        {
            try
            {
                RService.Log("(DownloadEditais) " + GetNameRobot() + ": Consultando arquivos de edital, licitação... " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + GetNameRobot() + ".txt");

                if (!Directory.Exists(PathEditais))
                {
                    Directory.CreateDirectory(PathEditais);
                }

                for (int i = 0; i < editais.Count; i++)
                {
                    //Busca os arquivos da licitação
                    LicitacaoArquivoRepository repoArq         = new LicitacaoArquivoRepository();
                    List <LicitacaoArquivo>    arquivosAntigos = repoArq.FindByLicitacao(licitacao.Id);

                    var  edital  = editais[i];
                    bool isExist = false;

                    string nameFile = string.Format("Anexo{0}Licitacao{1}", i, licitacao.Id);

                    foreach (var arquivoAntigo in arquivosAntigos)
                    {
                        /*Verifica se o arquivo já existe*/
                        if (nameFile.Equals(arquivoAntigo.NomeArquivoFonte))
                        {
                            isExist = true;
                            break;
                        }
                    }
                    if (!isExist)
                    {
                        if (LicitacaoArquivoController.CreateLicitacaoArquivo(GetNameRobot(), licitacao, edital, PathEditais, nameFile, web.Manage().Cookies.AllCookies))
                        {
                            NumArquivosLicitacao++;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (DownloadEditais) " + GetNameRobot() + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + GetNameRobot() + ".txt");
            }
        }
Example #21
0
        private static Licitacao CreateLicitacao(string link)
        {
            Licitacao licitacao = new Licitacao();

            try
            {
                web.Navigate().GoToUrl(Constants.CRJ_HOST + link);

                licitacao.Lote             = Lote;
                licitacao.IdFonte          = Constants.CRJ_ID_FONTE;
                licitacao.IdLicitacaoFonte = long.Parse(link.Split('=')[2]);
                licitacao.LinkSite         = Constants.CRJ_HOST;
                licitacao.LinkEdital       = Constants.CRJ_HOST + link;
                licitacao.EstadoFonte      = Constants.CRJ_ESTADO_FONTE;
                licitacao.Estado           = Constants.CRJ_ESTADO;
                licitacao.DigitacaoUsuario = 43;

                var licitInfo = web.FindElements(By.ClassName("cx_clara"));
                licitacao.Num        = licitInfo[0].Text.Split('-')[0].Trim();
                licitacao.Processo   = licitInfo[0].Text.Split('-')[0].Trim();
                licitacao.Objeto     = licitInfo[0].Text.Split('-')[2].Trim() + " Obs.: Os arquivos do edital podem ser obtidos no site do Compras Rio de Janeiro.";
                licitacao.Modalidade = NameToModalidade.ContainsKey(StringHandle.RemoveAccent(licitInfo[1].Text.ToUpper())) ?
                                       NameToModalidade[StringHandle.RemoveAccent(licitInfo[1].Text.ToUpper())] : null;
                if (licitacao.Modalidade == null && licitacao.Processo.Contains("PE"))
                {
                    licitacao.Modalidade = NameToModalidade["PREGAO ELETRONICO"];
                }
                licitacao.Departamento = licitInfo[2].Text.Trim();
                var orgao = licitInfo[2].Text.Split('-')[1].Trim();
                licitacao.Orgao = Orgaos.Exists(o => o.Nome == orgao) ?
                                  Orgaos.First(o => o.Nome == orgao) :
                                  OrgaoRepository.CreateOrgao(orgao, Constants.CRJ_ESTADO_FONTE);
                licitacao.EntregaData  = DateHandle.Parse(licitInfo[3].Text.Replace("De ", "").Remove(19, 24), "dd/MM/yyyy-hh:mm");
                licitacao.AberturaData = DateHandle.Parse(licitInfo[4].Text, "dd/MM/yyyy-hh:mm");
                licitacao.Situacao     = licitInfo[5].Text.Trim();
                licitacao.Cidade       = Constants.CRJ_ESTADO;
                licitacao.CidadeFonte  = Constants.CRJ_CIDADE_FONTE;
            }
            catch (Exception e)
            {
                RService.Log("Exception (CreateLicitacoes) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", LogPath);
            }

            return(licitacao);
        }
Example #22
0
        private static void CreateItens(Licitacao licitacao, ref int count, ref int rows, HtmlNode dadosOc)
        {
            foreach (var row in dadosOc.Descendants("tr"))
            {
                if (row.Attributes.Contains("class") && row.Attributes["class"].Value.Contains("HeaderStyle"))
                {
                    continue;
                }

                ItemLicitacao item = new ItemLicitacao();
                /*Contador usado para as colunas da tabela*/
                count = 0;
                /*Percorre cada coluna de uma linha da tabela Intes da Oferta de Compra*/
                foreach (var data in row.Descendants("td"))
                {
                    /*A quarta coluna da tabela de Itens da Oferta de Compra contém a descrição do Item.*/
                    switch (count)
                    {
                    case 2:
                        item.Numero = int.Parse(data.InnerText.Trim());
                        break;

                    case 4:
                        string desc = data.InnerText.Trim();
                        item.Descricao          = desc.Length > 50 ? desc.Substring(0, 50) + "..." : desc;
                        item.DescricaoDetalhada = desc;
                        break;

                    case 5:
                        item.Quantidade = int.Parse(data.InnerText.Trim().Replace(".", ""));
                        break;

                    case 6:
                        item.Unidade = data.InnerText.Trim();
                        break;
                    }
                    count++;
                }

                licitacao.ItensLicitacao.Add(item);
                rows++;
            }
        }
Example #23
0
        /*Cria os objetos Licitacao, Lote e LicitacaoArquivo fazendo as verificações necessárias.*/
        private static void HandleCreate(HtmlDocument htmlDoc, string ocnum, string situacao)
        {
            try
            {
                Regex  regex = new Regex("\\d{4}OC");
                string ocn   = ocnum;
                ocnum = "1" + regex.Replace(ocnum, DateTime.Now.ToString("yy"));

                //Criar um novo lote se for preciso, verifica o status da oc e também se já esta salva no bd
                if (!string.IsNullOrEmpty(ocn) && !LicitacaoController.ExistsBEC(ocn))
                {
                    //Preenche os dados da licitação e retorna para inserir na lista
                    Licitacao licitacao = CreateLicitacao(htmlDoc, ocnum, situacao);
                    if (licitacao != null && LicitacaoController.IsValid(licitacao, out mensagemErro))
                    {
                        licitacao.Observacoes = ocn;
                        licitacao.LinkEdital  = href.Replace("OC_Item", "Edital");
                        Repo = new LicitacaoRepository();
                        Repo.Insert(licitacao);

                        //licitacoes.Add(licitacao);
                        RService.Log("(HandleCreate) " + Name + ": inserida com sucesso at {0}", Path.GetTempPath() + Name + ".txt");

                        CreateLicitacaoArquivo(licitacao, licitacao.LinkEdital);

                        NumLicitacoes++;
                    }
                    else
                    {
                        RService.Log("Exception (HandleCreate) " + Name + ": A licitação não foi salva - Motivo(s): " + mensagemErro + " at {0}", Path.GetTempPath() + Name + ".txt");
                    }
                }
                else if (!string.IsNullOrEmpty(ocn) && LicitacaoController.ExistsBEC(ocn) && LicitacaoController.SituacaoAlteradaBEC(ocn, situacao))
                {
                    int id = LicitacaoController.GetIdByObservacoes(ocn);
                    LicitacaoController.UpdateSituacaoByIdLicitacao(id, situacao);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (HandleCreate)" + Name + ":" + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
Example #24
0
        private static void HandleCreate(HtmlNode lic)
        {
            try
            {
                string   link     = string.Format(Constants.TCMCE_HOST + lic.ChildNodes[1].ChildNodes[0].GetAttributeValue("href", "").ToString());
                string[] licParts = link.Split('/');
                string   licNum   = licParts[7] + licParts[9];

                HtmlDocument licPage  = WebHandle.GetHtmlDocOfPage(link, Encoding.GetEncoding("UTF-8"));
                string       situacao = Regex.Replace(StringHandle.GetMatches(licPage.DocumentNode.InnerHtml, @"Situação:( *)<b>(.*)</b")[0].ToString(), @"Situação:|<b>|</b", "").Trim();

                if (!string.IsNullOrEmpty(licNum) && !LicitacaoController.Exists(licNum))
                {
                    Licitacao l = CreateLicitacao(licPage, link, licNum, situacao);
                    if (l != null)
                    {
                        repo = new LicitacaoRepository();
                        repo.Insert(l);
                        RService.Log("(HandleCreate) " + Name + ": Licitação nº" + licNum + " inserida com sucesso at {0}", Path.GetTempPath() + Name + ".txt");
                        NumLicitacoes++;

                        GetEditalAndArquivos(licPage, l);
                    }
                    else
                    {
                        RService.Log("Exception (HandleCreate) " + Name + ": Licitação não salva. Motivo: " + mensagemErro + " at {0}", Path.GetTempPath() + Name + ".txt");
                    }
                }
                else if (!string.IsNullOrEmpty(licNum) && LicitacaoController.Exists(licNum) && LicitacaoController.SituacaoAlterada(licNum, situacao))
                {
                    Licitacao licitacao = LicitacaoController.GetByIdLicitacaoFonte(licNum);
                    licitacao.Situacao = situacao;

                    repo = new LicitacaoRepository();
                    repo.Update(licitacao);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (HandleCreate) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
Example #25
0
        private static void CreateItensLicitacao(HtmlDocument htmDoc, Licitacao licitacao)
        {
            RService.Log("(CreateItensLicitacao) " + Name + ": Criando itens da licitação .. " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + Name + ".txt");

            int count = 0;
            /*Contador das linhas da tabela*/
            int rows = 1;
            /*Pega o html da table com o id dgItensOc pra essa OC*/
            var dadosOc = htmDoc.DocumentNode.Descendants().SingleOrDefault(x => x.Id == "ctl00_conteudo_dg");

            /*Percorre as linhas da tabela exceto o Header que tem o atributo class HeaderStyle*/
            if (dadosOc != null)
            {
                CreateItens(licitacao, ref count, ref rows, dadosOc);
            }
            else
            {
                CreateItensAlternateId(htmDoc, licitacao, ref count, ref rows);
            }
        }
Example #26
0
        private static void HandleTermoHomologacao(string licitInfo, Licitacao licitacao)
        {
            try
            {
                var nums = HandleLicitInfo(licitInfo);

                var          termoHomologacaoUrl = string.Format(Constants.CN_TERMOHOMOLOGACAO, nums[0], nums[1], nums[2]);
                HtmlDocument homologDoc          = WebHandle.GetHtmlDocOfPage(termoHomologacaoUrl, Encoding.GetEncoding("ISO-8859-1"));

                var grupos = homologDoc.DocumentNode.ChildNodes[0].ChildNodes[3].ChildNodes.Where(g => g.InnerText.Contains("GRUPO")).ToList();

                foreach (var grupo in grupos)
                {
                    GetPrecos(grupo, licitacao);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (HandleTermoHomologacao) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", LogPath);
            }
        }
Example #27
0
        /*Cria os objetos Licitacao, Lote e LicitacaoArquivo*/
        private static void HandleCreate(HtmlDocument htmlDocument)
        {
            try
            {
                string linkEdital = Constants.CMG_SITE + Constants.CMG_LINK_EDITAL + htmlDocument.DocumentNode.Descendants("a").SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("arquivoDoEdital")).Attributes["href"].Value;
                /*Verifica se o pregão já não esta na base de dados*/
                if (!string.IsNullOrEmpty(Id) && !LicitacaoController.Exists(Id))
                {
                    Licitacao licitacao = CreateLicitacao(htmlDocument, linkEdital);
                    if (licitacao != null)
                    {
                        Repo.Insert(licitacao);
                        RService.Log("(HandleCreate) " + Name + ": Licitação " + licitacao.IdLicitacaoFonte + " inserida com sucesso at {0}", Path.GetTempPath() + Name + ".txt");

                        CreateLicitacaoArquivo(licitacao, linkEdital);

                        //SegmentarLicitacao(licitacao);

                        NumLicitacoes++;
                    }
                    else
                    {
                        RService.Log("Exception (HandleCreate) " + Name + ": A licitação não foi salva - Motivo(s): " + mensagemErro + " at {0}", Path.GetTempPath() + Name + ".txt");
                    }
                }
                else if (!string.IsNullOrEmpty(Id) && LicitacaoController.Exists(Id) && LicitacaoController.SituacaoAlterada(Id, Situacao))
                {
                    Licitacao licitacao = LicitacaoController.GetByIdLicitacaoFonte(Id);
                    licitacao.Situacao = Situacao;

                    LicitacaoRepository repo = new LicitacaoRepository();
                    repo.Update(licitacao);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (HandleCreate)" + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }
Example #28
0
        private static void GetFiles(Licitacao licitacao)
        {
            try
            {
                if (!Directory.Exists(PathEditais))
                {
                    Directory.CreateDirectory(PathEditais);
                }

                web.FindElement(By.Id("showEdital")).Click();
                Thread.Sleep(3000);

                var html = web.PageSource;

                var fileRx = new Regex(Constants.CRJ_FILELINK_REGEX);

                if (fileRx.IsMatch(html))
                {
                    var matches   = fileRx.Matches(html);
                    var fileLinks = HandleMatchedContent(matches);

                    foreach (var link in fileLinks)
                    {
                        var fileName = link.Split('/')[9];
                        WebHandle.DownloadFileWebRequest(link, PathEditais, fileName);

                        if (LicitacaoArquivoController.CreateLicitacaoArquivo(Name, licitacao, PathEditais, fileName, web.Manage().Cookies.AllCookies))
                        {
                            RService.Log("(GetFiles) " + Name + ": Arquivo " + fileName + " inserido com sucesso para licitação " + licitacao.IdLicitacaoFonte + " at {0}", LogPath);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (GetFiles) " + Name + ": " + e.Message + " / " + e.StackTrace + " at {0}", LogPath);
            }
        }
Example #29
0
        private static void CreateArquivo(Licitacao licitacao, string filename)
        {
            try
            {
                if (File.Exists(PathEditais + filename))
                {
                    if (LicitacaoArquivoController.CreateLicitacaoArquivo(Name, licitacao, PathEditais, filename, web.Manage().Cookies.AllCookies))
                    {
                        RService.Log("(CreateArquivo) " + Name + ": Arquivo inserido com sucesso para licitação " + licitacao.Num + " at {0}", LogPath);
                    }

                    File.Delete(PathEditais + filename);
                }
                else
                {
                    RService.Log("Exception (CreateArquivo) " + Name + ": Download do arquivo " + filename + " não foi concluído com sucesso at {0}", LogPath);
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (CreateArquivo) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", LogPath);
            }
        }
Example #30
0
        private static void GetEditalAndArquivos(HtmlDocument licPage, Licitacao l)
        {
            try
            {
                int             fileCount = 0;
                string          files     = licPage.DocumentNode.ChildNodes[2].ChildNodes[5].ChildNodes[5].ChildNodes[9].ChildNodes[3].ChildNodes[3].ChildNodes[5].InnerHtml;
                MatchCollection fileLinks = StringHandle.GetMatches(files, @"/down(.*)>");
                foreach (var file in fileLinks)
                {
                    string fileUrl = l.LinkEdital.Replace("detalhes", "baixarArquivo") + file.ToString().Split('\"')[0];

                    //l.Observacoes = "Link para download de arquivo referente ao edital: " + fileUrl + "\n";
                    //repo = new LicitacaoRepository();
                    //repo.Update(l);

                    GetFile(l, fileUrl, files, fileCount);
                    fileCount++;
                }
            }
            catch (Exception e)
            {
                RService.Log("Exception (GetEditalAndArquivos) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt");
            }
        }