public async Task <IActionResult> IncluirSetor([FromBody] SetorItem setorToSave) { Guid gKey; gKey = Guid.NewGuid(); setorToSave.id_Setor = gKey; // Update current setor _setorContext.SetorItems.Add(setorToSave); //if (_settings.UseCache) //{ // Cache<SetorItem> mycache = new Cache<SetorItem>(); // await mycache.SetAsync(cachePrefix + setorToSave.id_Empresa+ setorToSave.id_Setor, setorToSave); //} //Create Integration Event to be published through the Event Bus var setorInclusaoEvent = new SetorInclusaoIntegrationEvent(setorToSave.id_Empresa, setorToSave.id_Setor, setorToSave.nome_Setor); // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction await _setorIntegrationEventService.SaveEventAndSetorContextChangesAsync(setorInclusaoEvent); // Publish through the Event Bus and mark the saved event as published await _setorIntegrationEventService.PublishThroughEventBusAsync(setorInclusaoEvent); return(CreatedAtAction(nameof(IncluirSetor), null)); }
public async Task <IActionResult> IncluirMensagem([FromBody] MensagemItem mensagemToSave) { var atividadeToValidate = _operacionalContext.AtividadeItems .OfType <AtividadeItem>() .SingleOrDefault(e => e.Id_AtividadeAcomodacao == mensagemToSave.Id_AtividadeAcomodacao && e.dt_FimAtividadeAcomodacao == null); if (atividadeToValidate == null) { string msgStatus = _localizer["VALIDA_ATIVIDADEATIVA"]; return(BadRequest(msgStatus)); } _operacionalContext.MensagemItems.Add(mensagemToSave); //Create Integration Event to be published through the Event Bus var mensagemSaveEvent = new MensagemSaveIE(mensagemToSave.Id_Mensagem, mensagemToSave.Id_AtividadeAcomodacao, mensagemToSave.dt_EnvioMensagem, mensagemToSave.dt_RecebimentoMensagem, mensagemToSave.Id_Empresa, mensagemToSave.Id_Usuario_Emissor, mensagemToSave.Id_Usuario_Destinatario, mensagemToSave.TextoMensagem); try { // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction await _operacionalIntegrationEventService.SaveEventAndMensagemContextChangesAsync(mensagemSaveEvent, mensagemToSave); } catch (Exception e) { return(BadRequest(e.Message)); } // Publish through the Event Bus and mark the saved event as published await _operacionalIntegrationEventService.PublishThroughEventBusAsync(mensagemSaveEvent); return(CreatedAtAction(nameof(IncluirMensagem), mensagemToSave.Id_Mensagem)); }
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 async Task <IActionResult> EncaminharAtividade(int idEmpresa, int idUsuario, int IdAtividadeAcomodacao, List <TipoAtividade> LstTipoAtividadeToSave) { if ((idUsuario < 1) || (IdAtividadeAcomodacao < 1)) { return(BadRequest()); } var atividadeToOrigemEncaminhar = _operacionalContext.AtividadeItems .OfType <AtividadeItem>() .SingleOrDefault(c => c.Id_AtividadeAcomodacao == IdAtividadeAcomodacao && c.dt_FimAtividadeAcomodacao == null); if (atividadeToOrigemEncaminhar is null) { return(BadRequest()); } string AdministrativoURL = this._settings.AdministrativoURL; string tokenURL = this._settings.TokenURL; var situacaoAcomodacaoToConsultar = _operacionalContext.SituacaoItems .OfType <SituacaoItem>() .SingleOrDefault(c => c.Id_SituacaoAcomodacao == atividadeToOrigemEncaminhar.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; //ENCAMINHAR EncaminharOut encaminharToSave = await Encaminhar(ConfiguracaoURL, AdministrativoURL, tokenURL, idUsuario, idEmpresa, atividadeToOrigemEncaminhar, LstTipoAtividadeToSave, idTipoAcomodacao, idAcomodacao); List <IntegrationEvent> lstEvt = new List <IntegrationEvent>(); List <AtividadeItem> lstItem = new List <AtividadeItem>(); lstEvt = encaminharToSave.lstEvt; lstItem = encaminharToSave.lstItem; //LISTA DE ATIVIDADES EXISTENTES IEnumerable <AtividadeItem> query = _operacionalContext.AtividadeItems .OfType <AtividadeItem>() .Where(c => c.Id_SituacaoAcomodacao == atividadeToOrigemEncaminhar.Id_SituacaoAcomodacao && c.dt_FimAtividadeAcomodacao == null); List <AtividadeItem> atividadeAcomodacaoExistentes = query.ToList(); List <int> lstInt = new List <int>(); foreach (AtividadeItem Atividade in encaminharToSave.lstItem) { var res = atividadeAcomodacaoExistentes.Find(item => item.Id_TipoAtividadeAcomodacao == Atividade.Id_TipoAtividadeAcomodacao); if (res == null) { _operacionalContext.AtividadeItems.Add(Atividade); } else { int myindex = lstItem.IndexOf(Atividade); lstInt.Add(myindex); } } var sortedList = lstInt.OrderByDescending(x => x).ToList(); foreach (int i in sortedList) { lstItem.RemoveAt(i); lstEvt.RemoveAt(i); } try { // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction await _operacionalIntegrationEventService.SaveEventAndAtividadeContextChangesAsync(lstEvt, lstItem); } catch (Exception e) { return(BadRequest(e.Message)); } // Publish through the Event Bus and mark the saved event as published await _operacionalIntegrationEventService.PublishThroughEventBusAsync(lstEvt); return(CreatedAtAction(nameof(EncaminharAtividade), "Ok")); }