Exemple #1
0
        /// <summary>
        /// Recebe coleção de passagens aprovadas para processamento no ConectSys e Mensageria.
        /// </summary>
        /// <param name="passagensAprovadas">PassagemAprovadaArtespDto[]</param>
        /// <returns>PassagensAprovadasArtespResponse</returns>
        public PassagensAprovadasArtespResponse Execute(List <PassagemAprovadaArtespDto> passagensAprovadas)
        {
            var response   = new PassagensAprovadasArtespResponse();
            var execucaoId = Guid.NewGuid();

            response.ExecucaoId = execucaoId;

            Log.Info($"ID: {execucaoId} - Início - Execução Passagens Aprovadas Artesp.");

            if (passagensAprovadas != null && passagensAprovadas.Any())
            {
                SalvarAprovadasStagingConectSys(passagensAprovadas, response, execucaoId);

                SalvarProcessadasAprovadasStagingMensageria(passagensAprovadas, response, execucaoId);

                SalvarAprovadasConectSys(passagensAprovadas, response, execucaoId);

                SalvarProcessadasAprovadasMensageria(passagensAprovadas, response, execucaoId);
            }

            var jsonResponse = JsonConvert.SerializeObject(response);

            Log.Info($"ID: {execucaoId} - Fim - Execução Passagens Aprovadas Artesp. Retorno: {jsonResponse}.");

            return(response);
        }
Exemple #2
0
        /// <summary>
        /// Salva as passagens aprovadas nas tabelas de Staging do ConectSys.
        /// </summary>
        /// <param name="passagensAprovadas">PassagemAprovadaArtespDto</param>
        /// <param name="response">PassagensAprovadasArtespResponse</param>
        /// <param name="execucaoId">Sessão de execução.</param>
        private void SalvarAprovadasStagingConectSys(List <PassagemAprovadaArtespDto> passagensAprovadas, PassagensAprovadasArtespResponse response, Guid execucaoId)
        {
            var sw = new Stopwatch();

            sw.Start();

            try
            {
                TransactionContextHelper.ExecuteTransaction((aprovadas) =>
                {
                    Log.Debug($"ID: {execucaoId} - Início - Staging Passagens Aprovadas Artesp - ConectSys.");
                    using (var datasourceConectSys = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSys))
                    {
                        try
                        {
                            var aceites = passagensAprovadas.Any(c => c.AceiteManualReenvioPassagem != null) ? passagensAprovadas.Select(c => c.AceiteManualReenvioPassagem) : null;
                            var aceiteManualReenvioPassagemLoteStaging = Mapper.Map <List <AceiteManualReenvioPassagemLoteStaging> >((aceites ?? new List <AceiteManualReenvioPassagemDto>()));
                            aceiteManualReenvioPassagemLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(aceiteManualReenvioPassagemLoteStaging, "AceiteManualReenvioPassagemLoteStaging");

                            var configuracoesAdesao           = passagensAprovadas.Any(c => c.ConfiguracaoAdesao != null) ? passagensAprovadas.Select(c => c.ConfiguracaoAdesao) : null;
                            var configuracaoAdesaoLoteStaging = Mapper.Map <List <ConfiguracaoAdesaoLoteStaging> >((configuracoesAdesao ?? new List <ConfiguracaoAdesaoDto>()));
                            configuracaoAdesaoLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(configuracaoAdesaoLoteStaging, "ConfiguracaoAdesaoLoteStaging");

                            var viagens = passagensAprovadas.Any(c => c.Viagens != null) ? passagensAprovadas.SelectMany(c => c.Viagens) : null;
                            var detalheViagemLoteStaging = Mapper.Map <List <DetalheViagemLoteStaging> >((viagens ?? new List <DetalheViagemDto>()));
                            detalheViagemLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(detalheViagemLoteStaging, "DetalheViagemLoteStaging");

                            var divergencias = passagensAprovadas.Any(c => c.DivergenciaCategoriaConfirmada != null) ? passagensAprovadas.Select(c => c.DivergenciaCategoriaConfirmada) : null;
                            var divergenciaCategoriaConfirmadaLoteStaging = Mapper.Map <List <DivergenciaCategoriaConfirmadaLoteStaging> >((divergencias ?? new List <DivergenciaCategoriaConfirmadaDto>()));
                            divergenciaCategoriaConfirmadaLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(divergenciaCategoriaConfirmadaLoteStaging, "DivergenciaCategoriaConfirmadaLoteStaging");

                            var estornos = passagensAprovadas.Any(c => c.EstornoPassagem != null) ? passagensAprovadas.Select(c => c.EstornoPassagem) : null;
                            var estornoPassagemLoteStaging = Mapper.Map <List <EstornoPassagemLoteStaging> >((estornos ?? new List <EstornoPassagemDto>()));
                            estornoPassagemLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(estornoPassagemLoteStaging, "EstornoPassagemLoteStaging");

                            var eventos           = passagensAprovadas.Any(c => c.EventoPrimeiraPassagemManual != null) ? passagensAprovadas.Select(c => c.EventoPrimeiraPassagemManual) : null;
                            var eventoLoteStaging = Mapper.Map <List <EventoLoteStaging> >((eventos ?? new List <EventoDto>()));
                            eventoLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(eventoLoteStaging, "EventoLoteStaging");

                            var extratos           = passagensAprovadas.Any(c => c.Extrato != null) ? passagensAprovadas.Select(c => c.Extrato) : null;
                            var extratoLoteStaging = Mapper.Map <List <ExtratoLoteStaging> >((extratos ?? new List <ExtratoDto>()));
                            extratoLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(extratoLoteStaging, "ExtratoLoteStaging");

                            var extratosEstorno           = passagensAprovadas.Any(c => c.ExtratoEstorno != null) ? passagensAprovadas.Select(c => c.ExtratoEstorno) : null;
                            var extratoEstornoLoteStaging = Mapper.Map <List <ExtratoLoteStaging> >((extratosEstorno ?? new List <ExtratoDto>()));
                            extratoEstornoLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(extratoEstornoLoteStaging, "ExtratoLoteStaging");

                            var solicitacoes = passagensAprovadas.Any(c => c.SolicitacaoImagem != null) ? passagensAprovadas.Select(c => c.SolicitacaoImagem) : null;
                            var solicitacaoImagemLoteStaging = Mapper.Map <List <SolicitacaoImagemLoteStaging> >((solicitacoes ?? new List <SolicitacaoImagemDto>()));
                            solicitacaoImagemLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(solicitacaoImagemLoteStaging, "SolicitacaoImagemLoteStaging");

                            var transacoes = passagensAprovadas.Any(c => c.TransacaoPassagemArtesp != null) ? passagensAprovadas.Select(c => c.TransacaoPassagemArtesp) : null;
                            var transacaoPassagemLoteStaging = Mapper.Map <List <TransacaoPassagemLoteStaging> >((transacoes ?? new List <TransacaoPassagemArtespDto>()));
                            transacaoPassagemLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(transacaoPassagemLoteStaging, "TransacaoPassagemLoteStaging");

                            var veiculos            = passagensAprovadas.Any(c => c.Veiculo != null) ? passagensAprovadas.Select(c => c.Veiculo) : null;
                            var veiculosLoteStaging = Mapper.Map <List <VeiculoLoteStaging> >((veiculos ?? new List <VeiculoDto>()));
                            veiculosLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(veiculosLoteStaging, "VeiculoLoteStaging");


                            var passagens            = passagensAprovadas.Any(c => c.Passagem != null) ? passagensAprovadas.Select(c => c.Passagem) : null;
                            var passagensLoteStaging = Mapper.Map <List <PassagemLoteStaging> >((passagens ?? new List <PassagemDto>()));
                            passagensLoteStaging.ForEach(x => x.ExecucaoId = execucaoId);
                            datasourceConectSys.Connection.BulkInsertTransacoes(passagensLoteStaging, "PassagemLoteStaging");


                            response.QtdAceiteManualReenvioStaging            = aceiteManualReenvioPassagemLoteStaging.Count;
                            response.QtdConfiguracaoAdesaoStaging             = configuracaoAdesaoLoteStaging.Count;
                            response.QtdViagemValePedagioStaging              = detalheViagemLoteStaging.Count;
                            response.QtdDivergenciaCategoriaConfirmadaStaging = divergenciaCategoriaConfirmadaLoteStaging.Count;
                            response.QtdEstornoStaging           = estornoPassagemLoteStaging.Count;
                            response.QtdEventoStaging            = eventoLoteStaging.Count;
                            response.QtdExtratoStaging           = extratoLoteStaging.Count;
                            response.QtdExtratoEstornoStaging    = extratoEstornoLoteStaging.Count;
                            response.QtdSolicitacaoImagemStaging = solicitacaoImagemLoteStaging.Count;
                            response.QtdTransacaoPassagemStaging = transacaoPassagemLoteStaging.Count;
                            response.QtdVeiculosStaging          = veiculosLoteStaging.Count;
                            response.QtdPassagensStaging         = passagensLoteStaging.Count;
                            response.SucessoStagingConectSys     = true;
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal($"ID: {execucaoId} - Erro Fatal - Staging Passagens Aprovadas Artesp - ConectSys.", ex);
                            response.SucessoStagingConectSys = false;
                        }
                    }
                    Log.Debug($"ID: {execucaoId} - Fim - Staging Passagens aprovadas Artesp - ConectSys.");
                }, passagensAprovadas);
            }
            catch (Exception ex)
            {
                Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex);
            }

            sw.Stop();
            response.TempoExecucaoStagingConectSys = sw.Elapsed;
        }
Exemple #3
0
        /// <summary>
        /// Executa a procedure "SP_SalvarPassagensAprovadas" na base do ConectSys.
        /// </summary>
        /// <param name="passagensAprovadas">PassagemAprovadaArtespDto[]</param>
        /// <param name="response">PassagensAprovadasArtespResponse</param>
        /// <param name="execucaoId">Sessão de execução.</param>
        private void SalvarAprovadasConectSys(List <PassagemAprovadaArtespDto> passagensAprovadas, PassagensAprovadasArtespResponse response, Guid execucaoId)
        {
            var sw = new Stopwatch();

            sw.Start();

            try
            {
                TransactionContextHelper.ExecuteTransaction((qtdRegistros) =>
                {
                    Log.Debug($"ID: {execucaoId} - Início - Execução procedure SP_SalvarPassagensAprovadas - ConectSys.");
                    using (var datasource = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSys))
                    {
                        try
                        {
                            var command = new SalvarPassagensAprovadasSysCommand(datasource);
                            var filter  = new PassagemAprovadaSysFilter
                            {
                                ExecucaoId                      = execucaoId,
                                Passagens                       = passagensAprovadas.Any(c => c.Passagem != null) ? passagensAprovadas.Select(c => c.Passagem) : null,
                                TransacoesPassagens             = passagensAprovadas.Any(c => c.TransacaoPassagemArtesp != null) ? passagensAprovadas.Select(c => c.TransacaoPassagemArtesp) : null,
                                Extratos                        = passagensAprovadas.Any(c => c.Extrato != null) ? passagensAprovadas.Select(c => c.Extrato) : null,
                                EstornosPassagem                = passagensAprovadas.Any(c => c.EstornoPassagem != null) ? passagensAprovadas.Select(c => c.EstornoPassagem) : null,
                                ExtratosEstornos                = passagensAprovadas.Any(c => c.ExtratoEstorno != null) ? passagensAprovadas.Select(c => c.ExtratoEstorno) : null,
                                Veiculos                        = passagensAprovadas.Any(c => c.Veiculo != null) ? passagensAprovadas.Select(c => c.Veiculo) : null,
                                Eventos                         = passagensAprovadas.Any(c => c.EventoPrimeiraPassagemManual != null) ? passagensAprovadas.Select(c => c.EventoPrimeiraPassagemManual) : null,
                                DetalhesViagem                  = passagensAprovadas.Any(c => c.Viagens != null) ? passagensAprovadas.SelectMany(c => c.Viagens) : null,
                                SolicitacoesImagem              = passagensAprovadas.Any(c => c.SolicitacaoImagem != null) ? passagensAprovadas.Select(c => c.SolicitacaoImagem) : null,
                                AceitesManuaisReenvioPassagem   = passagensAprovadas.Any(c => c.AceiteManualReenvioPassagem != null) ? passagensAprovadas.Select(c => c.AceiteManualReenvioPassagem) : null,
                                ConfiguracoesAdesao             = passagensAprovadas.Any(c => c.ConfiguracaoAdesao != null) ? passagensAprovadas.Select(c => c.ConfiguracaoAdesao) : null,
                                DivergenciasCategoriaConfirmada = passagensAprovadas.Any(c => c.DivergenciaCategoriaConfirmada != null) ? passagensAprovadas.Select(c => c.DivergenciaCategoriaConfirmada) : null
                            };

                            var dto = command.Execute(filter);

                            if (dto.Status)
                            {
                                response.SucessoConectSys = true;
                                response.ErroConectSys    = String.Empty;
                            }
                            else
                            {
                                Log.Error($"ID: {execucaoId} - Erro - Execução procedure SP_SalvarPassagensAprovadas - ConectSys. Retorno: {dto}.");

                                response.SucessoConectSys = false;
                                response.ErroConectSys    = dto.ToString();

                                AtualizarFalhaPassagensAprovadas(datasource, execucaoId, dto.ToString());
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal($"ID: {execucaoId} - Erro Fatal - Execução procedure SP_SalvarPassagensAprovadas - ConectSys.", ex);
                            response.SucessoConectSys = false;

                            AtualizarFalhaPassagensAprovadas(datasource, execucaoId, ex.Message);
                        }
                    }
                    Log.Debug($"ID: {execucaoId} - Fim - Execução procedure SP_SalvarPassagensAprovadas - ConectSys.");
                }, 0);
            }
            catch (Exception ex)
            {
                Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex);
            }

            sw.Stop();
            response.TempoExecucaoConectSys = sw.Elapsed;
        }
Exemple #4
0
        /// <summary>
        /// Executa a procedure "SP_SalvarPassagensProcessadas" na base do Mensageria.
        /// </summary>
        /// <param name="passagensAprovadas">PassagemAprovadaArtespDto[]</param>
        /// <param name="response">PassagensAprovadasArtespResponse</param>
        /// <param name="execucaoId">Sessão de execução.</param>
        private void SalvarProcessadasAprovadasMensageria(List <PassagemAprovadaArtespDto> passagensAprovadas, PassagensAprovadasArtespResponse response, Guid execucaoId)
        {
            var sw = new Stopwatch();

            sw.Start();

            try
            {
                TransactionContextHelper.ExecuteTransaction((qtdRegistros) =>
                {
                    Log.Debug($"ID: {execucaoId} - Início - Execução procedure SP_SalvarPassagensProcessadas - Mensageria.");
                    using (var datasourceMensageria = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.Mensageria))
                    {
                        try
                        {
                            var command = new SalvarPassagensProcessadasCommand(datasourceMensageria);
                            var passagensProcessadas = passagensAprovadas.Any(c => c.PassagemProcessada != null) ? passagensAprovadas.Select(c => c.PassagemProcessada).ToList() : null;
                            var filter = new PassagemProcessadaFilter
                            {
                                ExecucaoId           = execucaoId,
                                PassagensProcessadas = passagensProcessadas
                            };

                            var dto = command.Execute(filter);
                            if (dto.Status)
                            {
                                response.SucessoMensageria = true;
                                response.ErroMensageria    = String.Empty;
                            }
                            else
                            {
                                Log.Error($"ID: {execucaoId} - Erro - Execução procedure SP_SalvarPassagensProcessadas - Mensageria. Retorno: {dto}.");

                                response.SucessoMensageria = false;
                                response.ErroMensageria    = dto.ToString();

                                AtualizarFalhaPassagensProcessadas(datasourceMensageria, execucaoId, dto.ToString());
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal($"ID: {execucaoId} - Erro Fatal - Execução procedure SP_SalvarPassagensProcessadas - Mensageria.", ex);
                            response.SucessoMensageria = false;

                            AtualizarFalhaPassagensProcessadas(datasourceMensageria, execucaoId, ex.Message);
                        }
                    }
                    Log.Debug($"ID: {execucaoId} - Fim - Execução procedure SP_SalvarPassagensProcessadas - Mensageria.");
                }, 0);
            }
            catch (Exception ex)
            {
                Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex);
            }

            sw.Stop();
            response.TempoExecucaoMensageria = sw.Elapsed;
        }
Exemple #5
0
        /// <summary>
        /// Salva as passagens processadas que foram aprovadas nas tabelas de Staging do Mensageria.
        /// </summary>
        /// <param name="passagensAprovadas">PassagemAprovadaArtespDto[]</param>
        /// <param name="response">PassagensAprovadasArtespResponse</param>
        /// <param name="execucaoId">Sessão de execução.</param>
        private void SalvarProcessadasAprovadasStagingMensageria(List <PassagemAprovadaArtespDto> passagensAprovadas, PassagensAprovadasArtespResponse response, Guid execucaoId)
        {
            var sw = new Stopwatch();

            sw.Start();

            try
            {
                TransactionContextHelper.ExecuteTransaction((aprovadas) =>
                {
                    Log.Debug($"ID: {execucaoId} - Início - Staging Passagens Processadas - Mensageria.");
                    using (var datasourceConectSys = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.Mensageria))
                    {
                        try
                        {
                            var passagensProcessadas            = passagensAprovadas.Any(c => c.PassagemProcessada != null) ? passagensAprovadas.Select(c => c.PassagemProcessada) : null;
                            var passagensProcessadasLoteStaging = Mapper.Map <List <PassagemProcessadaLoteStaging> >((passagensProcessadas ?? new List <PassagemProcessadaArtespDto>()));
                            passagensProcessadasLoteStaging.ForEach(x => { x.ExecucaoId = execucaoId; x.Aprovada = true; });
                            datasourceConectSys.Connection.BulkInsertTransacoes(passagensProcessadasLoteStaging, "PassagemProcessadaLoteStaging");


                            response.QtdPassagensProcessadasStaging = passagensProcessadasLoteStaging.Count;
                            response.SucessoStagingMensageria       = true;
                        }
                        catch (Exception ex)
                        {
                            Log.Error($"ID: {execucaoId} - Erro Fatal - Staging Passagens Processadas - Mensageria.", ex);
                            response.SucessoStagingMensageria = false;
                        }
                    }
                    Log.Debug($"ID: {execucaoId} - Fim - Staging Passagens Processadas - Mensageria.");
                }, passagensAprovadas);
            }
            catch (Exception ex)
            {
                Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex);
            }

            sw.Stop();
            response.TempoExecucaoStagingMensageria = sw.Elapsed;
        }