Ejemplo n.º 1
0
 public async Task SaveEventAndAtividadeContextChangesAsync(IntegrationEvent evt, AtividadeItem atividadeToSave)
 {
     var strategy = _operacionalContext.Database.CreateExecutionStrategy();
     await strategy.ExecuteAsync(async() =>
     {
         using (var transaction = _operacionalContext.Database.BeginTransaction())
         {
             try
             {
                 await _operacionalContext.SaveChangesAsync();
                 //Tratamento de Identity
                 ((Events.AtividadeSaveIE)evt).AtividadeAcomodacaoId = atividadeToSave.Id_AtividadeAcomodacao;
                 SituacaoItem l_Situacao = _operacionalContext.SituacaoItems.Find(atividadeToSave.Id_SituacaoAcomodacao);
                 ((Events.AtividadeSaveIE)evt).IdAcomodacao = l_Situacao.Id_Acomodacao;
                 await _eventLogService.SaveEventAsync(evt, _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);
             }
         }
     });
 }
Ejemplo n.º 2
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);
                    }
                }
            });
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> IncluirSituacao([FromBody] SituacaoItem situacaoToSave)
        {
            string msgRule = "";

            var situacaoToValidate = _operacionalContext.SituacaoItems
                                     .OfType <SituacaoItem>()
                                     .SingleOrDefault(e => e.Id_SituacaoAcomodacao == situacaoToSave.Id_Acomodacao && e.dt_FimSituacaoAcomodacao == null);

            if (situacaoToValidate != null)
            {
                if (situacaoToValidate.Id_TipoSituacaoAcomodacao == situacaoToSave.Id_TipoSituacaoAcomodacao)
                {
                    string msgStatus = _localizer["VALIDA_SITUACAOATIVA"];
                    return(BadRequest(msgStatus));
                }
                else
                {
                    situacaoToValidate.dt_FimSituacaoAcomodacao = DateTime.Now;
                    _operacionalContext.SituacaoItems.Update(situacaoToValidate);
                }
            }

            _operacionalContext.SituacaoItems.Add(situacaoToSave);

            //Create Integration Event to be published through the Event Bus
            var situacaoSaveEvent = new SituacaoSaveIE(situacaoToSave.Id_SituacaoAcomodacao,
                                                       situacaoToSave.Id_Acomodacao,
                                                       situacaoToSave.Id_TipoSituacaoAcomodacao,
                                                       situacaoToSave.dt_InicioSituacaoAcomodacao,
                                                       situacaoToSave.dt_FimSituacaoAcomodacao,
                                                       situacaoToSave.cod_NumAtendimento,
                                                       situacaoToSave.Id_SLA,
                                                       situacaoToSave.Cod_Prioritario,
                                                       situacaoToSave.AtividadeItems
                                                       );

            try
            {
                // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction
                await _operacionalIntegrationEventService.SaveEventAndSituacaoContextChangesAsync(situacaoSaveEvent, situacaoToSave);
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
            // Publish through the Event Bus and mark the saved event as published
            await _operacionalIntegrationEventService.PublishThroughEventBusAsync(situacaoSaveEvent);


            return(CreatedAtAction(nameof(IncluirSituacao), situacaoToSave.Id_SituacaoAcomodacao));
        }
        public SituacaoItem getSituacao(int id)
        {
            ItemTransporte item = new ItemTransporte()
            {
                Codigo = id, SituacaoAtual = new SituacaoItem()
                {
                    Codigo = 0
                }
            };

            SituacaoItem situacaoAtual = item.SituacaoAtual;

            return(situacaoAtual);
        }
Ejemplo n.º 5
0
        public async Task SaveEventAndInternacaoAsync(IntegrationEvent EvtPac, IntegrationEvent EvtPacAc, IntegrationEvent EvtSitS, IntegrationEvent EvtSitU, PacienteItem pacienteToSave, SituacaoItem situacaoToSave)
        {
            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();
                        //Tratamento de Identity
                        ((Events.PacienteSaveIE)EvtPac).PacienteId = pacienteToSave.Id_Paciente;
                        lst.Add(EvtPac);
                        ((Events.PacienteAcomodacaoSaveIE)EvtPacAc).PacienteId           = pacienteToSave.Id_Paciente;
                        ((Events.PacienteAcomodacaoSaveIE)EvtPacAc).PacienteAcomodacaoId = pacienteToSave.PacienteAcomodacaoItems[0].Id_PacienteAcomodacao;
                        lst.Add(EvtPacAc);

                        ((Events.SituacaoSaveIE)EvtSitS).SituacaoAcomodacaoId = situacaoToSave.Id_SituacaoAcomodacao;
                        lst.Add(EvtSitS);
                        lst.Add(EvtSitU);

                        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);
                    }
                }
            });
        }