Пример #1
0
        /// <summary>
        /// Recebe coleção de passagens aprovadas para processamento no ConectSys.
        /// </summary>
        /// <param name="passagensAprovadas">PassagemAprovadaEstacionamentoDto[]</param>
        /// <returns>PassagensAprovadasParkResponse</returns>
        public PassagensAprovadasParkResponse Execute(List <PassagemAprovadaEstacionamentoDto> passagensAprovadasPark)
        {
            var response   = new PassagensAprovadasParkResponse();
            var execucaoId = Guid.NewGuid();

            response.ExecucaoId = execucaoId;

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

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

            var jsonResponse = JsonConvert.SerializeObject(response);

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

            return(response);
        }
Пример #2
0
        private void SalvarAprovadasStagingConectSys(List <PassagemAprovadaEstacionamentoDto> passagensAprovadas, PassagensAprovadasParkResponse response, Guid execucaoId)
        {
            try
            {
                var transacoes       = passagensAprovadas?.Select(c => c.TransacaoEstacionamento).ToList();
                var transacaoStaging = Mapper.Map <List <TransacaoPassagemEstacionamentoLoteStaging> >(transacoes);
                var idsTransacoes    = transacoes.Select(x => x.RegistroTransacaoId).ToList();

                var extratos        = passagensAprovadas?.Select(c => c.Extrato).ToList();
                var extratosStaging = Mapper.Map <List <ExtratoLoteStaging> >(extratos);

                var conveniadoInformacoes        = passagensAprovadas?.Select(c => c.ConveniadoInformacoesRPS).ToList();
                var conveniadoInformacoesStaging = Mapper.Map <List <ConveniadoInformacoesRpsLoteStaging> >(conveniadoInformacoes);

                var detalhePassagens       = passagensAprovadas?.SelectMany(c => c.TransacaoEstacionamento.Detalhes).ToList();
                var detalhePassagemStaging = new List <DetalhePassagemEstacionamentoLoteStaging>();
                detalhePassagens.ForEach(x => detalhePassagemStaging.Add(Mapper.Map <DetalhePassagemEstacionamentoLoteStaging>(x)));

                var pistaInformacoes           = passagensAprovadas?.Select(c => c.PistaInformacoesRPS).ToList();
                var pistaInformacoesRpsStaging = Mapper.Map <List <PistaInformacoesRPSLoteStaging> >(pistaInformacoes);

                TransactionContextHelper.ExecuteTransaction((aprovadas) =>
                {
                    Log.Debug($"ID: {execucaoId} - Início - Staging Passagens Aprovadas Park - ConectSys.");
                    using (var datasourceConectSys = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSys))
                    {
                        try
                        {
                            datasourceConectSys.Connection.BulkInsert(transacaoStaging, "TransacaoPassagemEstacionamentoStaging");
                            datasourceConectSys.Connection.BulkInsert(extratosStaging, "ExtratoLoteStaging");
                            datasourceConectSys.Connection.BulkInsert(detalhePassagemStaging, "DetalhePassagemEstacionamentoStaging");
                            datasourceConectSys.Connection.BulkInsert(conveniadoInformacoesStaging, "ConveniadoInformacoesRPSStaging");
                            datasourceConectSys.Connection.BulkInsert(pistaInformacoesRpsStaging, "PistaInformacoesRpsStaging");

                            response.QtdConveniadoInformacoesRPSStaging        = conveniadoInformacoesStaging.Count;
                            response.QtdDetalhePassagemEstacionamentoStaging   = detalhePassagemStaging.Count;
                            response.QtdPistaInformacoesRPSStaging             = pistaInformacoesRpsStaging.Count;
                            response.QtdTransacaoPassagemEstacionamentoStaging = transacaoStaging.Count;
                        }
                        catch (Exception ex)
                        {
                            Log.Fatal($"ID: {execucaoId} - Erro Fatal - Staging Passagem Aprovadas Park - ConectSys", ex);
                            response.SucessoStagingConectSys = false;
                        }
                    }
                    Log.Debug($"ID: {execucaoId} - Fim - Staging Passagens Aprovadas Park - ConectSys");
                }, passagensAprovadas);

                TransactionContextHelper.ExecuteTransaction((aprovadas) =>
                {
                    using (var dataSourceConectPark = new DbConnectionDataSource("ConectParkConnStr"))
                    {
                        var command = new AtualizarRegistroTransacaoProcessadoCommand(dataSourceConectPark);
                        command.Execute(new AtualizarRegistroTransacaoProcessadoArgs
                        {
                            RegistroTransacaoIds = idsTransacoes
                        });
                    }
                }, passagensAprovadas);
            }
            catch (Exception ex)
            {
                Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex);
            }
        }