private void EscreverArquivoDeLog(List <string> excecoes, IntegracaoInfos info) { string filePhisical = Configurations.DiretorioRaiz(); string fileName = ".txt"; var date = DateTime.Now.ToString("yyyy-MM-dd_HH-mm", CultureInfo.InvariantCulture); var path = filePhisical + "\\" + "LOGS" + "\\" + "Log-SCIPP -" + info.DiretorioInspecaoLocal + "-" + date + fileName; using (StreamWriter file = new StreamWriter(path)) { foreach (string line in excecoes) { file.WriteLine(line); } file.Close(); if (info.TipoIntegracao == 1) { _ftp.UploadFile(path, info); } else { _sftp.UploadFile(path, info); } } }
//// They want us to delete the files that we've successfully processed. Use this. public bool DeleteFile(string file, string diretorioLocal, IntegracaoInfos sftpInfo) { bool success = true; try { SftpClient tmpClient; if (sftpInfo.Senha != "") { tmpClient = new SftpClient(sftpInfo.HostURI, sftpInfo.Usuario, sftpInfo.Senha); } else { var sftpModelShared = new SftpModel(sftpInfo.DiretorioInspecaoLocal, sftpInfo.HostURI, sftpInfo.Usuario, sftpInfo.PrivateKey, sftpInfo.Senha); tmpClient = new SftpClient(sftpModelShared.HostURI, sftpModelShared.Usuario, sftpModelShared.PrivateKey); } // was new SftpClient(this.HostURI, this.UserName, this.PrivateKey) using (SftpClient client = tmpClient) { client.Connect(); client.DeleteFile(diretorioLocal + file); client.Disconnect(); } } catch { success = false; } return(success); }
private static InspecoesGravadasModelServico VerificarFtpValido(IntegracaoInfos ftpInfos, string codigo) { if (ftpInfos != null) { return new InspecoesGravadasModelServico { InspecoesGravadas = new List <InspecaoModelServico>(), Excecao = new ExcecaoService { ExisteExcecao = false, Mensagem = string.Empty } } } ; return(new InspecoesGravadasModelServico { InspecoesGravadas = new List <InspecaoModelServico>(), Excecao = new ExcecaoService { ExisteExcecao = true, Mensagem = string.Format(MensagemSistema.FtpInvalido, codigo) } }); }
private void EnviarLogParaOrganismo(string fileName, IntegracaoInfos sftp) { if (sftp.TipoIntegracao != 1) { _sftp.CreateDirectory(sftp); _sftp.UploadFile(fileName, sftp); } }
private bool DownloadArquivo(string file, string diretorioLocal, IntegracaoInfos integracao) { if (integracao.TipoIntegracao != 1) { return(_sftp.DownloadArquivo(file, diretorioLocal + file, integracao)); } return(_ftp.DownloadInspecaoFtp(file, diretorioLocal, integracao)); }
private void DownloadInspecao(IntegracaoInfos ftpInfo, string diretorioLocal, string diretorioRemoto, string usuario) { var inspecao = new InspecaoCsvModel(); try { _descompactar.ExcluirArquivoCasoExista(diretorioLocal, diretorioRemoto); DeletarDiretorioLocalInspecao(diretorioLocal); if (!DownloadArquivo(diretorioRemoto, diretorioLocal, ftpInfo)) { return; } if (!_descompactar.DescompactarArquivo(diretorioLocal, diretorioRemoto)) { return; } inspecao = _csv.ObterDadosInspecao(diretorioLocal, ftpInfo); if (inspecao.Excecao == null) { if (GravarInspecaoObtidaNoArquivoCsv(inspecao, diretorioLocal)) { if (!GravarHistoricoDownload(diretorioRemoto, usuario)) { return; } } ExcluirArquivoCompactadoECsv(diretorioLocal, diretorioRemoto); } ExcluirArquivoCompactadoECsv(diretorioLocal, diretorioRemoto); if (inspecao.Excecao != null) { _listExcecao.Add(inspecao.Excecao.Mensagem); } } catch (Exception e) { if (inspecao.Excecao == null) { var erro = new InspecoesGravadasModelServico { Excecao = new ExcecaoService { ExisteExcecao = true, Mensagem = string.Format(e.Message) } }; _listExcecao.Add(erro.Excecao.Mensagem); } else { _listExcecao.Add(e.Message); } } }
public string[] ObterArquivosNoDiretorioRemotoSftp(IntegracaoInfos sftp) { var tmpFiles = new List <string>(); var porta = Convert.ToInt32(sftp.Porta); try { IPAddress ips; ips = Dns.GetHostAddresses(sftp.HostURI.Trim()).FirstOrDefault(); var host = ips; SftpClient tmpClient; if (!string.IsNullOrEmpty(sftp.Senha)) { tmpClient = new SftpClient(sftp.HostURI.Trim(), porta, sftp.Usuario.Trim(), sftp.Senha.Trim()); } else { var sftpModelShared = new SftpModel(sftp.DiretorioInspecaoLocal, sftp.HostURI, sftp.Usuario, sftp.PrivateKey, sftp.Senha); tmpClient = new SftpClient(sftpModelShared.HostURI, porta, sftp.Usuario, sftpModelShared.PrivateKey); } // was new SftpClient(this.HostURI, this.UserName, this.PrivateKey) using (SftpClient client = tmpClient) { client.Connect(); // was "/out" IEnumerable <SftpFile> results = client.ListDirectory("//" + sftp.DiretorioInspecao + "//"); foreach (var file in results) { if (!file.IsDirectory) { tmpFiles.Add(file.Name); } } client.Disconnect(); } return(tmpFiles.Count > 0 ? tmpFiles.ToArray() : new string[] { }); } catch (Exception e) { throw new Exception($"Erro ao Obter Inspeções no servidor SFTP para o Organismo , Exceção :" + e.Message); } }
public ActionResult Adicionar(IntegracaoInfoModel model) { //todo: corrigir retorno do codigo oia if (!ModelState.IsValid) { model.Mensagem = new MensagemModel { ExisteExcecao = false, Mensagem = "Um erro ocorreu ao gravar a Integração." }; return(RedirectToAction("Adicionar")); } var c = _servico.ObetrPorId(model.OrganismoId); var dominio = new IntegracaoInfos { DiretorioInspecao = "INSPECOES", DiretorioInspecaoLocal = c.CodigoOIA.Trim(), HostURI = model.HostURI, Senha = model.Senha, Porta = model.Porta, OrganismoId = model.OrganismoId, TipoIntegracao = model.TipoIntegracao, Usuario = model.Usuario }; var resultado = _integracaoServico.Adicionar(dominio); if (resultado) { var organismos = _servico.BuscarTodos().Where(s => s.IntegracaoInfo == null).OrderBy(s => s.Id).ToList(); organismos.Insert(0, new Organismo() { Id = model.OrganismoId, CodigoOIA = model.DiretorioInspecaoLocal }); ViewBag.Organismos = new SelectList(organismos, "Id", "CodigoOIA"); model.Mensagem = new MensagemModel { ExisteExcecao = resultado, Mensagem = "Integração gravada com sucesso." }; return(View(model)); } model.Mensagem = new MensagemModel { ExisteExcecao = resultado, Mensagem = "Um erro ocorreu ao gravar a Intergração." }; return(View(model)); }
public ActionResult Editar(IntegracaoInfoModel i) { if (i.Id <= 0) { return(HttpNotFound()); } var dominio = new IntegracaoInfos { Id = i.Id, DiretorioInspecao = i.DiretorioInspecao, HostURI = i.HostURI, Porta = i.Porta, TipoIntegracao = i.TipoIntegracao, Usuario = i.Usuario, Senha = i.Senha, }; var c = _servico.ObetrPorId(i.OrganismoId); dominio.DiretorioInspecaoLocal = c.CodigoOIA.Trim(); dominio.OrganismoId = c.Id; var resultado = _integracaoServico.Atualizar(dominio); if (resultado) { var organismos = _servico.BuscarTodos().Where(s => s.IntegracaoInfo == null).OrderBy(s => s.Id).ToList(); organismos.Insert(0, new Organismo() { Id = dominio.OrganismoId, CodigoOIA = dominio.DiretorioInspecaoLocal }); ViewBag.Organismos = new SelectList(organismos, "Id", "CodigoOIA"); i.Mensagem = new MensagemModel { ExisteExcecao = resultado, Mensagem = "A integração foi alterada com sucesso." }; return(View(i)); } i.Mensagem = new MensagemModel { ExisteExcecao = resultado, Mensagem = "Houve um erro durante a alteração." }; return(View(i)); }
public InspecaoCsvModel ObterDadosInspecao(string diretorio, IntegracaoInfos ftpInfo) { if (ExisteArquivoCsv(diretorio)) { var inspecaoLine = LerLinhasCsv(diretorio); var inspecaoModel = ObterInspecao(inspecaoLine, ftpInfo); return(inspecaoModel ?? new InspecaoCsvModel()); } return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.ArquivoCSVNaoEncontrado, diretorio, ftpInfo.DiretorioInspecaoLocal) } }); }
private void RemoverInspecaoComMaisDe30Dias(List <string> lista, IntegracaoInfos ftpInfo) { try { foreach (var item in lista) { if (!_ftp.ExcluirInspecao(ftpInfo, item)) { continue; } AddRegistrosExclusao(ftpInfo.Organismo.CodigoOIA, item); } } catch (Exception e) { throw e; } }
public void CreateDirectory(IntegracaoInfos sftpInfo) { int Port = 22; SftpClient tmpClient; if (!string.IsNullOrEmpty(sftpInfo.Senha)) { tmpClient = new SftpClient(sftpInfo.HostURI, Port, sftpInfo.Usuario, sftpInfo.Senha); } else { var sftpModelShared = new SftpModel(sftpInfo.DiretorioInspecaoLocal, sftpInfo.HostURI, sftpInfo.Usuario, sftpInfo.PrivateKey, sftpInfo.Senha); tmpClient = new SftpClient(sftpModelShared.HostURI, Port, sftpModelShared.Usuario, sftpModelShared.PrivateKey); } string current = "//" + sftpInfo.DiretorioInspecao + "//" + "LOG" + "//"; using (SftpClient client = tmpClient) { try { client.Connect(); var d = client.Exists(current); if (!d) { client.CreateDirectory(current); } } catch { throw new Exception(string.Format("Erro ao criar pasta LOG para o organismo {0}", sftpInfo.DiretorioInspecaoLocal)); } client.Disconnect(); } }
public ActionResult Excluir(int id) { var user = HttpContext.Session["Usuario"]; if (user == null) { return(RedirectToAction("Login", "Login")); } var x = _integracaoServico.ObterPorId(id); var o = new IntegracaoInfos { Id = x.Id, DiretorioInspecaoLocal = x.DiretorioInspecaoLocal, HostURI = x.HostURI }; return(View(o)); }
public bool UploadFile(string localFilePath, IntegracaoInfos sftp) { bool success = true; try { var port = Convert.ToInt32(sftp.Porta); SftpClient tmpClient; if (sftp.Senha != "") { tmpClient = new SftpClient(sftp.HostURI.Trim(), port, sftp.Usuario.Trim(), sftp.Senha.Trim()); } else { //todo: privateKey tmpClient = new SftpClient(sftp.HostURI, sftp.Usuario, sftp.PrivateKey); } // was new SftpClient(this.HostURI, this.UserName, this.PrivateKey) using (SftpClient client = tmpClient) { client.Connect(); string current = "/" + sftp.DiretorioInspecao + "/" + "LOG" + "/"; using (FileStream localFile = new FileStream(localFilePath, FileMode.Open)) { client.BufferSize = 4 * 1024; client.UploadFile(localFile, current + Path.GetFileName(localFilePath), null); } client.Disconnect(); } } catch { success = false; } return(success); }
public bool Adicionar(IntegracaoInfos obj) { using (var ctx = new CippContexto()) { try { ctx.IntegracaoInfo.Add(obj); var resultado = ctx.SaveChanges(); if (resultado <= 0) { return(false); } return(true); } catch { throw; } } }
public bool DownloadArquivo(string file, string diretorioLocal, IntegracaoInfos sftpInfo) { bool success = true; var port = Convert.ToInt32(sftpInfo.Porta); try { SftpClient tmpClient; if (!string.IsNullOrEmpty(sftpInfo.Senha)) { tmpClient = new SftpClient(sftpInfo.HostURI.Trim(), port, sftpInfo.Usuario.Trim(), sftpInfo.Senha.Trim()); } else { var sftpModelShared = new SftpModel(sftpInfo.DiretorioInspecaoLocal, sftpInfo.HostURI, sftpInfo.Usuario, sftpInfo.PrivateKey, sftpInfo.Senha); tmpClient = new SftpClient(sftpModelShared.HostURI, port, sftpModelShared.Usuario, sftpModelShared.PrivateKey); } // was new SftpClient(this.HostURI, this.UserName, this.PrivateKey) using (SftpClient client = tmpClient) { client.Connect(); using (FileStream outputStream = new FileStream(diretorioLocal, FileMode.Create)) { client.DownloadFile("/" + sftpInfo.DiretorioInspecao + "/" + file, outputStream); } client.Disconnect(); } } catch (Exception e) { throw new Exception($"Erro ao fazer Download das Inspeções no servidor FTP para o Organismo, Exceção :" + e.Message); } return(success); }
public bool Atualizar(IntegracaoInfos obj) { try { using (var context = new CippContexto()) { context.Entry(obj).State = obj.Id == 0 ? EntityState.Added : EntityState.Modified; var resultado = context.SaveChanges(); if (resultado <= 0) { return(false); } return(true); } } catch (Exception e) { throw e; } }
private IList <string> ObterInspecoesComMaisDeTrintaDias(IntegracaoInfos ftpInfo) { var listaDiretoriosParaExclusaoComMais30Dias = new List <string>(); var inspecoesDiretorios = _ftp.ObterListaDiretoriosInspecoesFtp(ftpInfo); if (inspecoesDiretorios.Length <= 0) { return(new List <string>()); } foreach (var inspecao in inspecoesDiretorios) { var dataDiretorioRemoto = _ftp.ObterDataEntradaFtp(ftpInfo, inspecao); if (!TemMaisDe30Dias(dataDiretorioRemoto)) { continue; } listaDiretoriosParaExclusaoComMais30Dias.Add(inspecao); } return(listaDiretoriosParaExclusaoComMais30Dias); }
private string[] ObterListaDiretoriosPorOrganismo(IntegracaoInfos ftpInfo) { List <string> listaDiretoriosValidos = new List <string>(); try { //ftps ou ftp if (ftpInfo.TipoIntegracao == 1) { var diretorios = _ftp.ObterListaDiretoriosInspecoesFtp(ftpInfo); if (diretorios.Length > 0) { foreach (var item in diretorios) { var fileName = Path.GetFileNameWithoutExtension(item); if (fileName.Length >= 4) { var fileExtension = Path.GetExtension(item); if (fileExtension.Equals(".rar") || fileExtension.Equals(".zip")) { listaDiretoriosValidos.Add(item); } } } } return(listaDiretoriosValidos.ToArray()); } return(_sftp.ObterArquivosNoDiretorioRemotoSftp(ftpInfo)); } catch (Exception e) { _listExcecao.Add(e.Message); throw e; } }
public bool Atualizar(IntegracaoInfos organismo) { var resultado = _repositorio.Atualizar(organismo); return(resultado); }
private InspecaoCsvModel ObterInspecao(string inputLine, IntegracaoInfos ftpInfo) { try { DateTime dDate; string format; CultureInfo provider = CultureInfo.InvariantCulture; format = "yyyyMMdd"; string inputLineWithoutExtraCommas = ReplaceDelimitersWithinQuotes(inputLine); _inputColumns = inputLineWithoutExtraCommas.Split(',').ToList(); var inspecao = new InspecaoCsvModel(); if (_inputColumns.Count == 5) { for (var i = 0; i < _inputColumns.Count;) { inspecao.CodigoOia = ftpInfo.DiretorioInspecaoLocal; if (!string.IsNullOrEmpty(_inputColumns[1])) { inspecao.CodigoCipp = _inputColumns[1]; } else { return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.CodidoCippNaoInformado) } }); } if (!string.IsNullOrEmpty(_inputColumns[2])) { if (_inputColumns[2].Length > 6) { inspecao.PlacaLicenca = _inputColumns[2]; } else { inspecao.PlacaLicenca = _inputColumns[2].ToString(); return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.PlacaNaoExiste, inspecao.PlacaLicenca, inspecao.CodigoCipp, inspecao.CodigoOia) } }); } } else { return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.PlacaNaoInformada, inspecao.CodigoCipp, inspecao.CodigoOia) } }); } if (!string.IsNullOrEmpty(_inputColumns[3])) { inspecao.NumeroEquipamento = _inputColumns[3]; } else { return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.NumeroDoEquipamentoNaoInformado, inspecao.CodigoCipp, ftpInfo.DiretorioInspecaoLocal) } }); } if (!string.IsNullOrEmpty(_inputColumns[4])) { try { if (DateTime.TryParseExact(_inputColumns[4], "ddMMyyyy", provider, DateTimeStyles.None, out dDate) || DateTime.TryParseExact(_inputColumns[4], format, provider, DateTimeStyles.None, out dDate)) { inspecao.DataInspecao = dDate; } else { DateTime dt = DateTime.Parse(_inputColumns[4]); } } catch { return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.DataComFormatoInvalido, inspecao.CodigoCipp, inspecao.CodigoOia) } }); } } else { return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.DataNaoInformada, inspecao.CodigoCipp) } }); } break; } return(inspecao); } return(new InspecaoCsvModel { Excecao = new ExcecaoCsv { ExisteExcecao = true, Mensagem = string.Format(MensagemNegocio.ArquivoCSVForaDeFormatacao, ftpInfo.DiretorioInspecaoLocal) } }); } catch (ExcecaoCsv e) { throw new Exception($"Erro ao obter dados da Inspeção. Exceção {e.Mensagem}"); } }
public ActionResult Excluir(IntegracaoInfos model) { var x = _integracaoServico.Desativar(model.Id); return(View()); }
private void DownloadInspecaoAutomatica(IntegracaoInfos ftpInfo, IEnumerable <string> diretorios) { var diretorioLocal = string.Empty; var diretoriosValidos = new List <string>(); var inspecao = new InspecaoCsvModel(); if (diretorios != null) { diretoriosValidos = ObterSomenteDiretoriosValidos(diretorios); } foreach (var item in diretoriosValidos) { try { diretorioLocal = ObterDiretorioLocal(ftpInfo.DiretorioInspecaoLocal, item); _descompactar.ExcluirArquivoCasoExista(diretorioLocal, item); DeletarDiretorioLocalInspecao(diretorioLocal); if (!DownloadArquivo(item, diretorioLocal, ftpInfo)) { continue; } if (!_descompactar.DescompactarArquivo(diretorioLocal, item)) { continue; } inspecao = _csv.ObterDadosInspecao(diretorioLocal, ftpInfo); if (inspecao.Excecao == null) { if (GravarInspecaoObtidaNoArquivoCsv(inspecao, diretorioLocal)) { if (!GravarHistoricoDownload(item, "Rotina Automática")) { continue; } } } ExcluirArquivoCompactadoECsv(diretorioLocal, item); if (inspecao.Excecao != null) { _listLog.Add(inspecao.Excecao.Mensagem); _listExcecao.Add(inspecao.Excecao.Mensagem); } } catch (Exception e) { if (inspecao.Excecao == null) { var erro = new InspecoesGravadasModelServico { Excecao = new ExcecaoService { ExisteExcecao = true, Mensagem = string.Format(e.Message) } }; _listLog.Add(inspecao.Excecao.Mensagem); _listExcecao.Add(erro.Excecao.Mensagem); } else { _listLog.Add(e.Message); _listExcecao.Add(e.Message); } } } if (_listLog.Any()) { try { if (ftpInfo.TipoIntegracao == 1) { _ftp.CreateDirectory(ftpInfo); } else { _sftp.CreateDirectory(ftpInfo); } EscreverArquivoDeLog(_listLog, ftpInfo); _listLog.Clear(); } catch (Exception e) { _listExcecao.Add(e.Message); _listLog.Clear(); } } }