Ir para conteúdo
rtavix

[Resolvido] Log de Importação para Usuário (Mensagem)

Recommended Posts

Pessoal não estou conseguindo fazer com que o log é mostrado para o usuário, o log seria esse:

 

if (listaprocinter.Exists(o => o.Interessado == interessado))
                            //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                            log.Append("O interessado informado na linha " + linha + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

E também não esta salvando os dados do usuário que está importando o arquivo, que seria nessa linha:

 

aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                + processo.Tribunal.NomeTribunal + ".", DateTime.Now);

 

Meu código que obtêm o Usuário autenticado:

#region Assembly Sefaz.Portal.Integracao.dll, v4.0.30319
// D:\Repositório SVN\SDP\SDPJ\branches\SDPJ-V3.1.0\SDPJ-102\packages\Sefaz.Portal.Integracao.dll
#endregion

using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;

namespace Sefaz.Portal.Integracao.WSAutorizacao
{
    [Serializable]
    [DebuggerStepThrough]
    [GeneratedCode("System.Xml", "4.0.30319.34234")]
    [XmlType(Namespace = "http://serviceintranet.sefaz.es.gov.br/")]
    [DesignerCategory("code")]
    public class Usuario
    {
        public Usuario();

        [XmlAttribute]
        public string CPF { get; set; }
        [XmlAttribute]
        public string Email { get; set; }
        [XmlAttribute]
        public string Login { get; set; }
        [XmlAttribute]
        public string Nome { get; set; }
        [XmlAttribute]
        public string NumFuncional { get; set; }
        public Sistema[] Sistemas { get; set; }
    }
}

Código completo:

 private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int indiceLinha)
        {
            Action<object> processamento = (dados) =>
            {
                /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/

                NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

                /*try
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
                }
                catch (Exception ex)
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
                }*/
                /*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

                var processo = aplProcesso.consultar---ProcessoER(lista.ItemArray[1].ToString());*/

                foreach (var linha in (IEnumerable<DataRow>)dados)
                {
                    int i = 0;
                    i = i + 1;
                    List<Processo> listaProcessoExistente = new List<Processo>();
                    Processo processo = null;
                    Interessado interessado = new Interessado();

                    //busca o processo pelo nº judicial anterior ou atual
                    if (!linha.ItemArray[1].ToString().Equals(""))
                        processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString());
                    if (processo == null)
                    {
                        if (!linha.ItemArray[2].ToString().Equals(""))
                            processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString());
                    }
                    //busca o interessado por cpf/cnpj
                    if (linha.ItemArray[7].ToString().Length == 14)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                    if (linha.ItemArray[7].ToString().Length == 18)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));

                    if (processo != null)
                    {
                        //se o processo não for nulo busco todos procinter relacionados a ele
                        List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                        if (listaprocinter.Exists(o => o.Interessado == interessado))
                            //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                            log.Append("O interessado informado na linha " + linha + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                        setProcInter(processo, interessado, linha);
                    }
                    else
                    {
                        //Novo Processo - 6.3
                        processo = new Processo();
                        processo.Interessado = interessado;
                        processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                        processo.RenunciaCredito = "N";
                        processo.Situacao = new AplSituacao().ConsultarPorId(1);
                        processo.HonorarioDativo = "S";
                        processo.Reclamado = new AplReclamado().buscaItem(2);
                        processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                        processo.TipoProcesso = "O";
                        if (linha.ItemArray[5].ToString().Contains("juizado"))
                            processo.Tribunal = new AplTribunal().buscaItem(71);
                        else
                            processo.Tribunal = new AplTribunal().buscaItem(3);
                        processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                        VaraExecucao vara = new VaraExecucao();
                        if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                        {
                            List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                            if (listaVaraComarca.Count != 0)
                            {
                                if (linha.ItemArray[4].ToString().Equals(""))
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                }
                                else
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                }
                            }
                        }
                        if (vara != null && vara.Codigo != 0)
                        {
                            processo.VaraExecucao = vara;
                        }

                        //obter lista sem registros duplicados. (Robson)
                        var ListaSemDuplicados = listaGravarProcesso.Distinct().ToList();
                        aplProcesso.gravar(processo);
                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                + processo.Tribunal.NomeTribunal + ".", DateTime.Now);
                        //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

                        setProcInter(processo, interessado, linha);
                    }

                }//Fim For
                //ClientScript.RegisterStartupScript(typeof(string), "Carregando...", "<script>$('#progressbar').progressbar({value: 70});</script>");
                ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                if (listaGravarProcInter.Count != 0)
                {
                    foreach (ProcessoInteressado item in listaGravarProcInter)
                    {
                        //obter lista sem registros duplicados. (Robson)
                        var ListaSemDuplicados = listaGravarProcInter.Distinct().ToList();
                        aplProcessoInteressado.salvar(item);
                    }
                }


                if (listaLogsAuditoria.Count != 0)
                {
                    foreach (var item in listaLogsAuditoria)
                    {
                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                    }
                }
                logimportacao.Visible = true;
                loglbl.Text = log.ToString();
                //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
            };


            //else
            //{
            //    logimportacao.Visible = true;
            //    loglbl.Text = log.ToString();
            //    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");



            ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading());
            if (sessao != null)
            {
                if (sessao.Transaction != null && sessao.Transaction.IsActive)
                {
                    sessao.Transaction.Rollback();
                }
                else
                {
                    sessao.Flush();
                }
                sessao.Close();

            }
            else
            {
                logimportacao.Visible = true;
                loglbl.Text = log.ToString();
                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
            }


            //Tarefas baseadas de forma assíncrona
            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;
            logimportacao.Visible = true;
            loglbl.Text = log.ToString();
            //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
            ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
        }

Me ajudem por gentileza :/ 

Compartilhar este post


Link para o post
Compartilhar em outros sites

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Amigo, devido a lentidão que o sistema está apresentando no momento que eu vou tentar importar esse arquivo, fui obrigado a aprender na marra de trabalhar com as threading pois sabia que resolveria o meu problema, realmente resolveu, o problema que eu tive que adaptar os códigos existentes nesse novo modelo que coloquei logo acima, só que agora não faz o que fazia antes, que era salvar os logs do usuário e enviar os logs das mensagens.

 

Esse era o meu código anterior que causava a lentidão:

 

protected void importar_Click(object sender, EventArgs e)
        {

            Stopwatch relogio = new Stopwatch();
            relogio.Start();
            //Verifica se um arquivo foi selecionado
            if (selecionarArquivo.HasFile)
            {
                //Valida a extensão do arquivo:
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");

                else
                {
                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);

                        DataTable Dados = DadosExcel(Excel);
                        DataSet ds = new DataSet();

                        ds.Tables.Add(Dados);

                        if (ds.Tables.Count > 0)
                        {
                            bool layoutValido = VerificaLayout(ds);
                            if (!layoutValido)
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
                            else
                            {
                                //Inicio da validação dos dados inseridos na planilha
                                int numLinhas = ds.Tables[0].Rows.Count;
                                //Validação básica necessária para importação. PS: NumLinhas-1 porque o arquivo tem a última linha com total, que é inútil à importação.
                                VerificacaoPreliminar((numLinhas - 1), ds);



                                //Inicio da rotina de repetição para leitura de todas as linhas, iniciando na célula B6
                                if (!arquivoInvalidado)
                                {

                                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '30%';</script>");
                                    //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros q tem interessados duplicados.
                                    this.ValidaDuplicidadeInteressado();

                                    for (int i = 5; i < (numLinhas - 1); i++)
                                    {
                                        List<Processo> listaProcessoExistente = new List<Processo>();
                                        Processo processo = null;
                                        Interessado interessado = new Interessado();

                                        //busca o processo pelo nº judicial anterior ou atual
                                        if (!ds.Tables[0].Rows[i].ItemArray[1].ToString().Equals(""))
                                            processo = aplProcesso.consultar---ProcessoER(ds.Tables[0].Rows[i].ItemArray[1].ToString());
                                        if (processo == null)
                                        {
                                            if (!ds.Tables[0].Rows[i].ItemArray[2].ToString().Equals(""))
                                                processo = aplProcesso.consultar---ProcessoER(ds.Tables[0].Rows[i].ItemArray[2].ToString());
                                        }
                                        //busca o interessado por cpf/cnpj
                                        if (ds.Tables[0].Rows[i].ItemArray[7].ToString().Length == 14)
                                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(ds.Tables[0].Rows[i].ItemArray[7].ToString()));
                                        if (ds.Tables[0].Rows[i].ItemArray[7].ToString().Length == 18)
                                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(ds.Tables[0].Rows[i].ItemArray[7].ToString()));
                                        if (processo != null)
                                        {
                                            //se o processo não for nulo busco todos procinter relacionados a ele
                                            List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                                            if (listaprocinter.Exists(o => o.Interessado == interessado))
                                                log.Append("O interessado informado na linha " + (i + 1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
                                            //foreach(var item in listaprocinter)
                                            //{
                                            //    if (item.Interessado == interessado)
                                            //        log.Append("O interessado informado na linha " + (i + 1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");                                                 
                                            //}
                                            setProcInter(processo, interessado, ds, i);
                                        }
                                        else
                                        {
                                            //Novo Processo - 6.3
                                            processo = new Processo();

                                            processo.Interessado = interessado;

                                            processo.NumProcessoJudicial = ds.Tables[0].Rows[i].ItemArray[2].ToString().Trim();
                                            processo.RenunciaCredito = "N";
                                            processo.Situacao = new AplSituacao().ConsultarPorId(1);
                                            processo.HonorarioDativo = "S";
                                            processo.Reclamado = new AplReclamado().buscaItem(2);
                                            processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                                            processo.TipoProcesso = "O";
                                            if (ds.Tables[0].Rows[i].ItemArray[5].ToString().Contains("juizado"))
                                                processo.Tribunal = new AplTribunal().buscaItem(71);
                                            else
                                                processo.Tribunal = new AplTribunal().buscaItem(3);
                                            processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                                            VaraExecucao vara = new VaraExecucao();
                                            if (!ds.Tables[0].Rows[i].ItemArray[3].ToString().Equals("") && !ds.Tables[0].Rows[i].ItemArray[5].ToString().Equals(""))
                                            {
                                                List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(ds.Tables[0].Rows[i].ItemArray[5].ToString().Trim(), ds.Tables[0].Rows[i].ItemArray[3].ToString().Trim());
                                                if (listaVaraComarca.Count != 0)
                                                {

                                                    if (ds.Tables[0].Rows[i].ItemArray[4].ToString().Equals(""))
                                                    {
                                                        vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                                    }
                                                    else
                                                    {
                                                        vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(ds.Tables[0].Rows[i].ItemArray[4].ToString().Trim()));
                                                    }
                                                }
                                            }
                                            if (vara != null && vara.Codigo != 0)
                                            {
                                                processo.VaraExecucao = vara;
                                            }

                                            //obter lista sem registros duplicados. (Robson)
                                            var ListaSemDuplicados = listaGravarProcesso.Distinct().ToList();
                                            aplProcesso.gravar(processo);
                                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                                    + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                                    + processo.Tribunal.NomeTribunal + ".", DateTime.Now);
                                            //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

                                            setProcInter(processo, interessado, ds, i);
                                        }
                                    }//Fim For
                                    //ClientScript.RegisterStartupScript(typeof(string), "Carregando...", "<script>$('#progressbar').progressbar({value: 70});</script>");
                                    ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                                    if (listaGravarProcInter.Count != 0)
                                    {
                                        foreach (ProcessoInteressado item in listaGravarProcInter)
                                        {
                                            //obter lista sem registros duplicados. (Robson)
                                            var ListaSemDuplicados = listaGravarProcInter.Distinct().ToList();
                                            aplProcessoInteressado.salvar(item);
                                        }
                                    }
                                    if (listaLogsAuditoria.Count != 0)
                                    {
                                        foreach (var item in listaLogsAuditoria)
                                        {
                                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                                        }
                                    }
                                    logimportacao.Visible = true;
                                    loglbl.Text = log.ToString();
                                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                                    ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
                                }
                                else
                                {
                                    logimportacao.Visible = true;
                                    loglbl.Text = log.ToString();
                                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                                }

                            }
                        }
                    }
                }
            }
            relogio.Stop();
Debug.WriteLine("#############"+relogio.Elapsed.ToString());
        }

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Quintelab esse é o meu código usandos as threadings e adaptação do código:

 

/*Stopwatch relogio = new Stopwatch();
            relogio.Start();*/
            
            DataTable Dados = new DataTable();
            //Verifica se um arquivo foi selecionado
            if (selecionarArquivo.HasFile)
            {
                //Valida a extensão do arquivo:
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");
                else
                {

                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);
                        Dados = DadosExcel(Excel);

                        var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5);
                        //Elimina a última linha
                        registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1);

                        //ler de 100 em 100 regisros
                        int quantidade_por_pagina = 100;
                        int total_de_paginas;
                        //Conta os registros válidos
                        int qtd_total_registros = registrosValidos.Count();
                        //Realiza o calculo matemáticos para total de paginas.
                        total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina);

                        VerificacaoPreliminar(registrosValidos);
                        bool layoutValido = VerificaLayout(Dados);
                        
                        if (!layoutValido)
                            ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");

                        else
                        {

                            //Criando as tarefas paralelas
                            List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();

                            if (!arquivoInvalidado)
                            {
                                //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros que tem interessados duplicados.
                                this.ValidaDuplicidadeInteressado();

                                for (int j = 0; j < total_de_paginas; j++)
                                {

                                    var pagina = j;
                                    //leio as 100 linhas
                                    var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);

                                    //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo
                                    var data_rows_divididos = linhasPorPagina.SplitList(10);

                                    foreach (var linhasDivididas in data_rows_divididos)
                                    {
                                        //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS
                                        TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, j));
                                    }
                                }

                                //INICIOS AS TAREFAS PARALELAS
                                foreach (var tarefa in TarefasParalelas)
                                    tarefa.Start();

                                // AGORA ESPERO TODAS TAREFAS CONCLUIREM
                                System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());

                                // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                                if (listaGravarProcInter.Count != 0)
                                {
                                    foreach (ProcessoInteressado item in listaGravarProcInter)
                                    {
                                        aplProcessoInteressado.salvar(item);
                                    }
                                }

                                if (listaLogsAuditoria.Count != 0)
                                {
                                    foreach (var item in listaLogsAuditoria)
                                    {
                                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                                    }
                                }
                                  
                            }

                            else
                            {
                                logimportacao.Visible = true;
                                
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                            }
                        }

                        
                        //}
                    }

                }
            }
            
            loglbl.Text = log.ToString();


            //Tempo de importação.
            /*relogio.Stop();
            Debug.WriteLine("#############" + relogio.Elapsed.ToString());*/
        }

        private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int indiceLinha)
        {
            Action<object> processamento = (dados) =>
            {
                /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/

                NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

                /*try
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
                }
                catch (Exception ex)
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
                }*/
                /*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

                var processo = aplProcesso.consultar---ProcessoER(lista.ItemArray[1].ToString());*/

                foreach (var linha in (IEnumerable<DataRow>)dados)
                {

                    List<Processo> listaProcessoExistente = new List<Processo>();
                    Processo processo = null;
                    Interessado interessado = new Interessado();

                    //busca o processo pelo nº judicial anterior ou atual
                    if (!linha.ItemArray[1].ToString().Equals(""))
                        processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString());
                    if (processo == null)
                    {
                        if (!linha.ItemArray[2].ToString().Equals(""))
                            processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString());
                    }
                    //busca o interessado por cpf/cnpj
                    if (linha.ItemArray[7].ToString().Length == 14)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                    if (linha.ItemArray[7].ToString().Length == 18)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));

                    if (processo != null)
                    {
                        //se o processo não for nulo busco todos procinter relacionados a ele
                        List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                        if (listaprocinter.Exists(o => o.Interessado == interessado))
                            //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                            log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                        setProcInter(processo, interessado, linha);
                    }
                    else
                    {
                        //Novo Processo - 6.3
                        processo = new Processo();
                        processo.Interessado = interessado;
                        processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                        processo.RenunciaCredito = "N";
                        processo.Situacao = new AplSituacao().ConsultarPorId(1);
                        processo.HonorarioDativo = "S";
                        processo.Reclamado = new AplReclamado().buscaItem(2);
                        processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                        processo.TipoProcesso = "O";
                        if (linha.ItemArray[5].ToString().Contains("juizado"))
                            processo.Tribunal = new AplTribunal().buscaItem(71);
                        else
                            processo.Tribunal = new AplTribunal().buscaItem(3);
                        processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                        VaraExecucao vara = new VaraExecucao();
                        if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                        {
                            List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                            if (listaVaraComarca.Count != 0)
                            {
                                if (linha.ItemArray[4].ToString().Equals(""))
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                }
                                else
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                }
                            }
                        }
                        if (vara != null && vara.Codigo != 0)
                        {
                            processo.VaraExecucao = vara;
                        }
                        aplProcesso.gravar(processo);
                        
                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                        + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                        + processo.Tribunal.NomeTribunal + ".", DateTime.Now);

                        log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + indiceLinha.ToString() + " foi cadastrado com sucesso. <br>");
                        
                        //ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");

                        setProcInter(processo, interessado, linha);
                    }

                    log.Append("Importado com sucesso! - " + indiceLinha.ToString());
                }

                ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading());
                if (sessao != null)
                {
                    if (sessao.Transaction != null && sessao.Transaction.IsActive)
                    {
                        sessao.Transaction.Rollback();
                    }
                    else
                    {
                        sessao.Flush();
                    }
                    sessao.Close();
                }

            };
            //Tarefas baseadas de forma assíncrona
            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;
        }

E ao compilar o mesmo passa nessas linhas. Antes eu utilizava um for ao invés de forache:

for (int i = 5; i < (numLinhas - 1); i++)
                                    {

mas não funciona com foreach :/

 

4 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

E o log que é mostrado ao importar, apresenta a seguinte mensagem para o usuário:

 

Log de Importação:
 

O interessado informado na linha System.Data.DataRow foi adicionado novamente ao processo 0000168-05.2017.8.08.0035 
O interessado informado na linha System.Data.DataRow foi adicionado novamente ao processo 0002951-04.2016.8.08.0035 
O interessado informado na linha System.Data.DataRow foi adicionado novamente ao processo 0000141-41.2017.8.08.0061 

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Quintelab, brother, eu dei uma ajeitada aqui no código e o mesmo está funcionando entre aspas, acontece que eu não consigo percorrer essa linha no meu código para mostrar o log para o usuário:

log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

até aqui nessa linha onde coloco o brackpoint ele passa:

if (listaprocinter.Exists(o => o.Interessado == interessado))

Porém quando passa aí, ele caí direto nessa linha:

setProcInter(processo, interessado, linha);

Se puder me ajudar por gentileza, agradeço, só acho estranho porque quando eu utilizava o for no lugar do foreach, passava numa boa, agora por ter mudado toda estrutura não esta passando nessa linha que te disse amigo, tá foids :/

 

Alterei o código, acho que ficou melhor para entender.

 

Segue:

private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int indiceLinha)
        {
            Action<object> processamento = (dados) =>
            {
                if (!arquivoInvalidado)
                {
                    this.ValidaDuplicidadeInteressado();
                    /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/

                    NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

                    /*try
                    {
                        loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
                    }
                    catch (Exception ex)
                    {
                        loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
                    }*/
                    /*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

                    var processo = aplProcesso.consultar---ProcessoER(lista.ItemArray[1].ToString());*/

                    foreach (var linha in (IEnumerable<DataRow>)dados)
                    {
                        int i = 0;
                        i = i + 1;
                        List<Processo> listaProcessoExistente = new List<Processo>();
                        Processo processo = null;
                        Interessado interessado = new Interessado();

                        //busca o processo pelo nº judicial anterior ou atual
                        if (!linha.ItemArray[1].ToString().Equals(""))
                            processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString());
                        if (processo == null)
                        {
                            if (!linha.ItemArray[2].ToString().Equals(""))
                                processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString());
                        }

                        //busca o interessado por cpf/cnpj
                        if (linha.ItemArray[7].ToString().Length == 14)
                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                        if (linha.ItemArray[7].ToString().Length == 18)
                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));
                        if (processo != null)
                        {
                            //se o processo não for nulo busco todos procinter relacionados a ele
                            List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                            if (listaprocinter.Exists(o => o.Interessado == interessado))
                            
                                //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                                log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                            
                            setProcInter(processo, interessado, linha);
                        }

                        else
                        {
                            //Novo Processo - 6.3
                            processo = new Processo();
                            processo.Interessado = interessado;
                            processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                            processo.RenunciaCredito = "N";
                            processo.Situacao = new AplSituacao().ConsultarPorId(1);
                            processo.HonorarioDativo = "S";
                            processo.Reclamado = new AplReclamado().buscaItem(2);
                            processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                            processo.TipoProcesso = "O";
                            if (linha.ItemArray[5].ToString().Contains("juizado"))
                                processo.Tribunal = new AplTribunal().buscaItem(71);
                            else
                                processo.Tribunal = new AplTribunal().buscaItem(3);
                            processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                            VaraExecucao vara = new VaraExecucao();
                            if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                            {
                                List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                                if (listaVaraComarca.Count != 0)
                                {
                                    if (linha.ItemArray[4].ToString().Equals(""))
                                    {
                                        vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                    }
                                    else
                                    {
                                        vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                    }
                                }
                            }
                            if (vara != null && vara.Codigo != 0)
                            {
                                processo.VaraExecucao = vara;
                            }
                            aplProcesso.gravar(processo);
                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                    + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                    + processo.Tribunal.NomeTribunal + ".", DateTime.Now);
                            //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

                            setProcInter(processo, interessado, linha);
                        }


                    }//Fim Foreach
                    //ClientScript.RegisterStartupScript(typeof(string), "Carregando...", "<script>$('#progressbar').progressbar({value: 70});</script>");
                    ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                    if (listaGravarProcInter.Count != 0)
                    {
                        foreach (ProcessoInteressado item in listaGravarProcInter)
                        {
                            aplProcessoInteressado.salvar(item);
                        }
                    }

                    if (listaLogsAuditoria.Count != 0)
                    {
                        foreach (var item in listaLogsAuditoria)
                        {
                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                        }
                    }
                    logimportacao.Visible = true;
                    loglbl.Text = log.ToString();
                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                    ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");

                }
                else
                {
                    logimportacao.Visible = true;
                    loglbl.Text = log.ToString();
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                }
            };
            
            ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading());
            if (sessao != null)
            {
                if (sessao.Transaction != null && sessao.Transaction.IsActive)
                {
                    sessao.Transaction.Rollback();
                }
                else
                {
                    sessao.Flush();
                }
                sessao.Close();

            }
             //Tarefas baseadas de forma assíncrona
            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;

           
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso você tem que ver se sua lógica esta certa.

 

Só pode adicionar log se o interessado estiver na listaprocinter? Precisa desse if antes do log ?

 

if (listaprocinter.Exists(o => o.Interessado == interessado)) 
log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
44 minutos atrás, quintelab disse:

Nesse caso você tem que ver se sua lógica esta certa.

 

Só pode adicionar log se o interessado estiver na listaprocinter? Precisa desse if antes do log ?

 


if (listaprocinter.Exists(o => o.Interessado == interessado)) 
log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

 

Se o processo não for nulo eu relaciono todos os procinter relacionado a ele, e verifico se o interessado existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 horas atrás, quintelab disse:

Parece que não esta passando pela linha do log por que o interessado não existe.

Quando você debuga o valor da variável interessado existe na sua lista ?

Amigão resolvi o problema em partes, era o if que acabei implementando no lugar errado. Mas estou precisando muita da sua ajuda nesse outro tópico que criei, tipo eu tenho na minha planilha cabeçalho que ocupa as 5 primeiras linhas. Então eu preciso pegar o índice da 6ª linha a diante e passar o log, não sei como resolver isso. Porque o que já existe hoje em dia não funciona, quando compilei mostrou a seguinte mensagem: A célula G por exemplo da linha 1 deve ser preenchida, o correto seria mostrar que a Célula G da linha 6 deve ser preenchida, pois nos meus logs existem campos obrigatórios que a planilha deverá ter. Te peço por gentileza, me ajude por favor, o link está abaixo.

 

https://forum.imasters.com.br/topic/565789-pegar-o-indice-de-uma-linha/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por laumello12
      Galera ajudinha
      Como faço para consumir um web service pronto em um projeto. Preciso só que ele busque no web service e traga na web 
      HELP
    • Por ValérinhaSilva255
      Precisamos criar um teatro, onde utilizaremos os conceitos de uma matriz em C#. Esta matriz, deverá ter, no máximo, 150 lugares.

      O programa deverá reservar uma poltrona, cobrando para isso do usuário 40% do valor total do ingresso, que deverá ser informado na tela inicial do programa.

      Quando ocupada uma poltrona, o usuário poderá pagar 60% ou 100% do valor total (caso esteja ou não reservada anteriormente). No caso de desmarcação de reserva, deverá ser devolvido 50% do valor da reserva (portanto, 20% do valor total do ingresso).

      O programa poderá ocupar, reservar, liberar poltronas.
      Um espetáculo somente poderá acontecer se a arrecadação total for maior ou igual a 51% do valor total do teatro. 

      Quando o teatro for fechado, pede-se para que se informe:
      Total de Lugares reservados: XX
      Valor total das reservas: R$00,00
      Total de Lugares Ocupados: YY
      Valor total de Ocupantes: R$00,00
      Total de Lugares Livres: ZZ

      Mínimo para realização do Evento: R$999,99. Valor Total Arrecadado: R$989,00
      Se o valor arrecadado for MAIOR que 51% do mínimo para realização, deverá ACONTECER o espetáculo, caso contrário, mostrar quantos locais ainda precisariam ser ocupados, da seguinte forma: Precisaríamos de 10 lugares Ocupados ou 30 lugares reservados para que o espetáculo pudesse ocorrer.

      O visitante deverá ter o “mapa” de cadeiras a sua disposição.

      O visitante irá escolher sua posição informando fileira e cadeira desejada.
      EXEMPLO DE EXECUÇÃO
      PREÇO DO INGRESSO: R$100,00

      ***** ***** ****** Mapa do Teatro ***** ***** *****

      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

      ***** ***** ****** Mapa do Teatro ***** ***** *****

      O que você deseja fazer?
      [0] - Finalizar o programa
      [1] - Abrir Espetáculo
      [2] - Reservar uma poltrona
      [3] - Liberar poltrona reservada
      [4] - Vender poltrona
      [7] - Finalizar vendas
      [9] - Parciais do Espetáculo

      Resumo das Operações:
      0 - Finaliza o programa e retorna para o sistema operacional.
      1 - Libera a sala do teatro, para que o programa possa ser executado outras vezes, para outros espetáculos (Zera todas as variáveis).
      2 - Reservar poltrona (Cobrar 40% do valor do ingresso)
      3 - Liberar poltrona reservada (Devolve 20% do valor do ingresso)
      4 - Vender poltrona (Recebe valor integral do ingresso - 100%)
      7 - Finalizar vendas (listar todos os resultados)
      9 - Parciais (saber quanto esta pago em cada situação. Reservas, vendas, etc.) Pode ser solicitado a qualquer momento.
    • Por Fiori
      Eu, estou cursando SI, e estou no primeiro semestre, o professor passou uma lista de exercícios, consegue resolver todos mas quando cheguei nesse não consigo resolver.
      O exercício é esse:  "Entrar via teclado com o sexo de determinado usuário, aceitar somente “F” ou “M” como respostas válidas.".
      Independente se a resposta for "F", "f", "M", "m" ou qualquer outra o loop do Do se repete. Oque preciso fazer para acontecer o if?
      string genero; Console.Clear(); Console.WriteLine("Caso seja mulher, digite [F]."); Console.WriteLine("Caso seja homem, digite [M]."); genero = Console.ReadLine(); do { Console.WriteLine("Valor invalido."); Console.WriteLine("Digite [F] ou [M]."); genero = Console.ReadLine(); } while (genero != "F" || genero != "M"); if (genero == "F" || genero == "M") { Console.WriteLine("Esse valor foi aceito."); Console.ReadKey(); }
       
    • Por Jonathacsantos
      Boa tarde, sou novo na programação, comecei por conta própria e agora estou com um pequeno problema, meu programa depende de uma pasta criada pra executar um .exe que fica dentro de uma outra pasta, sendo que eu preciso que ele leia o .exe independente de onde ele fica instalado, vou mostrar uma parte do código para tentar explicar 
      private void AcessRemo_Click(object sender, EventArgs e) { foreach ( var process in Process.GetProcessesByName("TeamViewer")) { process.Kill(); } Process.Start("C:\\Teste\\suporteremoto.exe"); ele fecha um teamviewer em execução e executa uma versão especifica do teamviewer, sendo que nos meus testes funciona pq eu tenho essa pasta ai chamada teste, mas o programa instala em Program Files, sendo que se for 64, ele vai pra Program Files (x86), dai gostaria de fazer ele ler, tipo um [LocalPath] , mas não sei como , se alguem puder me ajudar ou me da uma luz eu agradeço muito.
    • Por lucasrodrigues
      Estou com esse problema ao tentar vincular uma tabela do MySql a um DataSet. Utilizo o MySqlConnector 8.0.13, MySql-For-VisualStudio 1.2.8.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.