public async Task <IActionResult> ExcluirTipoSituacaoAcomodacao(int id_TipoSituacaoAcomodacao) { if (id_TipoSituacaoAcomodacao < 1) { return(BadRequest()); } var tipoSituacaoAcomodacaoToDelete = _configuracaoContext.TipoSituacaoAcomodacaoItems .OfType <TipoSituacaoAcomodacaoItem>() .SingleOrDefault(c => c.Id_TipoSituacaoAcomodacao == id_TipoSituacaoAcomodacao); if (tipoSituacaoAcomodacaoToDelete is null) { return(BadRequest()); } _configuracaoContext.TipoSituacaoAcomodacaoItems.Remove(tipoSituacaoAcomodacaoToDelete); //Create Integration Event to be published through the Event Bus var TipoSituacaoAcomodacaoExclusaoEvent = new TipoSituacaoAcomodacaoExclusaoIE(tipoSituacaoAcomodacaoToDelete.Id_TipoSituacaoAcomodacao); // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction await _configuracaoIntegrationEventService.DeleteEventAndTipoSituacaoAcomodacaoContextChangesAsync(TipoSituacaoAcomodacaoExclusaoEvent); // Publish through the Event Bus and mark the saved event as published await _configuracaoIntegrationEventService.PublishThroughEventBusAsync(TipoSituacaoAcomodacaoExclusaoEvent); return(CreatedAtAction(nameof(ExcluirTipoSituacaoAcomodacao), null)); }