Пример #1
0
        static void Main(string[] args)
        {
            var          idQuestionario = Guid.NewGuid();
            Questionario questionario   = new Questionario(idQuestionario, "Padrões de Projetos");

            var idPergunta1 = Guid.NewGuid();

            questionario.AddPergunta(idPergunta1, "Qual o padrão de projeto mais utilizado?");

            var idOp1 = Guid.NewGuid();
            var idOp2 = Guid.NewGuid();
            var idOp3 = Guid.NewGuid();
            var idOp4 = Guid.NewGuid();

            questionario.GetPergunta(idPergunta1)
            .AddOpcaoResposta(idOp1, "Visitor", false)
            .AddOpcaoResposta(idOp2, "Memento", false)
            .AddOpcaoResposta(idOp3, "Decorator", false)
            .AddOpcaoResposta(idOp4, "Facade", true);

            Console.WriteLine(questionario.ToString());

            QuestionarioResposta questionarioResposta = new QuestionarioResposta(questionario);

            questionarioResposta.AddResposta(idPergunta1, idOp2);

            Console.WriteLine(questionarioResposta.ToString());
            Console.ReadLine();
        }
        public async Task Create(QuestionarioResposta resposta)
        {
            if (!base.Validate(new QuestionarioRespostaValidation(), resposta))
            {
                return;
            }
            var quiz = await _questionarioService.GetById(resposta.IdQuestionario);

            if (!IsValidQuiz(quiz))
            {
                return;
            }
            if (!await UserCanAnswer(quiz.Id, resposta.IdUsuario))
            {
                return;
            }
            if (!HasValidAnswers(quiz, resposta.Respostas))
            {
                return;
            }

            await _repository.Create(resposta);
        }
Пример #3
0
        public string Executar(string mensagem, string numeroMensagem, Usuario usuario)
        {
            usuarioIntegracao = usuario;
            var  xml      = this.CarregarMensagem <Pollux.MSG0288>(mensagem);
            bool reaberta = false; // Variável de controle de acesso

            List <Intelbras.Message.Helper.Entities.AtendimentoTelefonico> lstAtendimentosTelefonicos = new List <Pollux.Entities.AtendimentoTelefonico>();

            #region Leitura do xml atualização ocorrencia e montagem retorno

            if (xml.AtendimentoTelefonico != null)
            {
                foreach (Pollux.Entities.AtendimentoTelefonico atendimentoTelefonico in xml.AtendimentoTelefonico)
                {
                    if (!string.IsNullOrEmpty(atendimentoTelefonico.ProtocoloTelefonico))
                    {
                        Ocorrencia ocorrencia = new Servicos.RepositoryService(this.Organizacao, this.IsOffline).Ocorrencia.ObterPorProtocoloTelefonico(atendimentoTelefonico.ProtocoloTelefonico);
                        if (ocorrencia != null)
                        {
                            //Reabre a ocorrência, para que salve os dados do protocola de atendimento.
                            bool ocorrenciaEstavaFechada = (ocorrencia.RazaoStatus.Value == (int)StatusDaOcorrencia.Resolvido);
                            if (ocorrenciaEstavaFechada)
                            {
                                (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.ReabrirOcorrencia(ocorrencia);
                                ocorrencia.RazaoStatus  = (int)StatusDaOcorrencia.Aberta;
                                ocorrencia.ManterAberto = true;
                                reaberta = true;
                                ocorrencia.Atualizar();
                            }

                            if (atendimentoTelefonico.DuracaoChamada.HasValue)
                            {
                                ocorrencia.DuracaoChamada = atendimentoTelefonico.DuracaoChamada;
                            }

                            if (!string.IsNullOrEmpty(atendimentoTelefonico.NomeQuestionario))
                            {
                                List <QuestionarioPergunta> lstQuestionarioPergunta = new Servicos.QuestionarioPerguntaServices(this.Organizacao, this.IsOffline).ListarQuestionarioPerguntaPorNomeQuestionario(atendimentoTelefonico.NomeQuestionario);

                                if (atendimentoTelefonico.PesquisaSatisfacao != null)
                                {
                                    if (atendimentoTelefonico.PesquisaSatisfacao.Count > 0)
                                    {
                                        foreach (var pesquisaSatisfacao in atendimentoTelefonico.PesquisaSatisfacao)
                                        {
                                            foreach (var pergunta in lstQuestionarioPergunta)
                                            {
                                                if (pesquisaSatisfacao.Questao == pergunta.Ordem)
                                                {
                                                    List <QuestionarioOpcao> lstOpcoesResposta = new Servicos.QuestionarioOpcaoServices(this.Organizacao, this.IsOffline).ListarQuestionarioOpcaoPor((Guid)pergunta.ID);
                                                    foreach (QuestionarioOpcao opcaoItem in lstOpcoesResposta)
                                                    {
                                                        if (opcaoItem.Nome == pesquisaSatisfacao.ValorPesquisa.ToString())
                                                        {
                                                            //Cria o vínculo da Resposta com a ocorrência
                                                            QuestionarioResposta questionarioRespostaCreate = new QuestionarioResposta();
                                                            questionarioRespostaCreate.QuestionarioOpcao = new Lookup(opcaoItem.Id, "itbc_questionarioresposta");
                                                            questionarioRespostaCreate.QuestionarioRespostaOcorrencia = new Lookup(ocorrencia.Id, "incident");
                                                            new RepositoryService(this.Organizacao, this.IsOffline).QuestionarioResposta.Create(questionarioRespostaCreate);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            if (atendimentoTelefonico.TempoFila.HasValue)
                            {
                                ocorrencia.TempoFila = atendimentoTelefonico.TempoFila;
                            }

                            if (atendimentoTelefonico.TempoWrap.HasValue)
                            {
                                ocorrencia.TempoWrap = atendimentoTelefonico.TempoWrap;
                            }

                            if (!String.IsNullOrEmpty(atendimentoTelefonico.NumeroFilaEntrada))
                            {
                                ocorrencia.NumeroFilaEntrada = atendimentoTelefonico.NumeroFilaEntrada;
                            }

                            if (!String.IsNullOrEmpty(atendimentoTelefonico.CodigoProdutoURA))
                            {
                                ocorrencia.CodigoProdutoURA = atendimentoTelefonico.CodigoProdutoURA;
                            }

                            try
                            {
                                if (reaberta == true) // Entrou no if de cancelada ou resolvida
                                {
                                    ocorrencia.ManterAberto = false;
                                    reaberta = false;
                                    ocorrencia.Atualizar();
                                }
                                else
                                {
                                    ocorrencia.Atualizar();
                                }

                                //Antes de resolver a ocorrência, precisa preencher a resolução
                                SolucaoOcorrencia solucaoOcorrencia = new SolucaoOcorrencia(this.Organizacao, this.IsOffline)
                                {
                                    DataHoraConclusao = DateTime.Now,
                                    Nome         = "Rotina Histórico do Protocolo de atendimento",
                                    OcorrenciaId = ocorrencia.Id
                                };

                                //Fecha a ocorrência, caso ela já estivesse fechada.
                                if (ocorrenciaEstavaFechada)
                                {
                                    (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.FecharOcorrencia(ocorrencia, solucaoOcorrencia);
                                }

                                if (ocorrencia != null)
                                {
                                    Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico();

                                    objPollux.ProtocoloTelefonico = ocorrencia.ProtocoloTelefonico;
                                    objPollux.NumeroOcorrencia    = ocorrencia.Numero;
                                    objPollux.Mensagem            = "Ocorrência atualizada com sucesso!";

                                    lstAtendimentosTelefonicos.Add(objPollux);
                                }
                            } catch (Exception e) {
                                if (ocorrencia != null)
                                {
                                    Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico();

                                    objPollux.ProtocoloTelefonico = ocorrencia.ProtocoloTelefonico;
                                    objPollux.NumeroOcorrencia    = ocorrencia.Numero;
                                    objPollux.Mensagem            = "Falha na atualização da Ocorrência: '" + e.Message + "'.";

                                    lstAtendimentosTelefonicos.Add(objPollux);
                                }
                            }
                        }
                        else
                        {
                            Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico();

                            objPollux.ProtocoloTelefonico = atendimentoTelefonico.ProtocoloTelefonico;
                            objPollux.Mensagem            = "Não encontrou ocorrência com esse Protocolo.";

                            lstAtendimentosTelefonicos.Add(objPollux);
                        }
                    }
                }
            }
            #endregion
            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
            retorno.Add("AtendimentoTelefonicoAtualizado", lstAtendimentosTelefonicos);
            retorno.Add("Resultado", resultadoPersistencia);

            return(CriarMensagemRetorno <Pollux.MSG0288R1>(numeroMensagem, retorno));
        }