コード例 #1
0
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            var dadosMensagem = mensagemRabbit.ObterObjetoMensagem <SalvarNotificacaoDevolutivaDto>();

            var turma         = dadosMensagem.Turma;
            var usuarioLogado = dadosMensagem.Usuario;
            var devolutivaId  = dadosMensagem.DevolutivaId;

            var titulares = await mediator.Send(new ObterProfessoresTitularesDaTurmaQuery(turma.CodigoTurma));

            var devolutiva = await mediator.Send(new ObterDevolutivaPorIdQuery(devolutivaId));

            if (titulares != null)
            {
                var mensagem = new StringBuilder($"O usuário {usuarioLogado.Nome} ({usuarioLogado.CodigoRf}) registrou a devolutiva dos diários de bordo da turma <strong>{turma.Nome}</strong> da <strong>{turma.Ue.TipoEscola}-{turma.Ue.Nome}</strong> ({turma.Ue.Dre.Abreviacao}). Esta devolutiva contempla os diários de bordo do período de <strong>{devolutiva.PeriodoInicio:dd/MM/yyyy}</strong> à <strong>{devolutiva.PeriodoFim:dd/MM/yyyy}</strong>.");

                mensagem.AppendLine($"<br/><br/>Acesse o Diário de Bordo de uma das aulas para consultar o conteúdo da devolutiva.");

                if (titulares.Count() == 1)
                {
                    titulares = titulares.FirstOrDefault().Split(',');
                }

                foreach (var titular in titulares)
                {
                    var codigoRf = titular.Trim();

                    if (codigoRf != usuarioLogado.CodigoRf)
                    {
                        var usuario = await mediator.Send(new ObterUsuarioPorRfQuery(codigoRf));

                        if (usuario != null)
                        {
                            var notificacao = new Notificacao()
                            {
                                Ano       = DateTime.Now.Year,
                                Categoria = NotificacaoCategoria.Aviso,
                                Tipo      = NotificacaoTipo.Planejamento,
                                Titulo    = $"Devolutiva do Diário de bordo da turma {turma.Nome}",
                                Mensagem  = mensagem.ToString(),
                                UsuarioId = usuario.Id,
                                TurmaId   = "",
                                UeId      = "",
                                DreId     = "",
                            };

                            await servicoNotificacao.SalvarAsync(notificacao);

                            var notificacaoDevolutiva = new NotificacaoDevolutiva()
                            {
                                NotificacaoId = notificacao.Id,
                                DevolutivaId  = devolutivaId
                            };

                            await repositorioNotificacaoDevolutiva.Salvar(notificacaoDevolutiva);
                        }
                    }
                }
                return(true);
            }
            return(false);
        }
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            var dadosMensagem = mensagemRabbit.ObterObjetoMensagem <SalvarNotificacaoCartaIntencoesObservacaoDto>();

            var turma         = dadosMensagem.Turma;
            var usuarioLogado = dadosMensagem.Usuario;
            var cartaIntencoesObservacaoId = dadosMensagem.CartaIntencoesObservacaoId;

            var titulares = await mediator.Send(new ObterProfessoresTitularesDaTurmaQuery(turma.CodigoTurma));

            if (titulares != null)
            {
                var mensagem = new StringBuilder($"O usuário {usuarioLogado.Nome} ({usuarioLogado.CodigoRf}) inseriu uma nova observação na Carta de intenções da turma <strong>{turma.Nome}</strong> da <strong>{turma.Ue.TipoEscola}-{turma.Ue.Nome}</strong> ({turma.Ue.Dre.Abreviacao}).");

                if (dadosMensagem.Observacao.Trim().Length > 200)
                {
                    mensagem.AppendLine($"<br/><br/>Observação: Acesse Carta de intenções para consultar o conteúdo da observação.");
                }
                else
                {
                    mensagem.AppendLine($"<br/><br/>Observação: {dadosMensagem.Observacao.TrimEnd('.').Trim()}.");
                }

                if (titulares.Count() == 1)
                {
                    titulares = titulares.FirstOrDefault().Split(',');
                }

                foreach (var titular in titulares)
                {
                    var codigoRf = titular.Trim();

                    if (codigoRf != usuarioLogado.CodigoRf)
                    {
                        var usuario = await mediator.Send(new ObterUsuarioPorRfQuery(codigoRf));

                        if (usuario != null)
                        {
                            var notificacao = new Notificacao()
                            {
                                Ano       = DateTime.Now.Year,
                                Categoria = NotificacaoCategoria.Aviso,
                                Tipo      = NotificacaoTipo.Planejamento,
                                Titulo    = $"Nova observação na Carta de intenções da turma {turma.Nome}",
                                Mensagem  = mensagem.ToString(),
                                UsuarioId = usuario.Id,
                                TurmaId   = "",
                                UeId      = "",
                                DreId     = "",
                            };

                            await servicoNotificacao.SalvarAsync(notificacao);

                            var notificacaoObservacao = new NotificacaoCartaIntencoesObservacao()
                            {
                                NotificacaoId = notificacao.Id,
                                CartaIntencoesObservacaoId = cartaIntencoesObservacaoId
                            };

                            await repositorioNotificacaoCartaIntencoesObservacao.Salvar(notificacaoObservacao);
                        }
                    }
                }
                return(true);
            }
            return(false);
        }