public async Task SaveEventAndTransferenciaAsync(IntegrationEvent EvtFimSitOr, IntegrationEvent EvtFimSitDs, IntegrationEvent EvtSitNewOr, IntegrationEvent EvtSitNewDs, IntegrationEvent EvtPacNewOr, IntegrationEvent EvtPacNewDs, SituacaoItem sitOrToSave, SituacaoItem sitDsToSave, PacienteAcomodacaoItem pacToSaveOr, PacienteAcomodacaoItem pacToSaveDs, List <IntegrationEvent> lstAtvEvento) { List <IntegrationEvent> lst = new List <IntegrationEvent>(); var strategy = _operacionalContext.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = _operacionalContext.Database.BeginTransaction()) { try { await _operacionalContext.SaveChangesAsync(); lst.Add(EvtFimSitOr); lst.Add(EvtFimSitDs); //Tratamento de Identity ((Events.SituacaoSaveIE)EvtSitNewOr).SituacaoAcomodacaoId = sitOrToSave.Id_SituacaoAcomodacao; lst.Add(EvtSitNewOr); ((Events.SituacaoSaveIE)EvtSitNewDs).SituacaoAcomodacaoId = sitDsToSave.Id_SituacaoAcomodacao; lst.Add(EvtSitNewDs); ((Events.PacienteAcomodacaoSaveIE)EvtPacNewOr).PacienteAcomodacaoId = pacToSaveOr.Id_PacienteAcomodacao; lst.Add(EvtPacNewOr); ((Events.PacienteAcomodacaoSaveIE)EvtPacNewDs).PacienteAcomodacaoId = pacToSaveDs.Id_PacienteAcomodacao; lst.Add(EvtPacNewDs); foreach (IntegrationEvent AtvEVT in lstAtvEvento) { lst.Add(AtvEVT); } await _eventLogService.SaveEventAsync(lst, _operacionalContext.Database.CurrentTransaction.GetDbTransaction()); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); var sqlException = ex.InnerException as System.Data.SqlClient.SqlException; throw new Exception(sqlException.Number + "::" + sqlException.Message); } } }); }
private static Valid <bool> ValidaExistePacienteAcomodacao(OperacionalContext context, IOptionsSnapshot <OperacionalSettings> settings, IStringLocalizer <IntegracaoController> localizer, int IdEmpresa, int IdAcomodacao, int IdPaciente) { OperacionalSettings _settings; _settings = settings.Value; IStringLocalizer <IntegracaoController> _localizer; _localizer = localizer; Valid <bool> vl = new Valid <bool>(); //CONSULTA SE O PACIENTE ESTÁ ATIVO NA ACOMODACAO var pacienteToValidate = context.PacienteAcomodacaoItems .OfType <PacienteAcomodacaoItem>() .SingleOrDefault(c => c.Id_Acomodacao == IdAcomodacao && c.Dt_Saida == null && c.Id_Paciente == IdPaciente); //VALIDA SE A ACOMODACAO TEM UM PACIENTE ATIVO if (pacienteToValidate == null) { PacienteAcomodacaoItem pac = new PacienteAcomodacaoItem(); pac.Id_Paciente = IdPaciente; pac.Id_Acomodacao = IdAcomodacao; pac.Dt_Entrada = DateTime.Now; context.PacienteAcomodacaoItems.Add(pac); } vl.retorno = true; vl.msg = "SUCESSO"; return(vl); }
private static Valid <bool> ValidaExistePacienteCadastrado(OperacionalContext context, IOptionsSnapshot <OperacionalSettings> settings, IStringLocalizer <IntegracaoController> localizer, int IdEmpresa, int IdAcomodacao, string CodExternoPaciente, string NomePaciente, DateTime DataNascimentoPaciente, string GeneroPaciente ) { OperacionalSettings _settings; _settings = settings.Value; IStringLocalizer <IntegracaoController> _localizer; _localizer = localizer; Valid <bool> vl = new Valid <bool>(); //CONSULTA O PACIENTE var pacienteToExist = context.PacienteItems .OfType <PacienteItem>() .SingleOrDefault(c => c.Cod_Externo == CodExternoPaciente); //VALIDA SE EXISTE O PACIENTE if (pacienteToExist == null) { //INCLUI PACIENTE PacienteItem pacienteToSave = new PacienteItem(); pacienteToSave.Nome_Paciente = NomePaciente; pacienteToSave.Dt_NascimentoPaciente = DataNascimentoPaciente; pacienteToSave.GeneroPaciente = GeneroPaciente; pacienteToSave.Cod_Externo = CodExternoPaciente; pacienteToSave.PendenciaFinanceira = "N"; //ASSOCIA O PACIENTE List <PacienteAcomodacaoItem> lstPacienteAcomodacao = new List <PacienteAcomodacaoItem>(); PacienteAcomodacaoItem pacienteAcomodacaoToSave = new PacienteAcomodacaoItem(); pacienteAcomodacaoToSave.Id_Acomodacao = IdAcomodacao; pacienteAcomodacaoToSave.NumAtendimento = "INTERNO"; pacienteAcomodacaoToSave.Dt_Entrada = DateTime.Now; pacienteAcomodacaoToSave.Dt_Saida = null; lstPacienteAcomodacao.Add(pacienteAcomodacaoToSave); pacienteToSave.PacienteAcomodacaoItems = lstPacienteAcomodacao; context.PacienteItems.Add(pacienteToSave); } else { //ATUALIZA pacienteToExist.Nome_Paciente = NomePaciente; pacienteToExist.Dt_NascimentoPaciente = DataNascimentoPaciente; pacienteToExist.GeneroPaciente = GeneroPaciente; pacienteToExist.PendenciaFinanceira = "N"; //VALIDA ASSOCIACAO //SENAO ESTA ASSOCIADO ASSOCIA. ValidaExistePacienteAcomodacao(context, settings, localizer, IdEmpresa, IdAcomodacao, pacienteToExist.Id_Paciente); context.PacienteItems.Update(pacienteToExist); } vl.retorno = true; vl.msg = "SUCESSO"; return(vl); }