Пример #1
0
        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);
                    }
                }
            });
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }