Пример #1
0
            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);
            }
Пример #3
0
            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);
            }