public async Task <IActionResult> ExcluirFluxoAutomaticoCheck(int Id_Checklist, int Id_TipoSituacaoAcomodacao, int Id_ItemChecklist, int Id_TipoAtividadeAcomodacao) { if (Id_Checklist < 1 || Id_TipoSituacaoAcomodacao < 1 || Id_ItemChecklist < 1 || Id_TipoAtividadeAcomodacao < 1) { return(BadRequest()); } var fluxoAutomaticoCheckToDelete = _configuracaoContext.FluxoAutomaticoCheckItems .OfType <FluxoAutomaticoCheckItem>() .SingleOrDefault(c => c.Id_Checklist == Id_Checklist && c.Id_TipoSituacaoAcomodacao == Id_TipoSituacaoAcomodacao && c.Id_TipoAtividadeAcomodacao == Id_TipoAtividadeAcomodacao && c.Id_ItemChecklist == Id_ItemChecklist); if (fluxoAutomaticoCheckToDelete is null) { return(BadRequest()); } _configuracaoContext.FluxoAutomaticoCheckItems.Remove(fluxoAutomaticoCheckToDelete); //Create Integration Event to be published through the Event Bus var FluxoAutomaticoCheckExclusaoEvent = new FluxoAutomaticoCheckExcluirIE( fluxoAutomaticoCheckToDelete.Id_Checklist, fluxoAutomaticoCheckToDelete.Id_TipoSituacaoAcomodacao, fluxoAutomaticoCheckToDelete.Id_ItemChecklist, fluxoAutomaticoCheckToDelete.Id_TipoAtividadeAcomodacao); // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction await _configuracaoIntegrationEventService.DeleteEventAndFluxoAutomaticoCheckContextChangesAsync(FluxoAutomaticoCheckExclusaoEvent); // Publish through the Event Bus and mark the saved event as published await _configuracaoIntegrationEventService.PublishThroughEventBusAsync(FluxoAutomaticoCheckExclusaoEvent); return(CreatedAtAction(nameof(ExcluirFluxoAutomaticoCheck), null)); }