public bool UsuarioNotificado(long usuarioId, TipoNotificacaoFrequencia tipo) { var query = @"select 0 from notificacao_frequencia f inner join notificacao n on n.codigo = f.notificacao_codigo where n.usuario_id = @usuarioId and f.tipo = @tipo"; return(database.Conexao.Query <int>(query, new { usuarioId, tipo }).Any()); }
public IEnumerable <AulasPorTurmaDisciplinaDto> ObterAulasSemRegistroFrequencia(string turmaId, string disciplinaId, TipoNotificacaoFrequencia tipoNotificacao) { var query = @"select a.id, a.professor_rf as professorId, a.data_aula as dataAula, a.quantidade from aula a where not a.excluido and not a.migrado and not exists ( select 1 from notificacao_frequencia n where n.aula_id = a.id and n.tipo = @tipoNotificacao) and not exists ( select 1 from registro_frequencia r where r.aula_id = a.id) and a.data_aula < date(now()) and a.turma_id = @turmaId and a.disciplina_id = @disciplinaId" ; IEnumerable <AulasPorTurmaDisciplinaDto> lista = new List <AulasPorTurmaDisciplinaDto>(); try { lista = database.Conexao.Query <AulasPorTurmaDisciplinaDto>(query, new { turmaId, disciplinaId, tipoNotificacao }); } catch (Exception ex) { SentrySdk.CaptureEvent(new SentryEvent(ex)); SentrySdk.CaptureEvent(new SentryEvent(new NegocioException($"ObterAulasSemRegistroFrequencia - {turmaId} - {disciplinaId}"))); } return(lista); }
private void NotificarAusenciaFrequencia(TipoNotificacaoFrequencia tipo, ref List <(string, Cargo?)> cargosNotificados)
public IEnumerable <RegistroFrequenciaFaltanteDto> ObterTurmasSemRegistroDeFrequencia(TipoNotificacaoFrequencia tipoNotificacao) { var query = @"select distinct a.turma_id as CodigoTurma, t.nome as NomeTurma , ue.ue_id as CodigoUe, ue.nome as NomeUe , dre.dre_id as CodigoDre, dre.nome as NomeDre , a.disciplina_id as DisciplinaId from aula a inner join turma t on t.turma_id = a.turma_id inner join ue on ue.id = t.ue_id inner join dre on dre.id = ue.dre_id where not a.excluido and not a.migrado and not exists ( select 1 from notificacao_frequencia n where n.aula_id = a.id and n.tipo = @tipoNotificacao) and not exists ( select 1 from registro_frequencia r where r.aula_id = a.id) and a.data_aula < date(now()) order by dre.dre_id, ue.ue_id, a.turma_id" ; return(database.Conexao.Query <RegistroFrequenciaFaltanteDto>(query, new { tipoNotificacao }, commandTimeout: 600)); }
private IEnumerable <(Cargo?, Usuario)> BuscaUsuarioNotificacao(RegistroFrequenciaFaltanteDto turma, TipoNotificacaoFrequencia tipo) { IEnumerable <(Cargo?, Usuario)> usuarios = Enumerable.Empty <(Cargo?, Usuario)>(); switch (tipo) { case TipoNotificacaoFrequencia.Professor: usuarios = BuscaProfessorAula(turma); break; case TipoNotificacaoFrequencia.GestorUe: usuarios = BuscaGestoresUe(turma.CodigoUe); break; case TipoNotificacaoFrequencia.SupervisorUe: usuarios = BuscaSupervisoresUe(turma.CodigoUe, usuarios.Select(u => u.Item1)); break; default: usuarios = BuscaProfessorAula(turma); break; } return(usuarios); }