public PassagensReprovadasParkResponse Execute(List <PassagemReprovadaEstacionamentoDto> passagensReprovadas) { var response = new PassagensReprovadasParkResponse(); var execucaoId = Guid.NewGuid(); response.ExecucaoId = execucaoId; Log.Info($"ID: {execucaoId} - Início - Execução Passagens Reprovadas Park."); if (passagensReprovadas != null && passagensReprovadas.Any()) { SalvarReprovadasStagingConectSys(passagensReprovadas, response, execucaoId); } var jsonResponse = JsonConvert.SerializeObject(response); Log.Info($"ID: {execucaoId} - Fim - Execução Passagens Reprovadas Park. Retorno: {jsonResponse}."); return(response); }
private void SalvarReprovadasStagingConectSys(List <PassagemReprovadaEstacionamentoDto> passagensReprovadas, PassagensReprovadasParkResponse response, Guid execucaoId) { var sw = new Stopwatch(); sw.Start(); var transacoesRecusadas = passagensReprovadas?.Select(c => c.TransacaoEstacionamentoRecusada).ToList(); var transacoesEstacionamentoRecusadasLoteStaging = Mapper.Map <List <TransacaoEstacionamentoRecusadaLoteStaging> >(transacoesRecusadas); var idsTransacoes = transacoesRecusadas.Select(x => x.RegistroTransacaoId).ToList(); var detalhePassagens = passagensReprovadas?.SelectMany(c => c.TransacaoEstacionamentoRecusada.Detalhes).ToList(); var detalhePassagemEstacionamentoRecusadasStaging = new List <DetalheTransacaoEstacionamentoRecusadaLoteStaging>(); detalhePassagens.ForEach(x => detalhePassagemEstacionamentoRecusadasStaging.Add(Mapper.Map <DetalheTransacaoEstacionamentoRecusadaLoteStaging>(x))); try { TransactionContextHelper.ExecuteTransaction((reprovadas) => { Log.Debug($"ID: {execucaoId} - Início - Staging Passagens Reprovadas Park - ConectSys."); using (var datasourceConectSys = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSys)) { try { datasourceConectSys.Connection.BulkInsertTransacoes(transacoesEstacionamentoRecusadasLoteStaging, "TransacaoEstacionamentoRecusadaLoteStaging"); datasourceConectSys.Connection.BulkInsertTransacoes(detalhePassagemEstacionamentoRecusadasStaging, "DetalhePassagemEstacionamentoRecusadaLoteStaging"); response.QtdTransacaoEstacionamentoRecusadaStaging = transacoesEstacionamentoRecusadasLoteStaging.Count; response.QtdDetalhePassagemEstacionamentoRecusadaStaging = detalhePassagemEstacionamentoRecusadasStaging.Count; } catch (Exception ex) { Log.Fatal($"ID: {execucaoId} - Erro Fatal - Staging Passagens Reprovadas Park - ConectSys.", ex); response.SucessoStagingConectSys = false; } } Log.Debug($"ID: {execucaoId} - Fim - Staging Passagens Reprovadas Park - ConectSys."); }, passagensReprovadas); TransactionContextHelper.ExecuteTransaction((reprovadas) => { using (var dataSourceConectPark = new DbConnectionDataSource("ConectParkConnStr")) { var command = new AtualizarRegistroTransacaoProcessadoCommand(dataSourceConectPark); command.Execute(new AtualizarRegistroTransacaoProcessadoArgs { RegistroTransacaoIds = idsTransacoes }); } }, transacoesRecusadas); } catch (Exception ex) { Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex); } sw.Stop(); response.TempoExecucaoStagingConectSys = sw.Elapsed; }