Esempio n. 1
0
        private string ResponderReceberArquivo()
        {
            string lIdDaImportacao;
            string lResposta = string.Empty;

            TransporteImportacaoPEP lObjetoDeResposta;

            ParameterizedThreadStart lThreadStart;
            Thread lNovoThread;

            lIdDaImportacao = string.Format("{0}_{1}", this.UsuarioLogado.Id, Guid.NewGuid().ToString());

            foreach (string lKey in this.ApplicationImportacoesPEPSendoEfetuadas.Keys)
            {
                if (lKey.StartsWith(string.Format("{0}_", this.UsuarioLogado.Id)))
                {
                    //já existia uma requisição de sincronização para esse usuário
                    //(alguém fez bypass do javascript pra re-enviar)

                    lObjetoDeResposta = this.ApplicationImportacoesPEPSendoEfetuadas[lKey];

                    lResposta = RetornarSucessoAjax(lObjetoDeResposta, "Já havia uma requisição sendo executada.");

                    return(lResposta);
                }
            }

            HttpPostedFile lFile;

            byte[] lFileBytes;
            string lConteudo;

            lFile      = Request.Files[0];
            lFileBytes = new byte[lFile.InputStream.Length];

            lFile.InputStream.Read(lFileBytes, 0, lFileBytes.Length);

            lConteudo = System.Text.Encoding.UTF8.GetString(lFileBytes);

            lObjetoDeResposta = new TransporteImportacaoPEP(lIdDaImportacao);

            if (!this.ApplicationImportacoesPEPSendoEfetuadas.ContainsKey(lIdDaImportacao))
            {
                this.ApplicationImportacoesPEPSendoEfetuadas.Add(lIdDaImportacao, lObjetoDeResposta);
            }

            lThreadStart = new ParameterizedThreadStart(ResponderImportarPEP_Async);

            lNovoThread = new Thread(lThreadStart);

            lNovoThread.Start(new string[] { lIdDaImportacao, lConteudo });

            lResposta = RetornarSucessoAjax(lObjetoDeResposta, "Arquivo recebido com sucesso, processo de importação iniciado.");

            return(lResposta);
        }
Esempio n. 2
0
        private string ResponderVerificarImportacao()
        {
            string lIdDaImportacao = Request.Form["IdDaImportacao"];

            string lRetorno;

            if (this.ApplicationImportacoesPEPSendoEfetuadas.ContainsKey(lIdDaImportacao))
            {
                TransporteImportacaoPEP lTransporte = this.ApplicationImportacoesPEPSendoEfetuadas[lIdDaImportacao];

                lRetorno = RetornarSucessoAjax(lTransporte, lTransporte.StatusDaImportacao);

                if (lTransporte.StatusDaImportacao == "Finalizada")
                {
                    this.ApplicationImportacoesPEPSendoEfetuadas.Remove(lTransporte.IdDaImportacao);
                }
            }
            else
            {
                lRetorno = RetornarSucessoAjax("INEXISTENTE");
            }

            return(lRetorno);
        }
Esempio n. 3
0
        private void ResponderImportarPEP_Async(object pIdDaImportacaoEConteudo)
        {
            string lIdDaImportacao    = ((string[])pIdDaImportacaoEConteudo)[0];
            string lConteudoDoArquivo = ((string[])pIdDaImportacaoEConteudo)[1];

            TransporteImportacaoPEP lTransporte = this.ApplicationImportacoesPEPSendoEfetuadas[lIdDaImportacao];

            List <PessoaExpostaPoliticamenteInfo> lListaParaImportar = new List <PessoaExpostaPoliticamenteInfo>();

            if (lTransporte != null)
            {
                SalvarEntidadeRequest <PessoaExpostaPoliticamenteImportacaoInfo> lRequest = new SalvarEntidadeRequest <PessoaExpostaPoliticamenteImportacaoInfo>();
                SalvarObjetoResponse <PessoaExpostaPoliticamenteImportacaoInfo>  lResponse;

                string[] lLinhas = lConteudoDoArquivo.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

                Dictionary <string, string> lJaImportados = new Dictionary <string, string>();

                PessoaExpostaPoliticamenteInfo lNovaPessoa;

                foreach (PessoaExpostaPoliticamenteInfo lPessoaImportada in this.SessionUltimoResultadoDeBusca)
                {
                    if (!lJaImportados.ContainsKey(lPessoaImportada.DsDocumento))
                    {
                        lJaImportados.Add(lPessoaImportada.DsDocumento, lPessoaImportada.DsNome);
                    }
                }

                foreach (string lLinha in lLinhas)
                {
                    if (!string.IsNullOrEmpty(lLinha) && lLinha.StartsWith("110"))
                    {
                        lNovaPessoa = new PessoaExpostaPoliticamenteInfo(lLinha);

                        if (!lJaImportados.ContainsKey(lNovaPessoa.DsDocumento))     //TODO: método melhor pra não-repetidos? direto na tabela?
                        {
                            lListaParaImportar.Add(lNovaPessoa);
                        }
                    }
                }

                lRequest.Objeto = new PessoaExpostaPoliticamenteImportacaoInfo()
                {
                    ListaParaImportar = lListaParaImportar
                };

                lRequest.IdUsuarioLogado = base.UsuarioLogado.Id;

                lRequest.DescricaoUsuarioLogado = base.UsuarioLogado.Nome;

                lResponse = ((ServicoPersistenciaCadastro)this.ServicoPersistenciaCadastro).ImportarPessoasExpostasPoliticamente(lRequest);

                lTransporte.MensagemDeFinalizacao = "Registros importados com sucesso";

                lTransporte.RegistrosImportadosComSucesso = lResponse.Objeto.RegistrosImportadosComSucesso;
                lTransporte.RegistrosComErro = lResponse.Objeto.RegistrosImportadosComErro;

                lTransporte.StatusDaImportacao = "Finalizada";

                this.SessionUltimoResultadoDeBusca = null;
            }
        }