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);
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }