Beispiel #1
0
        public int CriarNotificacoesMudancaStatusQuestao(int idQuestao, QuestaoRecurso.StatusQuestao status)
        {
            var qtd          = default(int);
            var questaoRMais = _questaoRepository.IsQuestaoProvaRMais(idQuestao);

            if (!StatusQuestaoNotificaAluno(status, questaoRMais))
            {
                return(qtd);
            }

            var questao = _questaoRepository.GetQuestaoConcursoById(idQuestao);
            ProvaAlunosFavoritoDTO alunos = null;

            if (status == QuestaoRecurso.StatusQuestao.NaoCabeRecurso)
            {
                alunos = _questaoRepository.GetAlunosVotaramForumPre(idQuestao);
            }
            else
            {
                alunos = _exercicioRepository.GetAlunosFavoritaramProva(questao.intProvaID ?? 0);
            }

            if (alunos.MatriculasFavoritaram != null && alunos.MatriculasFavoritaram.Any())
            {
                var metadado = new MetadadoNotificacaoDTO
                {
                    Acao   = "abrir_pagina",
                    Pagina = string.Format("provas/prova/{0}/questao/{1}", questao.intProvaID ?? 0, idQuestao)
                };

                var notificacao        = _notificacaoRepository.Get((int)Constants.Notificacoes.Recursos.StatusQuestaoFavoritos);
                var notificacoesEnviar = new List <NotificacaoPosEventoDTO>();
                foreach (var matricula in alunos.MatriculasFavoritaram)
                {
                    notificacoesEnviar.Add(new NotificacaoPosEventoDTO
                    {
                        Matricula     = matricula,
                        IdNotificacao = notificacao.IdNotificacao,
                        Titulo        = TrocarParametrosMensagemQuestaoProva(
                            notificacao.Titulo, alunos.Prova.Nome, string.Empty, (questao.intOrder ?? 0).ToString()
                            ),
                        Mensagem = TrocarParametrosMensagemQuestaoProva(
                            notificacao.Texto, alunos.Prova.Nome, ObterMensagemStatusQuestao(status), (questao.intOrder ?? 0).ToString()
                            ),
                        Metadados = JsonConvert.SerializeObject(metadado),
                        Ativa     = false
                    });
                }
                var lista = _notificacaoRepository.InserirNotificacoesPosEvento(notificacoesEnviar.ToArray());
                qtd = AtualizarMetadadosAtivarNotificacoes(lista, metadado);
            }
            return(qtd);
        }
Beispiel #2
0
 public Notificacao GetNotificacao(int idNotificacao)
 {
     using (MiniProfiler.Current.Step("Obtendo notificação")) {
         return(_notificacaoRepository.Get(idNotificacao));
     }
 }