Ejemplo n.º 1
0
        public void SimularOcorrencia(int us_id)
        {
            var nomeArquivo = "";
            List <Ocorrencia> Ocorrencias = new List <Ocorrencia>();

            try
            {
                _spinner.SetCursorSpinner(_logger, "Recuperando ocorrencias a serem enviadas");

                int limit  = 20000;
                int offset = 0;

                //Recupera dados das ocorrências a serem importadas para a omni.
                using (var dalAndamentoNegocial = new DAL.Acionamentos(_config))
                {
                    IEnumerable <AcionamentoIntegracaoOmni> ocorrencias;
                    while ((ocorrencias = dalAndamentoNegocial.SimulacaoesOcorrenciasParaEnvioWs(limit, offset)).Count() > 0)
                    {
                        _spinner.SetCursorSpinner(_logger, $"Enviando simulações de {offset} à {offset + limit}");

                        IEnumerable <AcionamentoIntegracaoOmni> dados = ocorrencias;
                        dados.AsParallel()
                        .ForAll(ocorr =>
                        {
                            try
                            {
                                var ret = _clienteServicoOmni.IncluirOcorrencia(
                                    ocorr.contr_contrato
                                    , ocorr.at_reu_cod_externo
                                    , ocorr.us_login_externo
                                    , ocorr.cod_ocorr_omni
                                    , ocorr.andn_data_cadastro
                                    , ocorr.andn_andamento
                                    , ocorr.telefone
                                    , ocorr.cod_cliente_omni
                                    );

                                Ocorrencia ocorrencia = GerarOcorrencia(us_id, ocorr, MontarMensagem(ocorr.andn_id, ret), (ret.erro?.Length ?? 0) == 0);
                                Ocorrencias.Add(ocorrencia);
                            }
                            catch (Exception ex)
                            {
                                _logger.LogDebug(" Ocorreu um erro: " + string.Format("IdOcorrencia: {0} | Erro: {1}", ocorr.andn_id, ex.Message));
                            }
                        }
                                );


                        offset += limit;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogDebug($" Ocorreu um erro: {ex.Message}");
                throw;
            }
            finally
            {
                if (Ocorrencias.Count > 0)
                {
                    GeradorArquivo.ListaParaCsv(Ocorrencias, nomeArquivo = $"{saveFilePath}\\Simulacoes_{DateTime.Now:yyyyMMddHHmmss}.csv");

                    using (var dalAndamentoNegocial = new DAL.Acionamentos(_config))
                    {
                        dalAndamentoNegocial.RegistrarHistoricoOcorrencia(
                            new List <Ocorrencia>()
                        {
                            new Ocorrencia()
                            {
                                atualizado_em = DateTime.Now, cliente = "", contrato = "", criado_em = DateTime.Now.Date, id_ocorrencia = 0.ToString(), id_usuario = 371, origem_ocorrencia = "FNWS", retorno = "sucesso", success = true
                            }
                        });
                    }
                }
                Ocorrencias = null;
            }
        }
Ejemplo n.º 2
0
        public void RegistrarOcorrencia(int us_id, DateTime dataInicio, DateTime dataFim)
        {
            IEnumerable <AcionamentoIntegracaoOmni> dadosOcorrencia = null;
            var nomeArquivo = "";
            List <Ocorrencia> Ocorrencias = new List <Ocorrencia>();
            string            codigoClienteParceiroAtual = string.Empty;

            try
            {
                _spinner.SetCursorSpinner(_logger, "Recuperando ocorrencias a serem enviadas");

                //Recupera dados das ocorrências a serem importadas para a omni.
                using (var dalAndamentoNegocial = new DAL.Acionamentos(_config))
                {
                    dadosOcorrencia = dalAndamentoNegocial.OcorrenciasParaEnvioWs(dataInicio, dataFim).ToList();
                }

                _spinner.SetCursorSpinner(_logger, "Gerando relatório contendo dados coletados para envio");

                GeradorArquivo.ListaParaCsv(dadosOcorrencia, nomeArquivo = $"{saveFilePath}\\{DateTime.Now:yyyyMMddHHmmss}.csv");

                _spinner.SetCursorSpinner(_logger, $"Relatório gerado com sucesso em : {nomeArquivo}");


                if (dadosOcorrencia.Any())
                {
                    _spinner.SetCursorSpinner(_logger, $"Iniciando envio de " + dadosOcorrencia.Count() + " registros");

                    IEnumerable <AcionamentoIntegracaoOmni> dados = null;

                    try
                    {
                        //TODO colocar no arquvo de configuracao a qunatidade de dados a serem enviados
                        while ((dados = GerarLista(dadosOcorrencia, _parametrosServicoOmni.quantidadeRegistroPorEtapa)).Count() > 0)
                        {
                            foreach (var ocorr in dados)
                            {
                                try
                                {
                                    if (_clienteServicoOmni.CodigoParceiro != _parametrosServicoOmni.CODIGO_PARCEIRO_OMNI)
                                    {
                                        codigoClienteParceiroAtual = _parametrosServicoOmni.CODIGO_PARCEIRO_OMNI;
                                        _clienteServicoOmni        = _clienteServicoOmni.ObterServico();
                                    }

                                    var ret = _clienteServicoOmni.IncluirOcorrencia(
                                        ocorr.contr_contrato
                                        , ocorr.at_reu_cod_externo
                                        , ocorr.us_login_externo
                                        , ocorr.cod_ocorr_omni
                                        , ocorr.andn_data_cadastro
                                        , ocorr.andn_andamento
                                        , ocorr.telefone
                                        , ocorr.cod_cliente_omni
                                        );

                                    Ocorrencia ocorrencia = GerarOcorrencia(us_id, ocorr, MontarMensagem(ocorr.andn_id, ret), (ret.erro?.Length ?? 0) == 0);
                                    Ocorrencias.Add(ocorrencia);
                                }
                                catch (Exception ex)
                                {
                                    _logger.LogDebug(" Ocorreu um erro: " + string.Format("IdOcorrencia: {0} | Erro: {1}", ocorr.andn_id, ex.Message));
                                }
                            }

                            _spinner.SetCursorSpinner(_logger, $"Registros enviados {dados.Count()}, de um total de {dadosOcorrencia.Count() + dados.Count()}, restam {dadosOcorrencia.Count()}");
                        }
                    }
                    finally
                    {
                        try
                        {
                            _spinner.SetCursorSpinner(_logger, "Finalizando o processamento");
                            if (Ocorrencias.Count > 0)
                            {
                                GeradorArquivo.ListaParaCsv(Ocorrencias, nomeArquivo.Replace(".csv", "resultado_processamento.csv"));

                                //Recupera dados das ocorrências a serem importadas para a omni.
                                using (var dalAndamentoNegocial = new DAL.Acionamentos(_config))
                                {
                                    dalAndamentoNegocial.RegistrarHistoricoOcorrencia(Ocorrencias);
                                }
                            }

                            _spinner.SetCursorSpinner(_logger, "Envio finalizado");
                        }
                        catch (Exception ex)
                        {
                            _logger.LogDebug($"Ocorreu um erro ao finalizar : {ex.Message}");
                            throw;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogDebug($" Ocorreu um erro: {ex.Message}");
                throw;
            }
            finally
            {
                dadosOcorrencia = null;
                Ocorrencias     = null;
            }
        }
        public void ProcessarCarga()
        {
            if (!ContemArquivosAProcessar())
            {
                _logger.LogInformation("Sem arquivos para serem processados!");
                return;
            }
            if (ContemArquivosProcessando())
            {
                _logger.LogInformation("Existem arquivos sendo processados, fila atualizada!");
                return;
            }

            FileInfo primeiroArquivoNaFila = ObterProximoArquivo();

            if (primeiroArquivoNaFila is null)
            {
                return;
            }

            if (!ExtensaoValida(primeiroArquivoNaFila))
            {
                return;
            }

            var nomeArquivoProcessando = DateTime.Now.ToString("ddMMyyyy_HHmmssffff");

            if (EUmCSV(primeiroArquivoNaFila))
            {
                nomeArquivoProcessando = $"{nomeArquivoProcessando}_{primeiroArquivoNaFila.Name}";
                File.Copy($"{PathOrigin}{primeiroArquivoNaFila.Name}", $"{PathProcessing}{nomeArquivoProcessando}");
            }
            else
            {
                nomeArquivoProcessando = $"{nomeArquivoProcessando}_{(primeiroArquivoNaFila.Name.Replace(primeiroArquivoNaFila.Extension, ".csv"))}";
                GeradorArquivo.ExcelToCsv(primeiroArquivoNaFila.FullName, $"{PathProcessing}{nomeArquivoProcessando}", ObterTipoExtensaoArquivo(primeiroArquivoNaFila));
            }

            try
            {
                _conn.GetConn().
                Query("select * from public.fn_carga_sala01(pasta_arquivo:=@_pasta_arquivo,nome_arquivo:=@_nome_arquivo,pasta_arquivo_processado:=@_pasta_arquivo_processado)"
                      , new
                {
                    _pasta_arquivo            = PathBdProcessing,
                    _nome_arquivo             = nomeArquivoProcessando,
                    _pasta_arquivo_processado = PathBdProcessed
                });

                File.Copy(primeiroArquivoNaFila.FullName, $"{PathProcessed}{primeiroArquivoNaFila.Name}", true);
                File.Delete(primeiroArquivoNaFila.FullName);

                var pathProcessing = new System.IO.DirectoryInfo(PathProcessing);
                pathProcessing.GetFiles().All(f =>
                {
                    f.Delete();
                    return(true);
                });
            }
            finally
            {
                _conn.CloseConn();
            }
        }