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