コード例 #1
0
        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));
        }