/// <summary> /// Recebe coleção de passagens reprovadas para processamento no ConectSys. /// </summary> /// <param name="PassagensReprovadas">PassagemReprovadaEdiDto[]</param> /// <returns>PassagensReprovadasEdiResponse</returns> public PassagensReprovadasEdiResponse Execute(List <PassagemReprovadaEdiDto> PassagensReprovadas) { var response = new PassagensReprovadasEdiResponse(); var execucaoId = Guid.NewGuid(); response.ExecucaoId = execucaoId; Log.Info($"ID: {execucaoId} - Início - Execução Passagens Reprovadas Edi."); if (PassagensReprovadas != null && PassagensReprovadas.Any()) { SalvarReprovadasStagingConectSys(PassagensReprovadas, response, execucaoId); } var jsonResponse = JsonConvert.SerializeObject(response); Log.Info($"ID: {execucaoId} - Fim - Execução Passagens Reprovadas Edi. Retorno: {jsonResponse}."); return(response); }
/// <summary> /// Salva as passagens reprovadas nas tabelas de Staging do ConectSys. /// </summary> /// <param name="passagensReprovadas">PassagemReprovadaEdiDto</param> /// <param name="response">PassagensReprovadasEdiResponse</param> /// <param name="execucaoId">Sessão de execução.</param> private void SalvarReprovadasStagingConectSys(List <PassagemReprovadaEdiDto> passagensReprovadas, PassagensReprovadasEdiResponse response, Guid execucaoId) { var sw = new Stopwatch(); sw.Start(); try { TransactionContextHelper.ExecuteTransaction((reprovadas) => { Log.Debug($"ID: {execucaoId} - Início - Staging Passagens Reprovadas Edi - ConectSys."); using (var datasourceConectSys = AdoDataSourceProvider.GetDataSource(DbConnectionDataSourceType.ConectSys)) { try { var detalheTrfRecusados = passagensReprovadas.Any(c => c.DetalheTRFRecusado != null) ? passagensReprovadas.Select(c => c.DetalheTRFRecusado) : null; var detalheTRFRecusadosStaging = Mapper.Map <List <DetalheTRFRecusadoLoteStaging> >((detalheTrfRecusados ?? new List <DetalheTRFRecusadoDto>())); detalheTRFRecusadosStaging.ForEach(x => x.ExecucaoId = execucaoId); datasourceConectSys.Connection.BulkInsert(detalheTRFRecusadosStaging, "DetalheTRFRecusadoLoteStaging"); var veiculos = passagensReprovadas.Any(c => c.Veiculo != null) ? passagensReprovadas.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 transacoesRecusadasParceiro = passagensReprovadas.Any(c => c.TransacaoRecusadaParceiro != null) ? passagensReprovadas.Select(c => c.TransacaoRecusadaParceiro) : null; var transacoesRecusadasParceiroStaging = Mapper.Map <List <TransacaoRecusadaParceiroLoteStaging> >((transacoesRecusadasParceiro ?? new List <TransacaoRecusadaParceiroEdiDto>())); transacoesRecusadasParceiroStaging.ForEach(x => x.ExecucaoId = execucaoId); datasourceConectSys.Connection.BulkInsertTransacoes(transacoesRecusadasParceiroStaging, "TransacaoRecusadaParceiroLoteStaging"); response.QtdDetalheTRFRecusadoStaging = detalheTRFRecusadosStaging.Count; response.QtdVeiculoStaging = veiculosLoteStaging.Count; response.QtdTransacaoRecusadaParceiroStaging = transacoesRecusadasParceiroStaging.Count; } catch (Exception ex) { Log.Fatal($"ID: {execucaoId} - Erro Fatal - Staging Passagens Reprovadas Edi - ConectSys.", ex); response.SucessoStagingConectSys = false; } } Log.Debug($"ID: {execucaoId} - Fim - Staging Passagens Reprovadas Edi - ConectSys."); }, passagensReprovadas); } catch (Exception ex) { Log.Fatal($"ID: {execucaoId} - Erro Fatal. Erro: {ex.Message}", ex); } sw.Stop(); response.TempoExecucaoStagingConectSys = sw.Elapsed; }