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");
            }
        }
Пример #2
0
        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());
        }