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); }