Exemplo n.º 1
0
        internal static async Task <AcaoItem> IncluiAcao(string ConfiguracaoURL, string tokenURL,
                                                         int idEmpresa, int idTipoSituacaoAcomodacao,
                                                         int idTipoAtividadeAcomodacao,
                                                         int Id_AtividadeAcomodacao, int Id_TipoAcaoAcomodacao,
                                                         DateTime dt_InicioAcaoAtividade, DateTime?dt_FimAcaoAtividade,
                                                         string Id_UsuarioExecutor, int IdTipoAcomodacao)
        {
            List <Configuracao.API.TO.ConsultarSLATO> SLAItem = await ConsultaSLAAsync(ConfiguracaoURL,
                                                                                       tokenURL,
                                                                                       idEmpresa,
                                                                                       idTipoSituacaoAcomodacao,
                                                                                       idTipoAtividadeAcomodacao,
                                                                                       Id_TipoAcaoAcomodacao,
                                                                                       IdTipoAcomodacao);

            AcaoItem acaoToSave = new AcaoItem();

            acaoToSave.Id_AtividadeAcomodacao = Id_AtividadeAcomodacao;
            acaoToSave.Id_TipoAcaoAcomodacao  = Id_TipoAcaoAcomodacao;
            acaoToSave.dt_InicioAcaoAtividade = dt_InicioAcaoAtividade;
            acaoToSave.dt_FimAcaoAtividade    = dt_FimAcaoAtividade;
            if ((SLAItem != null) && (SLAItem.Count > 0))
            {
                acaoToSave.Id_SLA = SLAItem[0].Id_SLA;
            }
            acaoToSave.Id_UsuarioExecutor = Id_UsuarioExecutor;

            return(acaoToSave);
        }
Exemplo n.º 2
0
        internal static async Task <EncaminharOut> Encaminhar(string ConfiguracaoURL, string AdministrativoURL, string tokenURL, int idUsuario, int idEmpresa, AtividadeItem atividadeToOrigemEncaminhar, List <TipoAtividade> LstTipoAtividadeToSave, int idTipoAcomodacao, int idAcomodacao)
        {
            List <IntegrationEvent> lstEvt  = new List <IntegrationEvent>();
            List <AtividadeItem>    lstItem = new List <AtividadeItem>();

            foreach (TipoAtividade idTipoAtividade in LstTipoAtividadeToSave)
            {
                AtividadeItem AtividadeToSave = new AtividadeItem();
                AtividadeToSave.Id_SituacaoAcomodacao        = atividadeToOrigemEncaminhar.Id_SituacaoAcomodacao;
                AtividadeToSave.Id_TipoSituacaoAcomodacao    = atividadeToOrigemEncaminhar.Id_TipoSituacaoAcomodacao;
                AtividadeToSave.Id_TipoAtividadeAcomodacao   = (int)idTipoAtividade;
                AtividadeToSave.dt_InicioAtividadeAcomodacao = DateTime.Now;
                AtividadeToSave.dt_FimAtividadeAcomodacao    = null;
                AtividadeToSave.Id_UsuarioSolicitante        = idUsuario;
                AtividadeToSave.Cod_Plus        = "N";
                AtividadeToSave.Cod_Prioritario = "N";

                List <AcaoItem> lstAcaoSave = new List <AcaoItem>();
                AcaoItem        AcaoToSave  = await IncluiAcao(ConfiguracaoURL, tokenURL, idEmpresa, atividadeToOrigemEncaminhar.Id_TipoSituacaoAcomodacao, (int)idTipoAtividade, 0, (int)TipoAcao.SOLICITAR, DateTime.Now, null, idUsuario.ToString(), idTipoAcomodacao);

                lstAcaoSave.Add(AcaoToSave);

                AtividadeToSave.AcaoItems = lstAcaoSave;

                lstItem.Add(AtividadeToSave);

                List <ConsultarAcessoAtividadeEmpresaPerfilTO> Perfis = await ConsultaAcessoPerfilPorTipoSituacaoTipoAtividadeAsync(AdministrativoURL, tokenURL, idEmpresa, AtividadeToSave.Id_TipoSituacaoAcomodacao, AtividadeToSave.Id_TipoAtividadeAcomodacao);

                //Create Integration Event to be published through the Event Bus
                var atividadeSaveEvent = new AtividadeSaveIE(AtividadeToSave.Id_AtividadeAcomodacao,
                                                             AtividadeToSave.Id_SituacaoAcomodacao,
                                                             AtividadeToSave.Id_TipoSituacaoAcomodacao,
                                                             AtividadeToSave.Id_TipoAtividadeAcomodacao,
                                                             AtividadeToSave.dt_InicioAtividadeAcomodacao,
                                                             AtividadeToSave.dt_FimAtividadeAcomodacao,
                                                             AtividadeToSave.Id_UsuarioSolicitante,
                                                             lstAcaoSave,
                                                             AtividadeToSave.Cod_Prioritario,
                                                             AtividadeToSave.Cod_Plus,
                                                             Perfis,
                                                             idAcomodacao);

                lstEvt.Add(atividadeSaveEvent);
            }

            EncaminharOut objReturn = new EncaminharOut();

            objReturn.lstItem = lstItem;
            objReturn.lstEvt  = lstEvt;

            return(objReturn);
        }
Exemplo n.º 3
0
        internal static async Task <List <AtividadeItem> > TrataFluxoSituacao(string ConfiguracaoURL, string tokenURL, int idEmpresa, int idTipoSituacaoAcomodacao, int idTipoAcomodacao)
        {
            //TRATA FLUXO DE TRANSICAO DE SITUACAO

            List <AtividadeItem> lstAt = new List <AtividadeItem>();

            List <ConsultarFluxoAutomaticoSitTO> lsFluxoItem = await ConsultaFluxoSituacaoAsync(ConfiguracaoURL,
                                                                                                tokenURL,
                                                                                                idTipoSituacaoAcomodacao,
                                                                                                idEmpresa);

            if (lsFluxoItem != null && lsFluxoItem.Count() > 0)
            {
                foreach (ConsultarFluxoAutomaticoSitTO Fluxo in lsFluxoItem)
                {
                    AtividadeItem atividadeToSave = new AtividadeItem();
                    atividadeToSave.Id_TipoSituacaoAcomodacao    = Fluxo.Id_TipoSituacaoAcomodacaoDestino;
                    atividadeToSave.Id_TipoAtividadeAcomodacao   = Fluxo.Id_TipoAtividadeAcomodacaoDestino;
                    atividadeToSave.Id_UsuarioSolicitante        = 0;
                    atividadeToSave.dt_InicioAtividadeAcomodacao = DateTime.Now;
                    atividadeToSave.Cod_Prioritario = "N";
                    atividadeToSave.Cod_Plus        = "N";


                    List <Configuracao.API.TO.ConsultarSLATO> SLAItem = await ConsultaSLAAsync(ConfiguracaoURL,
                                                                                               tokenURL,
                                                                                               idEmpresa,
                                                                                               Fluxo.Id_TipoSituacaoAcomodacaoDestino,
                                                                                               Fluxo.Id_TipoAtividadeAcomodacaoDestino,
                                                                                               (int)TipoAcao.SOLICITAR, idTipoAcomodacao);

                    AcaoItem acaoToSave = new AcaoItem();
                    acaoToSave.Id_TipoAcaoAcomodacao  = (int)TipoAcao.SOLICITAR;
                    acaoToSave.dt_InicioAcaoAtividade = DateTime.Now;
                    acaoToSave.Id_UsuarioExecutor     = "0";
                    if (SLAItem != null && SLAItem.Count > 0)
                    {
                        acaoToSave.Id_SLA = SLAItem[0].Id_SLA;
                    }

                    List <AcaoItem> lstAcao = new List <AcaoItem>();
                    atividadeToSave.AcaoItems = lstAcao;
                    atividadeToSave.AcaoItems.Add(acaoToSave);

                    lstAt.Add(atividadeToSave);
                }
            }
            return(lstAt);
        }
Exemplo n.º 4
0
 public async Task SaveEventAndAcaoContextChangesAsync(IntegrationEvent evt, AcaoItem acaoToSave)
 {
     var strategy = _operacionalContext.Database.CreateExecutionStrategy();
     await strategy.ExecuteAsync(async() =>
     {
         using (var transaction = _operacionalContext.Database.BeginTransaction())
         {
             try
             {
                 await _operacionalContext.SaveChangesAsync();
                 //Tratamento de Identity
                 ((Events.AcaoSaveIE)evt).AcaoAtividadeAcomodacaoId = acaoToSave.Id_AcaoAtividadeAcomodacao;
                 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);
             }
         }
     });
 }
Exemplo n.º 5
0
        public async Task <IActionResult> IncluirAtividade(int idEmpresa, [FromBody] AtividadeItem atividadeToSave)
        {
            string msgRule = "";

            if ((idEmpresa < 1))
            {
                return(BadRequest());
            }

            var atividadeToValidate = _operacionalContext.AtividadeItems
                                      .OfType <AtividadeItem>()
                                      .SingleOrDefault(e => e.Id_SituacaoAcomodacao == atividadeToSave.Id_SituacaoAcomodacao && e.Id_TipoAtividadeAcomodacao == atividadeToSave.Id_TipoAtividadeAcomodacao && e.dt_FimAtividadeAcomodacao == null);

            if (atividadeToValidate != null)
            {
                string msgStatus = _localizer["VALIDA_SITUACAOATIVA"];
                return(BadRequest(msgStatus));
            }

            if (atividadeToSave.Cod_Plus == "S" && atividadeToSave.Id_TipoAtividadeAcomodacao != (int)TipoAtividade.HIGIENIZAÇÃO)
            {
                string msgStatus = _localizer["VALIDA_ATIVIDADEHIGIENIZACAO"];
                return(BadRequest(msgStatus));
            }

            string AdministrativoURL = this._settings.AdministrativoURL;
            string tokenURL          = this._settings.TokenURL;

            var situacaoAcomodacaoToConsultar = _operacionalContext.SituacaoItems
                                                .OfType <SituacaoItem>()
                                                .SingleOrDefault(c => c.Id_SituacaoAcomodacao == atividadeToSave.Id_SituacaoAcomodacao);

            int idAcomodacao = situacaoAcomodacaoToConsultar.Id_Acomodacao;

            List <ConsultarTipoAcomodacaoPorIdAcomodacaoTO> tipoAcomodacaoToView = await ConsultaTipoAcomodacaoPorIdAcomodacaoAsync(AdministrativoURL, tokenURL, idEmpresa, idAcomodacao);

            int idTipoAcomodacao = tipoAcomodacaoToView[0].Id_TipoAcomodacao;

            string ConfiguracaoURL = this._settings.ConfiguracaoURL;


            List <Configuracao.API.TO.ConsultarSLATO> SLAItem = await ConsultaSLAAsync(ConfiguracaoURL,
                                                                                       tokenURL,
                                                                                       idEmpresa,
                                                                                       atividadeToSave.Id_TipoSituacaoAcomodacao,
                                                                                       atividadeToSave.Id_TipoAtividadeAcomodacao,
                                                                                       (int)TipoAcao.SOLICITAR, idTipoAcomodacao);

            AcaoItem acaoToSave = new AcaoItem();

            acaoToSave.Id_TipoAcaoAcomodacao  = (int)TipoAcao.SOLICITAR;
            acaoToSave.dt_InicioAcaoAtividade = DateTime.Now;
            acaoToSave.Id_UsuarioExecutor     = atividadeToSave.Id_UsuarioSolicitante.ToString();
            if ((SLAItem != null) && (SLAItem.Count > 0))
            {
                acaoToSave.Id_SLA = SLAItem[0].Id_SLA;
            }

            List <AcaoItem> lst = new List <AcaoItem>();

            atividadeToSave.AcaoItems = lst;
            atividadeToSave.AcaoItems.Add(acaoToSave);

            _operacionalContext.AtividadeItems.Add(atividadeToSave);


            List <ConsultarAcessoAtividadeEmpresaPerfilTO> Perfis = await ConsultaAcessoPerfilPorTipoSituacaoTipoAtividadeAsync(AdministrativoURL, tokenURL, idEmpresa, atividadeToSave.Id_TipoSituacaoAcomodacao, atividadeToSave.Id_TipoAtividadeAcomodacao);

            //Create Integration Event to be published through the Event Bus
            var atividadeSaveEvent = new AtividadeSaveIE(atividadeToSave.Id_AtividadeAcomodacao,
                                                         atividadeToSave.Id_SituacaoAcomodacao,
                                                         atividadeToSave.Id_TipoSituacaoAcomodacao,
                                                         atividadeToSave.Id_TipoAtividadeAcomodacao,
                                                         atividadeToSave.dt_InicioAtividadeAcomodacao,
                                                         atividadeToSave.dt_FimAtividadeAcomodacao,
                                                         atividadeToSave.Id_UsuarioSolicitante,
                                                         atividadeToSave.AcaoItems,
                                                         atividadeToSave.Cod_Prioritario,
                                                         atividadeToSave.Cod_Plus,
                                                         Perfis,
                                                         idAcomodacao);


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


            return(CreatedAtAction(nameof(IncluirAtividade), atividadeToSave.Id_AtividadeAcomodacao));
        }
Exemplo n.º 6
0
        public async Task SaveEventAndGeraAcaoFinalizarAsync(IntegrationEvent evtINI, IntegrationEvent evtFIM, IntegrationEvent evtFIMATIVIDADE, AcaoItem acaoToSave, List <IntegrationEvent> lstEvt, List <AtividadeItem> lst, List <IntegrationEvent> lstRespEvt, List <RespostasChecklistItem> lstResposta)
        {
            var strategy = _operacionalContext.Database.CreateExecutionStrategy();
            await strategy.ExecuteAsync(async() =>
            {
                using (var transaction = _operacionalContext.Database.BeginTransaction())
                {
                    try
                    {
                        await _operacionalContext.SaveChangesAsync();

                        int cont = 0;

                        if (lst != null)
                        {
                            foreach (AtividadeItem Atividade in lst)
                            {
                                AtividadeSaveIE evt = (Events.AtividadeSaveIE)lstEvt[cont];
                                //Tratamento de Identity
                                evt.AtividadeAcomodacaoId = Atividade.Id_AtividadeAcomodacao;
                                if (Atividade.AcaoItems != null)
                                {
                                    evt.AcaoItems[0].Id_AcaoAtividadeAcomodacao = Atividade.AcaoItems[0].Id_AcaoAtividadeAcomodacao;
                                }
                                cont = cont + 1;
                            }
                        }

                        //Tratamento de Identity
                        ((Events.GeraAcaoAcomodacaoIE)evtINI).AcaoAtividadeAcomodacaoId = acaoToSave.Id_AcaoAtividadeAcomodacao;

                        cont = 0;
                        if (lstResposta != null)
                        {
                            foreach (RespostasChecklistItem Resposta in lstResposta)
                            {
                                RespostaChecklistSaveIE evt = (Events.RespostaChecklistSaveIE)lstRespEvt[cont];
                                //Tratamento de Identity
                                evt.RespostasChecklistId = Resposta.Id_RespostasChecklist;
                                cont = cont + 1;
                                lstEvt.Add(evt);
                            }
                        }

                        lstEvt.Add(evtFIM);
                        lstEvt.Add(evtINI);
                        lstEvt.Add(evtFIMATIVIDADE);

                        await _eventLogService.SaveEventAsync(lstEvt, _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);
                    }
                }
            });
        }
Exemplo n.º 7
0
        public async Task SaveEventAndGeraAcaoAsync(IntegrationEvent evtINI, IntegrationEvent evtFIM, AcaoItem acaoToSave, List <IntegrationEvent> lstAtvEvento)
        {
            var strategy = _operacionalContext.Database.CreateExecutionStrategy();
            await strategy.ExecuteAsync(async() =>
            {
                using (var transaction = _operacionalContext.Database.BeginTransaction())
                {
                    try
                    {
                        await _operacionalContext.SaveChangesAsync();

                        List <IntegrationEvent> lst = new List <IntegrationEvent>();

                        //Tratamento de Identity
                        ((Events.GeraAcaoAcomodacaoIE)evtINI).AcaoAtividadeAcomodacaoId = acaoToSave.Id_AcaoAtividadeAcomodacao;

                        lst.Add(evtFIM);
                        lst.Add(evtINI);

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