Exemplo n.º 1
0
        public async Task <IActionResult> SalvarAcomodacao([FromBody] AcomodacaoItem acomodacaoToSave)
        {
            //AREA DE VALIDACAO
            string msgRule = "";

            if (!ruleValidaCodExternoAcomodacao(acomodacaoToSave.CodExterno_Acomodacao, ref msgRule))
            {
                return(BadRequest(msgRule));
            }

            if (!ruleValidaNomeAcomodacao(acomodacaoToSave.Nome_Acomodacao, ref msgRule))
            {
                return(BadRequest(msgRule));
            }

            //FIM AREA DE VALIDACAO

            if (_administrativoContext.Set <AcomodacaoItem>().Any(e => e.Id_Acomodacao == acomodacaoToSave.Id_Acomodacao))
            {
                _administrativoContext.AcomodacaoItems.Update(acomodacaoToSave);
            }
            else
            {
                _administrativoContext.AcomodacaoItems.Add(acomodacaoToSave);
            }

            //Create Integration Event to be published through the Event Bus
            var acomodacaoSaveEvent = new AcomodacaoSaveIE(acomodacaoToSave.Nome_Acomodacao, acomodacaoToSave.Id_TipoAcomodacao, acomodacaoToSave.Id_Empresa, acomodacaoToSave.Id_Setor, acomodacaoToSave.CodExterno_Acomodacao, acomodacaoToSave.Cod_Isolamento);

            try
            {
                // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction
                await _administrativoIntegrationEventService.SaveEventAndAcomodacaoContextChangesAsync(acomodacaoSaveEvent, acomodacaoToSave);
            }
            catch (Exception e)
            {
                //Validações das CONSTRAINTS do BANCO
                if (ruleValidaNomeAcomodacaoUnique(e.Message, ref msgRule))
                {
                    return(BadRequest(msgRule));
                }
                else
                {
                    return(BadRequest(e.Message));
                }
            }
            // Publish through the Event Bus and mark the saved event as published
            await _administrativoIntegrationEventService.PublishThroughEventBusAsync(acomodacaoSaveEvent);


            return(CreatedAtAction(nameof(SalvarAcomodacao), acomodacaoToSave.Id_Acomodacao));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> IsolarAcomodacao(int idAcomodacao, Isolar isolar)
        {
            string msgRule = "";

            var acomodacaoToSave = _administrativoContext.AcomodacaoItems
                                   .OfType <AcomodacaoItem>()
                                   .SingleOrDefault(e => e.Id_Acomodacao == idAcomodacao);

            if (acomodacaoToSave == null)
            {
                string msgStatus = _localizer["VALIDA_EXISTENCIAACOMODACAO"];
                return(BadRequest(msgStatus));
            }

            acomodacaoToSave.Cod_Isolamento = isolar.ToString();

            _administrativoContext.AcomodacaoItems.Update(acomodacaoToSave);

            //Create Integration Event to be published through the Event Bus
            //Create Integration Event to be published through the Event Bus
            var acomodacaoSaveEvent = new AcomodacaoSaveIE(acomodacaoToSave.Nome_Acomodacao, acomodacaoToSave.Id_TipoAcomodacao, acomodacaoToSave.Id_Empresa, acomodacaoToSave.Id_Setor, acomodacaoToSave.CodExterno_Acomodacao, acomodacaoToSave.Cod_Isolamento);


            try
            {
                // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction
                await _administrativoIntegrationEventService.SaveEventAndAcomodacaoContextChangesAsync(acomodacaoSaveEvent, acomodacaoToSave);
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
            // Publish through the Event Bus and mark the saved event as published
            await _administrativoIntegrationEventService.PublishThroughEventBusAsync(acomodacaoSaveEvent);


            return(CreatedAtAction(nameof(IsolarAcomodacao), "OK"));
        }