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); }
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); }
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; } }