Exemple #1
0
        public async Task <object> GetWaitingGerente(
            string role,
            string email,
            int?id,
            string numEdital,
            int?clienteId,
            string dataAberturaInicio,
            string dataAberturaFinal,
            int?modalidadeId,
            int?regiaoId,
            int?estadoId,
            int?categoriaId,
            string uasg,
            string consorcio,
            int?portalId,
            int?gerenteId,
            int?diretorId,
            decimal?valorEstimadoInicio,
            decimal?valorEstimadoFinal,
            int?buId
            )
        {
            var editais = await getWaitingGerente.Execute(
                role,
                email,
                id,
                numEdital,
                clienteId,
                dataAberturaInicio,
                dataAberturaFinal,
                modalidadeId,
                regiaoId,
                estadoId,
                categoriaId,
                uasg,
                consorcio,
                portalId,
                gerenteId,
                diretorId,
                valorEstimadoInicio,
                valorEstimadoFinal,
                buId
                );

            List <object> resposta = new List <object>();

            foreach (var edital in editais)
            {
                edital.Gerente.Token = "";
                edital.Gerente.Login = "";

                edital.Diretor.Token = "";
                edital.Diretor.Login = "";

                resposta.Add(new
                {
                    edital.Id,
                    edital.NumEdital,
                    edital.Cliente,
                    edital.Estado,
                    edital.Modalidade,
                    edital.Etapa,
                    edital.DataHoraDeAbertura,
                    edital.Uasg,
                    edital.Categoria,
                    edital.Consorcio,
                    edital.ValorEstimado,
                    edital.AgendarVistoria,
                    edital.DataVistoria,
                    edital.ObjetosDescricao,
                    edital.ObjetosResumo,
                    edital.Observacoes,
                    edital.Regiao,
                    edital.Gerente,
                    edital.Diretor,
                    edital.Portal,
                    Sla   = slaRepository.VerifySlaGerente(edital),
                    Tempo = slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(2, 0, 0, 0) ? slaRepository.GetSlaEditalGerente(edital).Days + " dias" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(1, 0, 0, 0) ? slaRepository.GetSlaEditalGerente(edital).Days + " dia" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(0, 2, 0, 0) ? slaRepository.GetSlaEditalGerente(edital).Hours + " horas" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(0, 1, 0, 0) ? slaRepository.GetSlaEditalGerente(edital).Hours + " hora" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(0, 0, 2, 0) ? slaRepository.GetSlaEditalGerente(edital).Minutes + " minutos" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(0, 0, 1, 0) ? slaRepository.GetSlaEditalGerente(edital).Minutes + " minuto" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(0, 0, 0, 2) ? slaRepository.GetSlaEditalGerente(edital).Seconds + " segundos" :
                            slaRepository.GetSlaEditalGerente(edital) >= new TimeSpan(0, 0, 0, 1) ? slaRepository.GetSlaEditalGerente(edital).Seconds + " segundo" : ""
                });
            }

            return(resposta);
        }
Exemple #2
0
        public static async Task Execute(CancellationToken stoppingToken, ISlaRepository slaRepository)
        {
            var      agora = DateTime.Now;
            DateTime agendamento;

            if (agora.Hour < 5)
            {
                agendamento = new DateTime(agora.Year, agora.Month, agora.Day, 5, 0, 0);
            }
            else
            {
                var temp = agora.AddDays(1);
                agendamento = new DateTime(temp.Year, temp.Month, temp.Day, 5, 0, 0);
            }

            var delay = agendamento - agora;

            await Task.Delay(delay, stoppingToken);

            using var context = new ApiContext();
            var users = context.Usuarios.Include(x => x.Role).AsNoTracking().Where(x => x.Ativo).ToList();

            foreach (var user in users)
            {
                var editaisGerente = await context.Editais
                                     .Include(x => x.Cliente)
                                     .Include(x => x.Estado)
                                     .Include(x => x.Modalidade)
                                     .Include(x => x.Etapa)
                                     .Include(x => x.Categoria)
                                     .Include(x => x.Regiao)
                                     .Include(x => x.Gerente)
                                     .Include(x => x.Portal)
                                     .Where(x => x.Ativo && x.Etapa.Id == 1 && x.Gerente == user)
                                     .AsNoTracking()
                                     .ToListAsync();

                var editaisDiretor = await context.Editais
                                     .Include(x => x.Cliente)
                                     .Include(x => x.Estado)
                                     .Include(x => x.Modalidade)
                                     .Include(x => x.Etapa)
                                     .Include(x => x.Categoria)
                                     .Include(x => x.Regiao)
                                     .Include(x => x.Diretor)
                                     .Include(x => x.Portal)
                                     .Where(x => x.Ativo && x.Etapa.Id == 2 && x.Diretor == user)
                                     .AsNoTracking()
                                     .ToListAsync();

                var edNotOkGerente = new List <Domain.Entities.Edital>();
                var edNotOkDiretor = new List <Domain.Entities.Edital>();

                foreach (var edital in editaisGerente)
                {
                    if (!slaRepository.VerifySlaGerente(edital))
                    {
                        edNotOkGerente.Add(edital);
                    }
                }

                foreach (var edital in editaisDiretor)
                {
                    if (!await slaRepository.VerifySlaDiretor(edital))
                    {
                        edNotOkDiretor.Add(edital);
                    }
                }

                if (edNotOkGerente.Count > 0 || edNotOkDiretor.Count > 0)
                {
                    EmailService.EnviarEmailAlertaSla(user.Nome, user.Email, edNotOkGerente, edNotOkDiretor);
                }
            }
        }