/*Cria o objeto licitacao arquivo, com o nome do arquivo do edital e a licitacao referente*/ private static void CreateLicitacaoArquivo(Licitacao licitacao, string linkEdital) { RService.Log("(CreateLicitacaoArquivo) " + Name + ": Criando arquivo de edital da OC.. " + "at {0}", Path.GetTempPath() + Name + ".txt"); try { /*Transforma o html do edital em pdf, salva numa pasta temp e depois envia para um diretório FTP*/ if (!Directory.Exists(PathEdital)) { Directory.CreateDirectory(PathEdital); } string fileName = FileHandle.GetATemporaryFileName(); if (WebHandle.HtmlToPdf(linkEdital, PathEdital + fileName)) { #region FTP //if (FTP.SendFileFtp(new FTP(PathEdital, fileName + WebHandle.ExtensionLastFileDownloaded, FTP.Adrss, FTP.Pwd, FTP.UName), Name)) //{ // LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); // licitacaoArq.NomeArquivo = fileName + WebHandle.ExtensionLastFileDownloaded; // licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); // licitacaoArq.Status = 0; // licitacaoArq.IdLicitacao = licitacao.Id; // LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); // repoArq.Insert(licitacaoArq); // if (File.Exists(PathEdital + fileName + WebHandle.ExtensionLastFileDownloaded)) // { // File.Delete(PathEdital + fileName + WebHandle.ExtensionLastFileDownloaded); // } //} //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, PathEdital, fileName + ".pdf")) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName + WebHandle.ExtensionLastFileDownloaded; licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); licitacaoArq.Status = 0; licitacaoArq.IdLicitacao = licitacao.Id; LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); repoArq.Insert(licitacaoArq); if (File.Exists(PathEdital + fileName + WebHandle.ExtensionLastFileDownloaded)) { File.Delete(PathEdital + fileName + WebHandle.ExtensionLastFileDownloaded); } 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 + ": erro ao converter HTML para PDF (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"); } }
private static void GetFile(Licitacao l, string fileUrl, string files, int count) { try { //Tuple<ChromeDriver, WebDriverWait> loadDriver = WebDriverChrome.LoadWebDriver(Name); //web = loadDriver.Item1; //wait = loadDriver.Item2; if (web != null) { web.Quit(); } var driver = ChromeDriverService.CreateDefaultService(); driver.HideCommandPromptWindow = true; var op = new ChromeOptions(); op.AddUserProfilePreference("download.default_directory", PathEdital); web = new ChromeDriver(driver, new ChromeOptions(), TimeSpan.FromSeconds(300)); web.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(300); wait = new WebDriverWait(web, TimeSpan.FromSeconds(300)); if (!Directory.Exists(PathEdital)) { Directory.CreateDirectory(PathEdital); } web.Navigate().GoToUrl(fileUrl); web.FindElement(By.Id("captcha_usuario")).SendKeys(GetScriptFillCaptcha(web, "captcha_usuario").ToLower()); web.FindElement(By.Id("enviar")).Click(); Thread.Sleep(15000); string fileName = StringHandle.GetMatches(files, @"uploads/(.*).pdf")[count].ToString().Replace("uploads/", ""); #region AWS if (AWS.SendObject(l, PathEdital, fileName)) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName; licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); licitacaoArq.NomeArquivoFonte = Name; licitacaoArq.Status = 0; licitacaoArq.IdLicitacao = l.Id; LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); repoArq.Insert(licitacaoArq); if (File.Exists(PathEdital + fileName)) { File.Delete(PathEdital + fileName); } RService.Log("(GetFiles) " + Name + ": Arquivo " + fileName + " enviado com sucesso para Amazon S3" + " at {0}", Path.GetTempPath() + Name + ".txt"); } else { RService.Log("Exception (GetFiles) " + Name + ": Erro ao enviar o arquivo para Amazon (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + Name + ".txt"); } #endregion } catch (Exception e) { RService.Log("Exception (GetFile) " + Name + ": " + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } finally { if (web != null) { web.Close(); } } }
/*Cria uma licitação arquivo se o download e o envio do arquivo for efetuado com sucesso*/ private static void CreateLicitacaoArquivo(Licitacao licitacao, string linkEdital) { RService.Log("(CreateLicitacaoArquivo) " + Name + ": Criando arquivo de edital da licitação num... " + licitacao.IdLicitacaoFonte + " at {0}", Path.GetTempPath() + Name + ".txt"); try { if (!Directory.Exists(PathEditais)) { Directory.CreateDirectory(PathEditais); } string fileName = FileHandle.GetATemporaryFileName(); if (WebHandle.DownloadData(linkEdital, PathEditais + fileName)) { #region FTP //if (FTP.SendFileFtp(new FTP(PathEditais, fileName + WebHandle.ExtensionLastFileDownloaded, FTP.Adrss, FTP.Pwd, FTP.UName), Name)) //{ //LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); //licitacaoArq.NomeArquivo = fileName + WebHandle.ExtensionLastFileDownloaded; //licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); //licitacaoArq.Status = 0; //licitacaoArq.IdLicitacao = licitacao.Id; //LicitacaoArquivoRepository repoArq = new LicitacaoArquivoRepository(); //repoArq.Insert(licitacaoArq); //RService.Log("(CreateLicitacaoArquivo) " + Name + ": Arquivo de edital da licitação " + licitacao.IdLicitacaoFonte + " inserido com sucesso at {0}", Path.GetTempPath() + Name + ".txt"); //if (File.Exists(PathEditais + fileName)) //{ //File.Delete(PathEditais + fileName); //} //} //else //{ //RService.Log("Exception (CreateLicitacaoArquivo) " + Name + ": Erro ao enviar o arquivo para o 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, PathEditais, fileName + WebHandle.ExtensionLastFileDownloaded)) { LicitacaoArquivo licitacaoArq = new LicitacaoArquivo(); licitacaoArq.NomeArquivo = fileName + WebHandle.ExtensionLastFileDownloaded; licitacaoArq.NomeArquivoOriginal = Name + DateTime.Now.ToString("yyyyMMddHHmmss"); 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) " + Name + ": Arquivo " + fileName + " enviado com sucesso para Amazon S3" + " at {0}", Path.GetTempPath() + Name + ".txt"); } else { RService.Log("(CreateLicitacaoArquivo) " + Name + ": Erro ao enviar o arquivo para Amazon S3 (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + Name + ".txt"); } #endregion } else { RService.Log("(CreateLicitacaoArquivo) " + Name + ": Erro ao baixar o arquivo (CreateLicitacaoArquivo) {0}", Path.GetTempPath() + Name + ".txt"); } } catch (Exception e) { RService.Log("RService Exception " + Name + ": (CreateLicitacaoArquivo)" + e.Message + " / " + e.StackTrace + " / " + e.InnerException + " / " + e.InnerException + " at {0}", Path.GetTempPath() + Name + ".txt"); } }
//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); } }
/*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); }