Beispiel #1
0
        public async Task <IActionResult> IncluirSetor([FromBody] SetorItem setorToSave)
        {
            Guid gKey;

            gKey = Guid.NewGuid();

            setorToSave.id_Setor = gKey;
            // Update current setor
            _setorContext.SetorItems.Add(setorToSave);


            //if (_settings.UseCache)
            //{
            //    Cache<SetorItem> mycache = new Cache<SetorItem>();
            //    await mycache.SetAsync(cachePrefix + setorToSave.id_Empresa+ setorToSave.id_Setor, setorToSave);
            //}

            //Create Integration Event to be published through the Event Bus
            var setorInclusaoEvent = new SetorInclusaoIntegrationEvent(setorToSave.id_Empresa, setorToSave.id_Setor, setorToSave.nome_Setor);

            // Achieving atomicity between original Catalog database operation and the IntegrationEventLog thanks to a local transaction
            await _setorIntegrationEventService.SaveEventAndSetorContextChangesAsync(setorInclusaoEvent);

            // Publish through the Event Bus and mark the saved event as published
            await _setorIntegrationEventService.PublishThroughEventBusAsync(setorInclusaoEvent);


            return(CreatedAtAction(nameof(IncluirSetor), null));
        }
        public async Task <IActionResult> IncluirMensagem([FromBody] MensagemItem mensagemToSave)
        {
            var atividadeToValidate = _operacionalContext.AtividadeItems
                                      .OfType <AtividadeItem>()
                                      .SingleOrDefault(e => e.Id_AtividadeAcomodacao == mensagemToSave.Id_AtividadeAcomodacao && e.dt_FimAtividadeAcomodacao == null);

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

            _operacionalContext.MensagemItems.Add(mensagemToSave);

            //Create Integration Event to be published through the Event Bus
            var mensagemSaveEvent = new MensagemSaveIE(mensagemToSave.Id_Mensagem,
                                                       mensagemToSave.Id_AtividadeAcomodacao,
                                                       mensagemToSave.dt_EnvioMensagem,
                                                       mensagemToSave.dt_RecebimentoMensagem,
                                                       mensagemToSave.Id_Empresa,
                                                       mensagemToSave.Id_Usuario_Emissor,
                                                       mensagemToSave.Id_Usuario_Destinatario,
                                                       mensagemToSave.TextoMensagem);

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


            return(CreatedAtAction(nameof(IncluirMensagem), mensagemToSave.Id_Mensagem));
        }
Beispiel #3
0
        public async Task <IActionResult> IncluirSituacao([FromBody] SituacaoItem situacaoToSave)
        {
            string msgRule = "";

            var situacaoToValidate = _operacionalContext.SituacaoItems
                                     .OfType <SituacaoItem>()
                                     .SingleOrDefault(e => e.Id_SituacaoAcomodacao == situacaoToSave.Id_Acomodacao && e.dt_FimSituacaoAcomodacao == null);

            if (situacaoToValidate != null)
            {
                if (situacaoToValidate.Id_TipoSituacaoAcomodacao == situacaoToSave.Id_TipoSituacaoAcomodacao)
                {
                    string msgStatus = _localizer["VALIDA_SITUACAOATIVA"];
                    return(BadRequest(msgStatus));
                }
                else
                {
                    situacaoToValidate.dt_FimSituacaoAcomodacao = DateTime.Now;
                    _operacionalContext.SituacaoItems.Update(situacaoToValidate);
                }
            }

            _operacionalContext.SituacaoItems.Add(situacaoToSave);

            //Create Integration Event to be published through the Event Bus
            var situacaoSaveEvent = new SituacaoSaveIE(situacaoToSave.Id_SituacaoAcomodacao,
                                                       situacaoToSave.Id_Acomodacao,
                                                       situacaoToSave.Id_TipoSituacaoAcomodacao,
                                                       situacaoToSave.dt_InicioSituacaoAcomodacao,
                                                       situacaoToSave.dt_FimSituacaoAcomodacao,
                                                       situacaoToSave.cod_NumAtendimento,
                                                       situacaoToSave.Id_SLA,
                                                       situacaoToSave.Cod_Prioritario,
                                                       situacaoToSave.AtividadeItems
                                                       );

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


            return(CreatedAtAction(nameof(IncluirSituacao), situacaoToSave.Id_SituacaoAcomodacao));
        }
Beispiel #4
0
        public async Task <IActionResult> EncaminharAtividade(int idEmpresa, int idUsuario, int IdAtividadeAcomodacao, List <TipoAtividade> LstTipoAtividadeToSave)
        {
            if ((idUsuario < 1) || (IdAtividadeAcomodacao < 1))
            {
                return(BadRequest());
            }

            var atividadeToOrigemEncaminhar = _operacionalContext.AtividadeItems
                                              .OfType <AtividadeItem>()
                                              .SingleOrDefault(c => c.Id_AtividadeAcomodacao == IdAtividadeAcomodacao && c.dt_FimAtividadeAcomodacao == null);

            if (atividadeToOrigemEncaminhar is null)
            {
                return(BadRequest());
            }

            string AdministrativoURL = this._settings.AdministrativoURL;
            string tokenURL          = this._settings.TokenURL;

            var situacaoAcomodacaoToConsultar = _operacionalContext.SituacaoItems
                                                .OfType <SituacaoItem>()
                                                .SingleOrDefault(c => c.Id_SituacaoAcomodacao == atividadeToOrigemEncaminhar.Id_SituacaoAcomodacao);

            int idAcomodacao = situacaoAcomodacaoToConsultar.Id_Acomodacao;

            List <ConsultarTipoAcomodacaoPorIdAcomodacaoTO> tipoAcomodacaoToView = await ConsultaTipoAcomodacaoPorIdAcomodacaoAsync(AdministrativoURL, tokenURL, idEmpresa, idAcomodacao);

            int idTipoAcomodacao = tipoAcomodacaoToView[0].Id_TipoAcomodacao;

            string ConfiguracaoURL = this._settings.ConfiguracaoURL;

            //ENCAMINHAR
            EncaminharOut encaminharToSave = await Encaminhar(ConfiguracaoURL, AdministrativoURL, tokenURL, idUsuario, idEmpresa, atividadeToOrigemEncaminhar, LstTipoAtividadeToSave, idTipoAcomodacao, idAcomodacao);


            List <IntegrationEvent> lstEvt  = new List <IntegrationEvent>();
            List <AtividadeItem>    lstItem = new List <AtividadeItem>();

            lstEvt  = encaminharToSave.lstEvt;
            lstItem = encaminharToSave.lstItem;

            //LISTA DE ATIVIDADES EXISTENTES
            IEnumerable <AtividadeItem> query = _operacionalContext.AtividadeItems
                                                .OfType <AtividadeItem>()
                                                .Where(c => c.Id_SituacaoAcomodacao == atividadeToOrigemEncaminhar.Id_SituacaoAcomodacao && c.dt_FimAtividadeAcomodacao == null);
            List <AtividadeItem> atividadeAcomodacaoExistentes = query.ToList();


            List <int> lstInt = new List <int>();

            foreach (AtividadeItem Atividade in encaminharToSave.lstItem)
            {
                var res = atividadeAcomodacaoExistentes.Find(item => item.Id_TipoAtividadeAcomodacao == Atividade.Id_TipoAtividadeAcomodacao);
                if (res == null)
                {
                    _operacionalContext.AtividadeItems.Add(Atividade);
                }
                else
                {
                    int myindex = lstItem.IndexOf(Atividade);
                    lstInt.Add(myindex);
                }
            }

            var sortedList = lstInt.OrderByDescending(x => x).ToList();

            foreach (int i in sortedList)
            {
                lstItem.RemoveAt(i);
                lstEvt.RemoveAt(i);
            }



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


            return(CreatedAtAction(nameof(EncaminharAtividade), "Ok"));
        }