//Pega os arquivos (edital e anexos) da licitação e depois os deleta private static void GetFiles(Licitacao licitacao) { try { //var webdriver = WebDriverChrome.LoadWebDriver(name); //web = webdriver.Item1; //wait = webdriver.Item2; 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)); //Cria diretório específico para os arquivos if (!Directory.Exists(pathEditais)) { Directory.CreateDirectory(pathEditais); } web.Navigate().GoToUrl(licitacao.LinkEdital); if (web.PageSource.Contains("Arquivos")) { var accordionItems = web.FindElements(By.ClassName("ui-accordion-header")); foreach (var item in accordionItems) { try { if (item.Text.Contains("Arquivos")) { item.Click(); break; } } catch (Exception e) { RService.Log("Exception (GetFiles/Accordion) " + e.Message + " at {0}", logPath); } } } var downloadButtons = web.FindElements(By.ClassName("ui-button-text-icon-left")); foreach (var button in downloadButtons) { try { button.Click(); Thread.Sleep(10000); } catch (Exception e) { RService.Log("Exception (GetFiles/FileButton) " + e.Message + " at {0}", logPath); } } string[] files = Directory.GetFiles(pathEditais); foreach (var file in files) { string fileName = file.Split('/')[1]; if (!string.IsNullOrEmpty(fileName)) { #region AWS RService.Log("(GetFiles) " + name + ": Enviando o arquivo para Amazon S3... " + fileName + " at {0}", logPath); if (AWS.SendObject(licitacao, pathEditais, fileName)) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName; licitacaoArq.NomeArquivoOriginal = name + DateTime.Now.ToString("yyyyMMddHHmmss"); licitacaoArq.NomeArquivoFonte = name; licitacaoArq.Status = 0; licitacaoArq.IdLicitacao = licitacao.Id; LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); repoArq.Insert(licitacaoArq); if (File.Exists(pathEditais + fileName)) { File.Delete(pathEditais + fileName); } RService.Log("(GetFiles) " + name + ": Arquivo " + fileName + " enviado com sucesso para Amazon S3" + " at {0}", logPath); } else { RService.Log("Exception (GetFiles) " + name + ": Erro ao enviar o arquivo para Amazon (CreateLicitacaoArquivo) {0}", logPath); } #endregion } } } catch (Exception e) { RService.Log("Exception (GetFiles) " + name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " at {0}", logPath); } }
internal static void InitCallBack(object state) { //Busca as configurações de execução do robô no banco. config = ConfigRobotController.FindByName(name); try { if (config.Active == 'Y') { //Deleta o log antigo para criar o novo. if (File.Exists(Path.GetTempPath() + name + ".txt")) { File.Delete(Path.GetTempPath() + name + ".txt"); } config.Status = 'R'; ConfigRobotController.Update(config); using (FileStream fs = File.Create(Path.GetTempPath() + Guid.NewGuid().ToString() + ".ire")) { } Init(); //Atualiza as informações do robô de acordo com a última execução. config = ConfigRobotController.FindByName(name); config.NumLicitLast = numLicitacoes; RService.Log(name + " find " + numLicitacoes + " at {0}", logPath); numLicitacoes = 0; config.Status = 'W'; config.LastDate = DateTime.Now; ConfigRobotController.Update(config); } //Agenda a próxima execução do robô. RService.ScheduleMe(config); //Arquivo que indica ao manager que é hora de atualizar as informações. File.Create(Path.GetTempPath() + Guid.NewGuid().ToString() + ".ire"); } catch (Exception e) { RService.Log("Exception (InitCallBack) " + name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", logPath); } finally { //Finaliza e deleta as instâncias do navegador e da pasta if (web != null) { web.Close(); } if (Directory.Exists(pathEditais)) { Directory.Delete(pathEditais); } } RService.Log("Finished " + name + " at {0}", logPath); //Envia o log por e-mail EmailHandle.SendMail(logPath, name); }
//Método para pegar as licitações do site do TCE-PI private static void GetLicitacoes() { try { //var webdriver = WebDriverChrome.LoadWebDriver(name); //var webdriver = WebDriverPhantomJS.LoadWebDriver(name, web); //web = webdriver.Item1; //wait = webdriver.Item2; if (web != null) { web.Quit(); } var driver = ChromeDriverService.CreateDefaultService(); driver.HideCommandPromptWindow = true; var op = new ChromeOptions(); op.AddUserProfilePreference("download.default_directory", TCEPIController.pathEditais); web = new ChromeDriver(driver, op, TimeSpan.FromSeconds(300)); web.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(300); wait = new WebDriverWait(web, TimeSpan.FromSeconds(300)); web.Navigate().GoToUrl(Constants.TCEPI_SITE); wait.Until(ExpectedConditions.ElementExists(By.XPath("//*[@id=\"formMural:btnPesquisar\"]/span[2]"))); web.FindElement(By.XPath("//*[@id=\"formMural:btnPesquisar\"]/span[2]")).Click(); Thread.Sleep(3000); /*Laço que se repete até o fim das licitações. O fim é demarcado pela quantidade de licitações na lista licitNums: * em cada página o número é 50, menos na última página. Quando o número for diferente de 50, ele termina*/ do { licitNums = new List <string>(); RService.Log("(GetLicitacoes) " + name + ": Acessando página " + currentPage + " at {0}", logPath); string pageHtml = web.PageSource.ToString(); var licits = StringHandle.GetMatches(pageHtml, @"\?id=\d{6}"); //Pega os números das licitações da página em questão foreach (var licit in licits) { string licNum = licit.ToString().Replace("?id=", ""); licitNums.Add(licNum); } RService.Log("(GetLicitacoes) " + name + ": Acessando licitações da página " + currentPage + " at {0}", logPath); foreach (string lic in licitNums) { if (!alreadyInserted.Contains(Int64.Parse(lic))) { Licitacao licitacao = CreateLicitacao(lic); if (licitacao != null && !LicitacaoController.Exists(licitacao.IdLicitacaoFonte.ToString())) { repo = new LicitacaoRepository(); try { repo.Insert(licitacao); RService.Log("(GetLicitacoes) " + name + ": Licitação " + licitacao.IdLicitacaoFonte + " inserida com sucesso at {0}", logPath); numLicitacoes++; GetFiles(licitacao); } catch (Exception e) { RService.Log("Exception (GetLicitacoes) " + name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / Mensagem de erro: " + mensagemErro + " at {0}", logPath); } } } } //webdriver = WebDriverChrome.LoadWebDriver(name); //web = webdriver.Item1; //wait = webdriver.Item2; web = new ChromeDriver(driver, op, TimeSpan.FromSeconds(300)); web.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(300); wait = new WebDriverWait(web, TimeSpan.FromSeconds(300)); web.Navigate().GoToUrl(Constants.TCEPI_SITE); web.FindElement(By.XPath("//*[@id=\"formMural:btnPesquisar\"]/span[2]")).Click(); for (int i = 0; i < currentPage; i++) { wait.Until(ExpectedConditions.ElementExists(By.XPath("//*[@id=\"formListaLic:listaLic_paginator_top\"]/a[3]"))); web.FindElement(By.XPath("//*[@id=\"formListaLic:listaLic_paginator_top\"]/a[3]")).Click(); Thread.Sleep(10000); } currentPage++; } while (licitNums.Count() == 10); } catch (Exception e) { StackTrace st = new StackTrace(e, true); var frame = st.GetFrame(st.FrameCount - 1); var line = frame.GetFileLineNumber(); RService.Log("Exception (GetLicitacoes) " + name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at line " + line + " at {0}", logPath); } }
//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); }
/*Inicia o processamento do robot*/ private static void Init() { RService.Log("(Init) " + Name + ": Começando o processamento.. " + "at {0}", Path.GetTempPath() + Name + ".txt"); try { AlreadyColected = new HashSet <long>(); /*Lista das licitacoes que já existem para bec.sp.gov*/ //AlreadyInserted = LicitacaoController.GetAlreadyInserted(Constants.BEC_SITE); /*Lista das cidades para o estado*/ Cidades = CidadeController.GetNameToCidade(Constants.BEC_UF); Modalidade = ModalidadeController.FindById(24); Orgao = OrgaoController.FindById(388); Lote = LoteController.CreateLote(43, 507); Repo = new LicitacaoRepository(); //Define os pontos de partida, uri e argumentos do post List <string> urls = new List <string>(); urls.Add(Constants.BEC_LINK_MODALIDADE_71); urls.Add(Constants.BEC_LINK_MODALIDADE_72); /*Percorre cada modalidade*/ foreach (string uri in urls) { /*Lista dos parametros do post*/ NameValueCollection post = new NameValueCollection(); /*Percorre as naturezas de cada modalidade*/ foreach (var attr in WebHandle.GetHtmlDocOfPage(uri, post).DocumentNode.Descendants("span").Where(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.ToString().Contains(Constants.BEC_ID_NATUREZA))) { string urin = attr.SelectSingleNode("a").Attributes["href"].Value.ToString(); int page = 2, count = 20; /*Percorre as páginas para cada uma das naturezas (ex: 1;2;3)*/ HtmlDocument pagehtml = WebHandle.GetHtmlDocOfPage(urin, post); while (pagehtml != null && count == 20) { RService.Log("(GetOC) " + Name + ": Percorrendo os links da página.. " + (page - 1) + " at {0}", Path.GetTempPath() + Name + ".txt"); //Pega as licitações de cada página (OC's) count = GetOC(pagehtml); //Pega o html da próxima página pagehtml = WebHandle.GetHtmlDocOfPage(urin, GetFormParameters(pagehtml, page)); //Numero da proxima página page++; } } } } catch (Exception e) { RService.Log("Exception (Init) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } finally { if (NumLicitacoes <= 0) { LoteController.Delete(Lote); } } }
/*Acessa página dos arquivos de edital passando pelo captcha*/ private static void DownloadEdAndCreatLicArq(string num, Licitacao licitacao) { RService.Log("(DownloadEdAndCreatLicArq) " + Name + ": Visualizando arquivos de edital, licitação... " + num + " at {0}", Path.GetTempPath() + Name + ".txt"); try { 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); if (TryReload) { foreach (var a in web.FindElements(By.TagName("a"))) { if (!string.IsNullOrEmpty(a.GetAttribute("onclick")) && a.GetAttribute("onclick").Contains("Listar documentos")) { web.ExecuteScript(a.GetAttribute("onclick")); wait.Until(ExpectedConditions.ElementIsVisible(By.Id("idImgListarAnexo"))); web.ExecuteScript(GetScriptFillCaptcha("idImgListarAnexo", "inputCaptchaAnexosLicitacao")); Thread.Sleep(1000); web.ExecuteScript("document.getElementById('botao_continuar').click()"); Thread.Sleep(2000); var select = web.FindElement(By.TagName("select")); new SelectElement(select).SelectByValue("-1"); //mostrar todos MatchCollection linkForm = Regex.Matches(web.PageSource, "numeroLicitacao=(.+?)&sem-reg=true"); if (linkForm.Count > 0) { DownloadEditais(FindDocLinks(num), licitacao, linkForm); } if (Directory.Exists(PathEditais)) { Directory.Delete(PathEditais, true); } break; } } } else { web.ExecuteScript(GetScriptFillCaptcha("idImgListarAnexo", "inputCaptchaAnexosLicitacao")); Thread.Sleep(1000); web.ExecuteScript("document.getElementById('botao_continuar').click()"); Thread.Sleep(2000); var select = web.FindElement(By.XPath("//*[@id=\"tDocumento_length\"]/label/select")); new SelectElement(select).SelectByText("Todos"); MatchCollection linkForm = Regex.Matches(web.PageSource, "numeroLicitacao=(.+?)&sem-reg=true"); DownloadEditais(FindDocLinks(num), licitacao, linkForm); if (Directory.Exists(PathEditais)) { Directory.Delete(PathEditais, true); } } } catch (Exception e) { if (TryReload) { RService.Log("Exception (DownloadEdAndCreatLicArq) " + Name + ": Falha na visualização, tentando novamente... " + num + " at {0}", Path.GetTempPath() + Name + ".txt"); TryReload = false; DownloadEdAndCreatLicArq(num, licitacao); } else { RService.Log("Exception (DownloadEdAndCreatLicArq) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } TryReload = true; } }
/*Cria uma nova licitacao.*/ 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.LinkSite = Constants.BEC_SITE; licitacao.Modalidade = Modalidade; licitacao.IdFonte = 507; licitacao.EstadoFonte = Constants.BEC_UF; licitacao.CidadeFonte = 9668; licitacao.Orgao = Orgao; licitacao.Cidade = Constants.BEC_CIDADE; licitacao.Estado = Constants.BEC_ESTADO; licitacao.Excluido = 0; licitacao.SegmentoAguardandoEdital = 0; licitacao.DigitacaoUsuario = 43; //Robo licitacao.Situacao = situacao; //licitacao.DigitacaoData = null; //licitacao.ProcessamentoData = null; licitacao.Num = ocnum; licitacao.IdLicitacaoFonte = long.Parse(ocnum); licitacao.Departamento = htmDoc.DocumentNode.Descendants("span").SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("ctl00_wucOcFicha_txtNomUge")).InnerText.Trim(); int count; string city = htmDoc.DocumentNode.Descendants("span").SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("ctl00_wucOcFicha_txtDescricaoEnteFederativo")).InnerText.Trim(); if (city != "GOVERNO DO ESTADO DE SÃO PAULO") { city = StringHandle.RemoveAccent(city); foreach (var cidade in Cidades) { if (city.Contains(cidade.Key)) { licitacao.Cidade = cidade.Key; licitacao.CidadeFonte = cidade.Value; break; } } } /*Percorre os links da OC para montar o objeto licitação*/ bool findFirstEditalLink = false; bool findFirstOcLink = false; foreach (HtmlNode htmNode in htmDoc.DocumentNode.Descendants("li")) { /*Link onde ficam os arquivos do edital*/ HtmlNode htmlNodeInNode = htmNode.SelectSingleNode("a"); if (htmlNodeInNode != null) { if (htmlNodeInNode.Attributes.Contains("href") && htmlNodeInNode.Attributes["href"].Value.Contains("bec_pregao_UI/Edital") && !findFirstEditalLink) { licitacao.LinkEdital = htmlNodeInNode.Attributes["href"].Value.Trim(); findFirstEditalLink = true; } /*Link para a pag onde ficam as datas*/ if (htmlNodeInNode.Attributes.Contains("href") && htmlNodeInNode.Attributes["href"].Value.Contains("bec_pregao_UI/Agendamento")) { /*Html da pág onde ficam as datas*/ HtmlDocument htmDocAgendamento = WebHandle.GetHtmlDocOfPage(htmlNodeInNode.Attributes["href"].Value); /*Tabela de datas, agendamentos*/ HtmlNode table = htmDocAgendamento.DocumentNode.Descendants("table").SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("ctl00_conteudo_grd")); /*Cada célula da tabela*/ List <HtmlNode> tds = table.Descendants("td").ToList(); count = 0; foreach (HtmlNode inf in tds) { /*Célula com o label ENTREGA DE PROPOSTA, na célula seguinte ficam as datas*/ if (inf.InnerText.ToUpper().Trim().Contains("ENTREGA DE PROPOSTA")) { MatchCollection matches = StringHandle.GetMatches(tds[count + 1].InnerText.Trim(), @"(\d{2}\/\d{2}\/\d{4}\s+\d{2}:\d{2})"); licitacao.EntregaData = DateHandle.Parse(matches[0].Groups[1].Value, "dd/MM/yyyy hh:mm"); licitacao.AberturaData = DateHandle.Parse(matches[1].Groups[1].Value, "dd/MM/yyyy hh:mm"); break; } count++; } } /*Link com dados da OC*/ if (htmlNodeInNode.Attributes.Contains("href") && htmlNodeInNode.Attributes["href"].Value.Contains("bec_pregao_UI/OC") && !findFirstOcLink) { HtmlDocument htmDocFasePrep = WebHandle.GetHtmlDocOfPage(htmlNodeInNode.Attributes["href"].Value); licitacao.Endereco = Regex.Replace(htmDocFasePrep.DocumentNode.Descendants("span").SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("ctl00_conteudo_Wuc_OC_Ficha2_txtEndUge")).InnerText.Trim(), @"\s+", " "); licitacao.Objeto = "Contratação de " + Regex.Replace(htmDocFasePrep.DocumentNode.Descendants("span").SingleOrDefault(x => x.Attributes.Contains("id") && x.Attributes["id"].Value.Contains("ctl00_conteudo_Wuc_OC_Ficha2_txtNaturezaJuridica")).InnerText.Trim(), @"\s+", " "); findFirstOcLink = true; } } } licitacao.ItensLicitacao = licitacao.ItensLicitacao ?? new List <ItemLicitacao>(); CreateItensLicitacao(htmDoc, 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); }
/*Cria as Licitacaoes arquivos se conseguir envia-los por ftp*/ private static void CreateLicitacaoArquivo(Licitacao licitacao) { RService.Log("(CreateLicitacaoArquivo) " + Name + ": Criando arquivo de edital da licitação.. " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + Name + ".txt"); try { string fileName = FileHandle.GetATemporaryFileName(); string zipPath = string.Empty; if (Directory.Exists(PathEditais)) { zipPath = @Path.GetTempPath() + fileName + ".zip"; ZipFile.CreateFromDirectory(PathEditais, zipPath); } Directory.Delete(PathEditais, true); if (!string.IsNullOrEmpty(zipPath)) { #region FTP //if (FTP.SendFileFtp(new FTP(@Path.GetTempPath(), fileName + ".zip", FTP.Adrss, FTP.Pwd, FTP.UName), Name)) //{ //LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); //licitacaoArq.NomeArquivo = fileName + ".zip"; //licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); //licitacaoArq.Status = 0; //licitacaoArq.IdLicitacao = licitacao.Id; //LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); //repoArq.Insert(licitacaoArq); //if (File.Exists(zipPath)) //{ //File.Delete(zipPath); //} //} //else //{ //RService.Log("(CreateLicitacaoArquivo) " + Name + ": error sending the file by FTP (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + Name + ".txt"); //} #endregion #region AWS RService.Log("(CreateLicitacaoArquivo) " + Name + ": Enviando arquivo para Amazon S3... " + fileName + " at {0}", Path.GetTempPath() + Name + ".txt"); if (AWS.SendObject(licitacao, Path.GetTempPath(), fileName + ".zip")) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName + ".zip"; licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); licitacaoArq.Status = 0; licitacaoArq.IdLicitacao = licitacao.Id; LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); repoArq.Insert(licitacaoArq); if (File.Exists(zipPath)) { File.Delete(zipPath); } RService.Log("(CreateLicitacaoArquivo) " + Name + ": Arquivo " + fileName + " enviado com sucesso para Amazon S3" + " at {0}", Path.GetTempPath() + Name + ".txt"); } else { RService.Log("Exception (CreateLicitacaoArquivo) " + Name + ": Erro ao enviar o arquivo para Amazon (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + Name + ".txt"); } #endregion } else { RService.Log("(CreateLicitacaoArquivo) " + Name + ": error while create zip file (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + Name + ".txt"); } } catch (Exception e) { RService.Log("Exception (CreateLicitacaoArquivo) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } }
/*Criando licitação arquivo e enviando para pasta FTP*/ public static bool CreateLicitacaoArquivo(string nomeRobo, Licitacao licitacao, string edital, string pathEditais, string nameFile, ReadOnlyCollection <OpenQA.Selenium.Cookie> AllCookies) { try { if (!Directory.Exists(pathEditais)) { Directory.CreateDirectory(pathEditais); } string fileName = FileHandle.GetATemporaryFileName() + WebHandle.GetExtensionFile(nameFile); RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Fazendo o download do arquivo... " + fileName + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); if (WebHandle.DownloadFileWebRequest(AllCookies, edital, pathEditais + fileName) && File.Exists(pathEditais + fileName)) { #region FTP //RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Enviando arquivo por FTP... " + fileName + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); //int fileCount = Directory.GetFiles(pathEditais).Length; //int wait = 0; //while (fileCount == 0 && wait < 6) //{ //Thread.Sleep(5000); //wait++; //} //if (FTP.SendFileFtp(new FTP(pathEditais, fileName, FTP.Adrss, FTP.Pwd, FTP.UName), nomeRobo)) //{ //LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); //licitacaoArq.NomeArquivo = fileName; //licitacaoArq.NomeArquivoOriginal = nomeRobo + DateTime.Now.ToString("yyyyMMddHHmmss"); //licitacaoArq.NomeArquivoFonte = nameFile; //licitacaoArq.Status = 0; //licitacaoArq.IdLicitacao = licitacao.Id; //LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); //repoArq.Insert(licitacaoArq); //if (File.Exists(pathEditais + fileName)) //{ //File.Delete(pathEditais + fileName); //} //RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Arquivo " + fileName + " enviado com sucesso at {0}", Path.GetTempPath() + nomeRobo + ".txt"); //return true; //} //else //{ //RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": Erro ao enviar o arquivo por FTP (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + nomeRobo + ".txt"); //} #endregion #region AWS RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Enviando o arquivo para Amazon S3... " + fileName + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); if (AWS.SendObject(licitacao, pathEditais, fileName)) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName; licitacaoArq.NomeArquivoOriginal = nomeRobo + DateTime.Now.ToString("yyyyMMddHHmmss"); licitacaoArq.NomeArquivoFonte = nameFile; licitacaoArq.Status = 0; licitacaoArq.IdLicitacao = licitacao.Id; LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); repoArq.Insert(licitacaoArq); if (File.Exists(pathEditais + fileName)) { File.Delete(pathEditais + fileName); } RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Arquivo " + fileName + " enviado com sucesso para Amazon S3" + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); return(true); } else { RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": Erro ao enviar o arquivo para Amazon (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + nomeRobo + ".txt"); } #endregion } else { RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": Erro ao fazer o download do arquivo, no link: " + edital + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); } } catch (Exception e) { RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); } return(false); }
internal static bool CreateLicitacaoArquivo(string nomeRobo, Licitacao licitacao, string pathEditais, string nameFile, ReadOnlyCollection <Cookie> allCookies) { try { if (!Directory.Exists(pathEditais)) { Directory.CreateDirectory(pathEditais); } string fileName = FileHandle.GetATemporaryFileName() + WebHandle.GetExtensionFile(nameFile); System.Threading.Thread.Sleep(15000); if (File.Exists(pathEditais + "\\" + nameFile)) { if (nomeRobo.Contains("BB") || nomeRobo.Contains("PCP") || nomeRobo.Contains("TCERS") || nomeRobo.Contains("CRJ")) { File.Move(pathEditais + nameFile, pathEditais + fileName); } #region FTP //RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Enviando arquivo por FTP... " + fileName + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); //if (FTP.SendFileFtp(new FTP(pathEditais, fileName, FTP.Adrss, FTP.Pwd, FTP.UName), nomeRobo)) //{ //LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); //licitacaoArq.NomeArquivo = fileName; //licitacaoArq.NomeArquivoOriginal = nomeRobo + DateTime.Now.ToString("yyyyMMddHHmmss"); //licitacaoArq.NomeArquivoFonte = nameFile; //licitacaoArq.Status = 0; //licitacaoArq.IdLicitacao = licitacao.Id; //LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); //repoArq.Insert(licitacaoArq); //if (File.Exists(pathEditais + fileName)) //{ //File.Delete(pathEditais + fileName); //} //return true; //} //else //{ //RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": Erro ao enviar o arquivo por FTP (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + nomeRobo + ".txt"); //} #endregion #region AWS RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Enviando o arquivo para Amazon S3... " + fileName + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); if (AWS.SendObject(licitacao, pathEditais, fileName)) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName; licitacaoArq.NomeArquivoOriginal = nomeRobo + DateTime.Now.ToString("yyyyMMddHHmmss"); licitacaoArq.NomeArquivoFonte = nameFile; licitacaoArq.Status = 0; licitacaoArq.IdLicitacao = licitacao.Id; LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); repoArq.Insert(licitacaoArq); if (File.Exists(pathEditais + fileName)) { File.Delete(pathEditais + fileName); } RService.Log("(CreateLicitacaoArquivo) " + nomeRobo + ": Arquivo " + fileName + " enviado com sucesso para Amazon S3" + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); return(true); } else { RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": Erro ao enviar o arquivo para Amazon (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + nomeRobo + ".txt"); } #endregion } } catch (Exception e) { RService.Log("Exception (CreateLicitacaoArquivo) " + nomeRobo + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " at {0}", Path.GetTempPath() + nomeRobo + ".txt"); } return(false); }
public static string FindCity(Licitacao licitacao) { string cidadeEstado = string.Empty; string nomeDpto = licitacao.Orgao.Nome; string estado = licitacao.Orgao.Estado; try { if (nomeDpto.Contains("- AC") || nomeDpto.Contains("/AC") || nomeDpto.Contains("ACRE") || nomeDpto.Contains("RIO BRANCO") || estado.Contains("AC")) { cidadeEstado = "Rio Branco/AC/16"; } else if (nomeDpto.Contains("- AL") || nomeDpto.Contains("/AL") || nomeDpto.Contains("ALAGOAS") || nomeDpto.Contains("MACEIÓ") || nomeDpto.Contains("MACEIO") || estado.Contains("AL")) { cidadeEstado = "Maceió/AL/109"; } else if (nomeDpto.Contains("- AM") || nomeDpto.Contains("/AM") || nomeDpto.Contains("AMAZONAS") || nomeDpto.Contains("MANAUS") || estado.Contains("AM")) { cidadeEstado = "Manaus/AM/AM"; } else if (nomeDpto.Contains("- AP") || nomeDpto.Contains("/AP") || nomeDpto.Contains("AMAPÁ") || nomeDpto.Contains("MACAPÁ") || nomeDpto.Contains("MACAPA") || estado.Contains("AP")) { cidadeEstado = "Macapá/AP/307"; } else if (nomeDpto.Contains("- BA") || nomeDpto.Contains("/BA") || nomeDpto.Contains("BAHIA") || nomeDpto.Contains("SALVADOR") || estado.Contains("BA")) { cidadeEstado = "Salvador/BA/988"; } else if (nomeDpto.Contains("- CE") || nomeDpto.Contains("/CE") || nomeDpto.Contains("CEARÁ") || nomeDpto.Contains("FORTALEZA") || estado.Contains("CE")) { cidadeEstado = "Fortaleza/CE/1347"; } else if (nomeDpto.Contains("- DF") || nomeDpto.Contains("/DF") || nomeDpto.Contains("DISTRITO FEDERAL") || nomeDpto.Contains("BRASÍLIA") || nomeDpto.Contains("BRASILIA") || estado.Contains("DF")) { cidadeEstado = "Brasília/DF/1778"; } else if (nomeDpto.Contains("- ES") || nomeDpto.Contains("/ES") || nomeDpto.Contains("ESPÍRITO SANTO") || nomeDpto.Contains("VITÓRIA") || nomeDpto.Contains("VITORIA") || estado.Contains("ES")) { cidadeEstado = "Vitória/ES/2048"; } else if (nomeDpto.Contains("- GO") || nomeDpto.Contains("/GO") || nomeDpto.Contains("GOIÁS") || nomeDpto.Contains("GOIÂNIA") || nomeDpto.Contains("GOIAS") || nomeDpto.Contains("GOIANIA") || estado.Contains("GO")) { cidadeEstado = "Goiânia/GO/2174"; } else if (nomeDpto.Contains("- MA") || nomeDpto.Contains("/MA") || nomeDpto.Contains("MARANHÃO") || nomeDpto.Contains("SÃO LUÍS") || nomeDpto.Contains("SAO LUIS") || estado.Contains("MA")) { cidadeEstado = "São Luís/MA/2587"; } else if (nomeDpto.Contains("- MG") || nomeDpto.Contains("/MG") || nomeDpto.Contains("MINAS GERAIS") || nomeDpto.Contains("BELO HORIZONTE") || nomeDpto.Contains("UFMG") || estado.Contains("MG")) { cidadeEstado = "Belo Horizonte/MG/2754"; } else if (nomeDpto.Contains("- MS") || nomeDpto.Contains("/MS") || nomeDpto.Contains("MATO GROSSO DO SUL") || nomeDpto.Contains("CAMPO GRANDE") || estado.Contains("MS")) { cidadeEstado = "Campo Grande/MS/4141"; } else if (nomeDpto.Contains("- MT") || nomeDpto.Contains("/MT") || nomeDpto.Contains("MATO GROSSO") || nomeDpto.Contains("CUIABÁ") || nomeDpto.Contains("CUIABA") || estado.Contains("MT")) { cidadeEstado = "Cuiabá/MT/4347"; } else if (nomeDpto.Contains("- PA") || nomeDpto.Contains("/PA") || nomeDpto.Contains("PARÁ") || nomeDpto.Contains("BELÉM") || nomeDpto.Contains("BELEM") || estado.Contains("PA")) { cidadeEstado = "Belém/PA/4565"; } else if (nomeDpto.Contains("- PB") || nomeDpto.Contains("/PB") || nomeDpto.Contains("PARAÍBA") || nomeDpto.Contains("JOÃO PESSOA") || nomeDpto.Contains("JOAO PESSOA") || estado.Contains("PB")) { cidadeEstado = "João Pessoa/PB/4964"; } else if (nomeDpto.Contains("- PE") || nomeDpto.Contains("/PE") || nomeDpto.Contains("PERNAMBUCO") || nomeDpto.Contains("RECIFE") || estado.Contains("PE")) { cidadeEstado = "Recife/PE/5406"; } else if (nomeDpto.Contains("- PI") || nomeDpto.Contains("/PI") || nomeDpto.Contains("PIAUÍ") || nomeDpto.Contains("TERESINA") || estado.Contains("PI")) { cidadeEstado = "Teresina/PI/5721"; } else if (nomeDpto.Contains("- PR") || nomeDpto.Contains("/PR") || nomeDpto.Contains("PARANÁ") || nomeDpto.Contains("CURITIBA") || estado.Contains("PR")) { cidadeEstado = "Curitiba/PR/6015"; } else if (nomeDpto.Contains("- RJ") || nomeDpto.Contains("/RJ") || nomeDpto.Contains("RJ") || nomeDpto.Contains("RIO DE JANEIRO") || estado.Contains("RJ")) { cidadeEstado = "Rio de Janeiro/RJ"; } else if (nomeDpto.Contains("- RN") || nomeDpto.Contains("/RN") || nomeDpto.Contains("RIO GRANDE DO NORTE") || nomeDpto.Contains("NATAL") || estado.Contains("RN")) { cidadeEstado = "Natal/RN/7221"; } else if (nomeDpto.Contains("- RO") || nomeDpto.Contains("/RO") || nomeDpto.Contains("RONDÔNIA") || nomeDpto.Contains("PORTO VELHO") || estado.Contains("RO")) { cidadeEstado = "Porto Velho/RO/7352"; } else if (nomeDpto.Contains("- RR") || nomeDpto.Contains("/RR") || nomeDpto.Contains("RORAIMA") || nomeDpto.Contains("BOA VISTA") || estado.Contains("RR")) { cidadeEstado = "Boa Vista/RR/7375"; } else if (nomeDpto.Contains("- RS") || nomeDpto.Contains("/RS") || nomeDpto.Contains("RIO GRANDE DO SUL") || nomeDpto.Contains("PORTO ALEGRE") || estado.Contains("RS")) { cidadeEstado = "Porto Alegre/RS/7994"; } else if (nomeDpto.Contains("- SC") || nomeDpto.Contains("/SC") || nomeDpto.Contains("SANTA CATARINA") || nomeDpto.Contains("FLORIANÓPOLIS") || nomeDpto.Contains("FLORIANOPOLIS") || estado.Contains("SC")) { cidadeEstado = "Florianópolis/SC/8452"; } else if (nomeDpto.Contains("- SE") || nomeDpto.Contains("/SE") || nomeDpto.Contains("SERGIPE") || nomeDpto.Contains("ARACAJU") || estado.Contains("SE")) { cidadeEstado = "Aracaju/SE/8770"; } else if (nomeDpto.Contains("- SP") || nomeDpto.Contains("/SP") || nomeDpto.Contains("SÃO PAULO") || nomeDpto.Contains("PAULISTA") || nomeDpto.Contains("SAO PAULO") || estado.Contains("SP")) { cidadeEstado = "São Paulo/SP/9668"; } else if (nomeDpto.Contains("- TO") || nomeDpto.Contains("/TO") || nomeDpto.Contains("TOCANTINS") || nomeDpto.Contains("PALMAS") || estado.Contains("TO")) { cidadeEstado = "Palmas/TO/9899"; } else { RService.Log("Exception (FindCity): Não foi possível identificar a localidade do órgão " + nomeDpto + " at {0}", Path.GetTempPath() + "RSERVICE" + ".txt"); } } catch (Exception e) { RService.Log("Exception (FindCity): Não foi possível identificar a localidade do órgão " + nomeDpto + " at {0}", Path.GetTempPath() + "RSERVICE" + ".txt"); return(null); } return(cidadeEstado); }