public async Task <IActionResult> ExcluirFluxoAutomaticoSituacao(int Id_TipoSituacaoAcomodacaoOrigem, int Id_TipoSituacaoAcomodacaoDestino, int Id_TipoAtividadeAcomodacaoDestino, int IdEmpresa) { if (Id_TipoSituacaoAcomodacaoOrigem < 1 || Id_TipoSituacaoAcomodacaoDestino < 1 || Id_TipoAtividadeAcomodacaoDestino < 1 || IdEmpresa < 1) { return(BadRequest()); } var fluxoAutomaticoAcaoToDelete = _configuracaoContext.FluxoAutomaticoSituacaoItems .OfType <FluxoAutomaticoSituacaoItem>() .SingleOrDefault(c => c.Id_TipoSituacaoAcomodacaoOrigem == Id_TipoSituacaoAcomodacaoOrigem && c.Id_TipoSituacaoAcomodacaoDestino == Id_TipoSituacaoAcomodacaoDestino && c.Id_TipoAtividadeAcomodacaoDestino == Id_TipoAtividadeAcomodacaoDestino && c.Id_Empresa == IdEmpresa); if (fluxoAutomaticoAcaoToDelete is null) { return(BadRequest()); } _configuracaoContext.FluxoAutomaticoSituacaoItems.Remove(fluxoAutomaticoAcaoToDelete); //Create Integration Event to be published through the Event Bus var FluxoAutomaticoSituacaoExclusaoEvent = new FluxoAutomaticoSituacaoExcluirIE(fluxoAutomaticoAcaoToDelete.Id_TipoSituacaoAcomodacaoOrigem, 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.DeleteEventAndFluxoAutomaticoSituacaoContextChangesAsync(FluxoAutomaticoSituacaoExclusaoEvent); // Publish through the Event Bus and mark the saved event as published await _configuracaoIntegrationEventService.PublishThroughEventBusAsync(FluxoAutomaticoSituacaoExclusaoEvent); return(CreatedAtAction(nameof(ExcluirFluxoAutomaticoSituacao), null)); }