public async Task <IActionResult> ExcluirFluxoAutomaticoAcao(int Id_TipoSituacaoAcomodacaoOrigem, int Id_TipoAtividadeAcomodacaoOrigem, int Id_TipoAcaoAcomodacaoOrigem, int Id_TipoSituacaoAcomodacaoDestino, int Id_TipoAtividadeAcomodacaoDestino, int IdEmpresa) { if (Id_TipoSituacaoAcomodacaoOrigem < 1 || Id_TipoAtividadeAcomodacaoOrigem < 1 || Id_TipoAcaoAcomodacaoOrigem < 1 || Id_TipoSituacaoAcomodacaoDestino < 1 || Id_TipoAtividadeAcomodacaoDestino < 1 || IdEmpresa < 1) { return(BadRequest()); } var fluxoAutomaticoAcaoToDelete = _configuracaoContext.FluxoAutomaticoAcaoItems .OfType <FluxoAutomaticoAcaoItem>() .SingleOrDefault(c => c.Id_TipoSituacaoAcomodacaoOrigem == Id_TipoSituacaoAcomodacaoOrigem && c.Id_TipoAtividadeAcomodacaoOrigem == Id_TipoAtividadeAcomodacaoOrigem && c.Id_TipoAcaoAcomodacaoOrigem == Id_TipoAcaoAcomodacaoOrigem && c.Id_TipoSituacaoAcomodacaoDestino == Id_TipoSituacaoAcomodacaoDestino && c.Id_TipoAtividadeAcomodacaoDestino == Id_TipoAtividadeAcomodacaoDestino && c.Id_Empresa == IdEmpresa); if (fluxoAutomaticoAcaoToDelete is null) { return(BadRequest()); } _configuracaoContext.FluxoAutomaticoAcaoItems.Remove(fluxoAutomaticoAcaoToDelete); //Create Integration Event to be published through the Event Bus var FluxoAutomaticoAcaoExclusaoEvent = new FluxoAutomaticoAcaoExcluirIE(fluxoAutomaticoAcaoToDelete.Id_TipoSituacaoAcomodacaoOrigem, fluxoAutomaticoAcaoToDelete.Id_TipoAtividadeAcomodacaoOrigem, fluxoAutomaticoAcaoToDelete.Id_TipoAcaoAcomodacaoOrigem, fluxoAutomaticoAcaoToDelete.Id_TipoSituacaoAcomodacaoDestino, fluxoAutomaticoAcaoToDelete.Id_TipoAtividadeAcomodacaoDestino, fluxoAutomaticoAcaoToDelete.Id_Empresa); // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction await _configuracaoIntegrationEventService.DeleteEventAndFluxoAutomaticoAcaoContextChangesAsync(FluxoAutomaticoAcaoExclusaoEvent); // Publish through the Event Bus and mark the saved event as published await _configuracaoIntegrationEventService.PublishThroughEventBusAsync(FluxoAutomaticoAcaoExclusaoEvent); return(CreatedAtAction(nameof(ExcluirFluxoAutomaticoAcao), null)); }