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