private static void EnviarXmlPorSftp(string loja, string nomeParceiro, SftpClient cliente, string caminhoRemoto, int codigoHistoricoExecucaoProcesso) { string destino = string.Empty; string caminhoArquivo = string.Empty; caminhoArquivo = Path.Combine(Parceiro.ObterCaminhoArquivosExportados(loja, codigoHistoricoExecucaoProcesso), nomeParceiro, CATALOGXML); try { using (var arquivo = File.OpenRead(caminhoArquivo)) { destino = string.Format("{0}/{1}/{2}", caminhoRemoto, nomeParceiro, CATALOGXML); try { cliente.UploadFile(arquivo, destino); RegistrarTransferenciaDeArquivo(codigoHistoricoExecucaoProcesso, DateTime.Now, Direcao.Exportado, Status.Sucesso, arquivo.Name, destino, nomeParceiro); } catch (Exception ex) { RegistrarTransferenciaDeArquivo(codigoHistoricoExecucaoProcesso, DateTime.Now, Direcao.Exportado, Status.Erro, arquivo.Name, destino, nomeParceiro); LogHelper.GravarDetalheErro(Processo.CatalogoParceiroExportacaoFtp, codigoHistoricoExecucaoProcesso, new Exception(string.Format("Ocorreu um erro ao exportar o XML do {0} da loja {1}. Detalhes {2}. Codigo execucao {3}", nomeParceiro, loja, ex.ToString(), codigoHistoricoExecucaoProcesso)), string.Format("{0} {1}", nomeParceiro, Direcao.Exportado)); } } } catch (Exception ex) { throw new Exception(string.Format("Ocorreu um erro ao criar um arquivo do xml do parceiro {0} da loja {1}. Detalhe {2}. Codigo execucao {3} \n", nomeParceiro, loja, ex.ToString(), codigoHistoricoExecucaoProcesso)); } }
private static bool GerarXmlBaseParaFormatoParceiroLocal(string nomeParceiro, string caminhoXsltParceiro, string caminhoXmlParceiro, string loja, int codigoHistoricoExecucaoProcesso) { bool statusXml = false; XslCompiledTransform xsltParceiro = null; FileInfo xmlParceiro = null; FileInfo xmlBase = null; XmlWriterSettings configuracoesXML = null; XmlReader reader = null; XmlWriter writer = null; if (caminhoXsltParceiro == "") { throw new Exception(string.Format("O caminho do aquivo XSL do parceiro {0}, deve ser específicado. Codigo histórico execucao processo: {1} ", nomeParceiro, codigoHistoricoExecucaoProcesso)); } else { try { Parceiro.MoverArquivosParaOlds(Domain.Parceiro.ObterCaminhoArquivosExportados(loja, codigoHistoricoExecucaoProcesso), nomeParceiro, Processo.CatalogoParceiroTransformacao, codigoHistoricoExecucaoProcesso); xsltParceiro = new XslCompiledTransform(); xmlParceiro = new FileInfo(caminhoXmlParceiro); xmlBase = ObterArquivoXmlBaseLocal(loja, codigoHistoricoExecucaoProcesso); configuracoesXML = new XmlWriterSettings(); configuracoesXML.Encoding = Encoding.UTF8; xsltParceiro.Load(caminhoXsltParceiro, new XsltSettings(true, false), new XmlUrlResolver()); writer = XmlWriter.Create(xmlParceiro.FullName, xsltParceiro.OutputSettings); reader = XmlReader.Create(xmlBase.FullName); xsltParceiro.Transform(reader, writer); statusXml = xmlParceiro.LastWriteTime > xmlBase.LastWriteTime ? true : false; } catch (Exception ex) { LogHelper.GravarDetalheErro(Processo.CatalogoParceiroTransformacao, codigoHistoricoExecucaoProcesso, ex, string.Empty); } finally { writer.Flush(); writer.Close(); reader.Close(); } } if (statusXml == true) { try { Infrastructure.CompressHelper.Comprimir(xmlParceiro); } catch (Exception ex) { LogHelper.GravarDetalheErro(Processo.CatalogoParceiroTransformacao, codigoHistoricoExecucaoProcesso, ex, string.Empty); } } return(statusXml); }
public static bool ExportarXmlClassificacao(int codigoHistoricoExecucaoProcesso) { bool resultado = false; string queryClassificacaoDeProduto = @" select distinct catalogo.cod_produto_modelo codigo_modelo ,nvl(deparafrontcategoria.depara, catalogo.des_categoria) categoria ,nvl(deparafrontsubgrupo.depara, catalogo.des_sub_grupo) sub_grupo ,nvl(deparafrontgrupo.depara, catalogo.des_sub_grupo) grupo ,nvl(deparafrontmarca.depara, catalogo.des_marca) marca ,nvl(deparafrontgenero.depara, catalogo.des_sexo) genero ,nvl(deparafrontfaixaetaria.depara, catalogo.des_faixa_etaria) faixa_etaria ,nvl(deparafrontlinha.depara, catalogo.des_linha) linha from backoffice.catalogo_produtos catalogo left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo = 1) deparafrontgrupo on deparafrontgrupo.cod_categoria = catalogo.cod_grupo left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo in (2, 99)) deparafrontsubgrupo on deparafrontsubgrupo.cod_categoria = catalogo.cod_sub_grupo left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo = 3) deparafrontcategoria on deparafrontcategoria.cod_categoria = catalogo.cod_categoria left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo = 5) deparafrontmarca on deparafrontmarca.cod_categoria = catalogo.cod_marca left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo = 8) deparafrontgenero on deparafrontgenero.cod_categoria = catalogo.cod_sexo left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo = 9) deparafrontfaixaetaria on deparafrontfaixaetaria.cod_categoria = catalogo.cod_faixa_etaria left join (select distinct agrupamento.des_agr, deparafront.cod_categoria, deparafront.categoria_store_front depara from backoffice.agrupamento agrupamento inner join controle_integracao.categoria_store_front deparafront on agrupamento.cod_agr = deparafront.cod_tipo where deparafront.cod_tipo = 11) deparafrontlinha on deparafrontlinha.cod_categoria = catalogo.cod_linha"; string transformador = Parceiro.ObterCaminhoArquivoXslClassificacao(codigoHistoricoExecucaoProcesso); string caminhoArquivoXmlClassificacao = Parceiro.ObterCaminhoArquivoXmlClassificacao(codigoHistoricoExecucaoProcesso); try { TimeSpan tempoGerarArquivoClassificacao = new TimeSpan(Parceiro.ObterTempoParaGerarAruivoClassificacao(codigoHistoricoExecucaoProcesso), 0, 0); FileInfo arquivoClassificacao = null; bool gerarArquivo = false; if (File.Exists(caminhoArquivoXmlClassificacao)) { arquivoClassificacao = new FileInfo(caminhoArquivoXmlClassificacao); if (DateTime.Now - arquivoClassificacao.CreationTime > tempoGerarArquivoClassificacao) { File.Delete(caminhoArquivoXmlClassificacao); gerarArquivo = true; } } else { gerarArquivo = true; } if (gerarArquivo) { TextReader arquivoXslClassificacao = File.OpenText(transformador); string templateXslClassificacao = arquivoXslClassificacao.ReadToEnd(); XmlDocument xmlClassificacao = new XmlDocument(); xmlClassificacao = DatabaseHelper.ExecutarXmlReader(queryClassificacaoDeProduto, templateXslClassificacao); xmlClassificacao.Save(caminhoArquivoXmlClassificacao); } } catch (Exception ex) { throw new Exception(string.Format("Ocorreu um erro ao tentar gerar o XML de Classificação de produtos. \n Erro: {0} \n Código Histórico Execução: {1}", ex.ToString(), codigoHistoricoExecucaoProcesso)); } return(resultado); }