public void GerarNotificacaoItemTrilha(ItemTrilhaParticipacao itemParticipacao) { var enderecoPortal = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal).Registro; var notificacao = new Notificacao { Usuario = itemParticipacao.UsuarioTrilha.Usuario, UsuarioTrilha = itemParticipacao.UsuarioTrilha, DataGeracao = DateTime.Now, DataNotificacao = DateTime.Now, TipoNotificacao = enumTipoNotificacao.Academico, Visualizado = false, Link = enderecoPortal + string.Format("trilha/mapa/{0}", itemParticipacao.UsuarioTrilha.TrilhaNivel.ID) }; var nomeDoItem = itemParticipacao.ItemTrilha.Nome; var nomeTrilha = new ManterItemTrilha().ObterItemTrilhaPorID(itemParticipacao.ItemTrilha.ID) .Missao.PontoSebrae.TrilhaNivel.Trilha.Nome; if (itemParticipacao.Autorizado.HasValue && itemParticipacao.Autorizado.Value) { notificacao.TextoNotificacao = string.Format( "Parabéns, sua participação na Solução Sebrae {0} da trilha {1} foi aprovada!", nomeDoItem, nomeTrilha); } else { notificacao.TextoNotificacao = string.Format( "Sua participação na Solução Sebrae \"{0}\" na trilha {1} precisa ser ajustada. Por favor, edite sua participação. clique aqui", nomeDoItem, nomeTrilha); } try { new BMNotificacao().Salvar(notificacao); } catch { throw new EmailException("Erro ao gerar notificação"); } }
public IList <DTORelatorioStatusUsuariosTrilhas> ObterStatusTrilhas(IEnumerable <int> statusMatricula, int?TrilhaId = null, int?UsuarioId = null, int?NivelTrilha = null, int?NivelOcupacionalId = null, int?UFId = null, DateTime?DataInicio = null, DateTime?DataFim = null, DateTime?DataLimite = null) { var query = new ManterUsuarioTrilha().ObterTodosIQueryable(); var queryItemTrilha = new ManterItemTrilha().ObterTodosIQueryable(); query = UsuarioId.HasValue && UsuarioId.Value != 0 ? query.Where(x => x.Usuario.ID == UsuarioId.Value) : query; query = NivelTrilha.HasValue && NivelTrilha.Value != 0 ? query.Where(x => x.TrilhaNivel.ID == NivelTrilha.Value) : query; query = TrilhaId.HasValue && TrilhaId.Value != 0 ? query.Where(x => x.TrilhaNivel.Trilha.ID == TrilhaId.Value) : query; query = NivelOcupacionalId.HasValue && NivelOcupacionalId.Value != 0 ? query.Where(x => x.NivelOcupacional.ID == NivelOcupacionalId.Value) : query; query = UFId.HasValue && UFId.Value != 0 ? query.Where(x => x.Uf.ID == UFId.Value) : query; query = statusMatricula.Any() ? query.Where(x => statusMatricula.Contains((int)x.StatusMatricula)) : query; query = DataInicio.HasValue ? query.Where(x => x.DataInicio >= DataInicio.Value) : query; query = DataFim.HasValue ? query.Where(x => x.DataFim <= DataFim.Value) : query; query = DataLimite.HasValue ? query.Where(x => x.DataLimite <= DataLimite.Value) : query; return(query.ToList().Select(x => new DTORelatorioStatusUsuariosTrilhas { DataInicio = x.DataInicio, DataFim = x.DataFim?.ToString("dd/MM/yyyy") ?? "--", StatusMatricula = x.StatusMatricula.GetDescription(), DataLimite = x.DataLimite, NivelTrilha = x.TrilhaNivel.Nome, UF = x.Uf.Nome, NivelOcupacional = x.NivelOcupacional.Nome, Trilha = x.TrilhaNivel.Trilha.Nome, EmailUsuario = x.Usuario.Email, NomeUsuario = x.Usuario.Nome, TotalMoedasOuro = x.ObterSomaMoedas(enumTipoMoeda.Ouro), TotalMoedasPrata = x.ObterSomaMoedas(enumTipoMoeda.Prata), CPF = x.Usuario.CPF, Email = x.Usuario.Email, NotaProvaFinal = x.NotaProva?.ToString() ?? "--", DataAlteracaoStatus = x.DataAlteracaoStatus, SprintsRealizados = new ManterPontoSebrae().ObterTodosIqueryable().SelectMany(z => z.ListaPontoSebraeParticipacao).Where(y => y.UsuarioTrilha.ID == x.ID && y.UltimaParticipacao != null).Count(), SolucoesAutoindicativas = queryItemTrilha.Where(y => y.Missao.PontoSebrae.TrilhaNivel.ID == x.TrilhaNivel.ID && y.Ativo == true).Select(y => y.Usuario.ID).Count(i => i == x.Usuario.ID), SolucoesRealizadas = x.ListaItemTrilhaParticipacao.Count(i => i.Autorizado.HasValue && i.Autorizado.Value) }).ToList()); }