public async Task VerificaRegraAlteracaoFrequencia(long registroFrequenciaId, DateTime criadoEm, DateTime alteradoEm, long usuarioAlteracaoId) { int anoAtual = DateTime.Now.Year; // Parametro do sistema de dias para notificacao var qtdDiasParametroString = await repositorioParametrosSistema.ObterValorPorTipoEAno( TipoParametroSistema.QuantidadeDiasNotificarAlteracaoChamadaEfetivada, anoAtual); var parseado = int.TryParse(qtdDiasParametroString, out int qtdDiasParametro); if (!parseado) { SentrySdk.CaptureEvent(new SentryEvent(new Exception($"Não foi encontrado parametro ativo para o tipo 'QuantidadeDiasNotificarAlteracaoChamadaEfetivada' para o ano de {anoAtual}"))); return; } var qtdDiasAlteracao = (alteradoEm.Date - criadoEm.Date).TotalDays; // Verifica se ultrapassou o limite de dias para alteração if (qtdDiasAlteracao < qtdDiasParametro) { return; } var usuariosNotificacao = new List <(Cargo?, Usuario)>(); // Dados da Aula var registroFrequencia = repositorioFrequencia.ObterAulaDaFrequencia(registroFrequenciaId); MeusDadosDto professor = await servicoEOL.ObterMeusDados(registroFrequencia.ProfessorRf); // Gestores var usuarios = BuscaGestoresUe(registroFrequencia.CodigoUe); if (usuarios != null) { usuariosNotificacao.AddRange(usuarios); } // Supervisores usuarios = BuscaSupervisoresUe(registroFrequencia.CodigoUe, usuariosNotificacao.Select(u => u.Item1)); if (usuarios != null) { usuariosNotificacao.AddRange(usuarios); } foreach (var usuario in usuariosNotificacao) { NotificaAlteracaoFrequencia(usuario.Item2, registroFrequencia, professor.Nome); } }
public void VerificaRegraAlteracaoFrequencia(long registroFrequenciaId, DateTime criadoEm, DateTime alteradoEm, long usuarioAlteracaoId) { // Parametro do sistema de dias para notificacao var qtdDiasParametro = int.Parse(repositorioParametrosSistema.ObterValorPorTipoEAno( TipoParametroSistema.QuantidadeDiasNotificarAlteracaoChamadaEfetivada, DateTime.Now.Year)); var qtdDiasAlteracao = (alteradoEm.Date - criadoEm.Date).TotalDays; // Verifica se ultrapassou o limite de dias para alteração if (qtdDiasAlteracao >= qtdDiasParametro) { var usuariosNotificacao = new List <(Cargo?, Usuario)>(); // Dados da Aula var registroFrequencia = repositorioFrequencia.ObterAulaDaFrequencia(registroFrequenciaId); MeusDadosDto professor = servicoEOL.ObterMeusDados(registroFrequencia.ProfessorRf).Result; // Gestores var usuarios = BuscaGestoresUe(registroFrequencia.CodigoUe); if (usuarios != null) { usuariosNotificacao.AddRange(usuarios); } // Supervisores usuarios = BuscaSupervisoresUe(registroFrequencia.CodigoUe, usuariosNotificacao.Select(u => u.Item1)); if (usuarios != null) { usuariosNotificacao.AddRange(usuarios); } foreach (var usuario in usuariosNotificacao) { NotificaAlteracaoFrequencia(usuario.Item2, registroFrequencia, professor.Nome); } } }
public void NotificarCompensacaoAusencia(long compensacaoId) { // Verifica se compensação possui alunos vinculados var alunos = repositorioCompensacaoAusenciaAluno.ObterPorCompensacao(compensacaoId).Result; if (alunos == null || !alunos.Any()) { return; } // Verifica se possui aluno não notificado na compensação alunos = alunos.Where(a => !a.Notificado); if (!alunos.Any()) { return; } // Carrega dados da compensacao a notificar var compensacao = repositorioCompensacaoAusencia.ObterPorId(compensacaoId); var turma = repositorioTurma.ObterPorId(compensacao.TurmaId); var ue = repositorioUe.ObterUEPorTurma(turma.CodigoTurma); var dre = repositorioDre.ObterPorId(ue.DreId); var disciplinaEOL = ObterNomeDisciplina(compensacao.DisciplinaId); MeusDadosDto professor = servicoEOL.ObterMeusDados(compensacao.CriadoRF).Result; // Carrega dados dos alunos não notificados var alunosTurma = servicoEOL.ObterAlunosPorTurma(turma.CodigoTurma).Result; var alunosDto = new List <CompensacaoAusenciaAlunoQtdDto>(); foreach (var aluno in alunos) { var alunoEol = alunosTurma.FirstOrDefault(a => a.CodigoAluno == aluno.CodigoAluno); alunosDto.Add(new CompensacaoAusenciaAlunoQtdDto() { NumeroAluno = alunoEol.NumeroAlunoChamada, CodigoAluno = aluno.CodigoAluno, NomeAluno = alunoEol.NomeAluno, QuantidadeCompensacoes = aluno.QuantidadeFaltasCompensadas }); } var gestores = BuscaGestoresUe(ue.CodigoUe); if (gestores != null && gestores.Any()) { foreach (var gestor in gestores) { var notificacaoId = NotificarCompensacaoAusencia(compensacaoId , gestor.Usuario , professor.Nome , professor.CodigoRf , disciplinaEOL , turma.CodigoTurma , turma.Nome , turma.ModalidadeCodigo.GetAttribute <DisplayAttribute>().ShortName , ue.CodigoUe , ue.Nome , ue.TipoEscola.GetAttribute <DisplayAttribute>().ShortName , dre.CodigoDre , dre.Nome , compensacao.Bimestre , compensacao.Nome , alunosDto); // Grava vinculo de notificação x compensação repositorioNotificacaoCompensacaoAusencia.Inserir(notificacaoId, compensacaoId); } // Marca aluno como notificado alunosDto.ForEach(alunoDto => { var aluno = alunos.FirstOrDefault(a => a.CodigoAluno == alunoDto.CodigoAluno); aluno.Notificado = true; repositorioCompensacaoAusenciaAluno.Salvar(aluno); }); } }