public virtual bool UsuarioConcluiu(UsuarioTrilha matricula) { try { var solucoesSebrae = ListaItemTrilha.Where( x => x.Usuario == null && x.Missao.PontoSebrae.TrilhaNivel.ID == matricula.TrilhaNivel.ID) .AsQueryable(); if (!solucoesSebrae.Any()) { return(false); } var retorno = solucoesSebrae.All( it => it.ObterStatusParticipacoesItemTrilha(matricula) == enumStatusParticipacaoItemTrilha.Aprovado); return(retorno); } catch (Exception) { return(false); } }
public ItemTrilhaAvaliacao(string resenha, int avaliacao, UsuarioTrilha usuarioTrilha, ItemTrilha itemTrilha) { Resenha = resenha; Avaliacao = avaliacao; UsuarioTrilha = usuarioTrilha; ItemTrilha = itemTrilha; }
/// <summary> /// Retorna true caso o usuário já tenha avaliado o item trilha em questão /// </summary> /// <param name="usuario"></param> /// <returns></returns> public virtual bool ChecarAvaliacao(UsuarioTrilha usuario) { if (usuario != null) { return(Avaliacoes.Any(x => x.UsuarioTrilha.ID == usuario.ID)); } return(false); }
public virtual string ObterTexto(Trilha trilha, UsuarioTrilha matricula, LogLider logLider = null, ItemTrilha solucaoSebrae = null, Missao missao = null, PontoSebrae pontoSebrae = null, string corPin = null, TrilhaTutorial trilhaTutorial = null) { try { // Caso tenha um tutorial vinculado if (Tipo == enumTipoMensagemGuia.Tutorial && trilhaTutorial != null) { var tutorial = Tutoriais.FirstOrDefault(x => x.ID == trilhaTutorial.ID); if (tutorial != null && !string.IsNullOrEmpty(tutorial.Conteudo)) { return(tutorial.Conteudo); } } // Para cada momento, precisa obter os dados personalizados de acordo com a necessidade. string texto; switch (ID) { // Esses cases aqui são os que não precisam concatenar nenhum dado. Se isso mudar um dia, // tem que mudar aqui. case enumMomento.PrimeiroAcessoMapa: case enumMomento.PrimeiroAcessoMochila: case enumMomento.PrimeiraTentativaCambio: case enumMomento.PossuirMoedasProvaFinal: case enumMomento.PrimeiroAcessoCriacaoSolucaoTrilheiro: texto = Texto; break; case enumMomento.PrimeiroAcessoLoja: if (pontoSebrae == null) { throw new Exception("Ponto Sebrae é obrigatório."); } texto = Texto.Replace("#NOME_PONTO_SEBRAE", pontoSebrae.NomeExibicao); break; case enumMomento.PrimeiroLiderLojaUltimoAcesso: case enumMomento.AlteracaoLiderLojaUltimoAcesso: if (logLider == null || logLider.Lider == null || logLider.Tempo == null) { texto = Texto; break; } texto = string.Format(Texto, logLider.Lider.Usuario.Nome, logLider.Tempo != null ? logLider.Lider.ObterTempoConclusaoFormatado(logLider.Tempo) : "0s"); if (pontoSebrae == null) { throw new Exception("Ponto Sebrae é obrigatório."); } texto = texto.Replace("#NOME_PONTO_SEBRAE", pontoSebrae.NomeExibicao); break; case enumMomento.PrimeiraConclusaoSolucaoSebrae: if (solucaoSebrae == null) { throw new Exception("Solução Sebrae é obrigatória."); } texto = string.Format(Texto, solucaoSebrae.Tipo.Nome, solucaoSebrae.Moedas ?? 0, solucaoSebrae.Missao.PontoSebrae.TrilhaNivel.QuantidadeMoedasProvaFinal ?? 0); texto = texto.Replace("#NOME_SOLUCAO_SEBRAE", solucaoSebrae.Nome); break; // A mensagem é a mesma para a primeira e as demais missões concluídas. Se isso mudar um dia, // tem que mudar aqui. case enumMomento.PrimeiraConclusaoMissao: case enumMomento.DemaisConclusoesMissao: if (missao == null) { throw new Exception("Missão é obrigatória."); } texto = Texto.Replace("#NOME_PONTO_SEBRAE", missao.Nome); break; // Os cases abaixo estão juntos porque o dado concatenado é idêntico nos dois casos. Se isso // mudar um dia, tem que mudar aqui. case enumMomento.ConclusoesTodasSolucoesLoja: case enumMomento.ConcluirMetadeSolucoesLoja: if (solucaoSebrae == null) { throw new Exception("Solução Sebrae é obrigatória."); } if (pontoSebrae == null) { throw new Exception("Ponto Sebrae é obrigatório."); } texto = Texto.Replace("#NOME_PONTO_SEBRAE", pontoSebrae.NomeExibicao); break; case enumMomento.EvoluirPin: texto = string.Format(Texto, corPin); break; case enumMomento.DemaisConclusoesSolucaoSebrae: if (solucaoSebrae == null) { throw new Exception("Solução Sebrae é obrigatória."); } if (pontoSebrae == null) { throw new Exception("Ponto Sebrae é obrigatório."); } texto = string.Format(Texto, solucaoSebrae.Tipo.Nome, solucaoSebrae.Moedas ?? 0); texto = texto.Replace("#NOME_PONTO_SEBRAE", pontoSebrae.NomeExibicao); break; default: throw new ArgumentOutOfRangeException(); } if (trilha == null) { throw new Exception("A trilha é obrigatória para gerar a mensagem da guia"); } if (matricula == null) { throw new Exception("A matrícula é obrigatória para gerar a mensagem da guia"); } texto = texto .Replace("#NOME_ALUNO", matricula.Usuario.Nome) .Replace("#NOME_TRILHA", trilha.Nome) .Replace("#NOME_NIVEL", matricula.TrilhaNivel.Nome) .Replace("#DATA_MATRICULA", matricula.DataInicio.ToShortDateString()) .Replace("#DATA_LIMITE", matricula.DataLimite.ToShortDateString()); return(texto); } catch (Exception ex) { // ReSharper disable once PossibleIntendedRethrow throw ex; } }
public virtual bool DeveExibirMensagem(UsuarioTrilha matricula) { return(ListaUsuarioTrilhaMensagemGuia.All(x => x.UsuarioTrilha.ID != matricula.ID)); }
public virtual dynamic ObterLideres(UsuarioTrilha matricula, string enderecoSgus) { var matriculaLideres = ListaPontoSebrae.Select(x => x.ObterLiderDetalhado(enderecoSgus)); return(matriculaLideres.Where(x => x.Id == matricula.Usuario.ID).ToList()); }
public virtual enumStatusParticipacaoItemTrilha?ObterStatusParticipacoesItemTrilha(UsuarioTrilha usuarioTrilha) { if (Tipo == null) { return(null); } switch ((enumTipoItemTrilha)Tipo.ID) { case enumTipoItemTrilha.Solucoes: var participacaoSolucao = ListaItemTrilhaParticipacao .Where(x => x.UsuarioTrilha.ID == usuarioTrilha.ID && x.MatriculaOferta != null) .OrderBy(x => x.MatriculaOferta.ID) .LastOrDefault(); if (participacaoSolucao == null || participacaoSolucao.MatriculaOferta == null) { return(enumStatusParticipacaoItemTrilha.NaoInscrito); } //CASO UMA MATRICULA N TIVER APROVADA E A OFERTA N ESTIVER MAIS ABERTA, CONSIDERAR COMO NAO INSCRITO if (!participacaoSolucao.MatriculaOferta.IsAprovado() && !participacaoSolucao.MatriculaOferta.Oferta.IsPrazoConclusao()) { return(enumStatusParticipacaoItemTrilha.NaoInscrito); } if (participacaoSolucao.MatriculaOferta.StatusMatricula == enumStatusMatricula.Abandono) { return(enumStatusParticipacaoItemTrilha.Abandono); } if (participacaoSolucao.Autorizado != true && participacaoSolucao.MatriculaOferta.MatriculaTurma.Any(x => x.Turma.DataFinal.HasValue && x.Turma.DataFinal.Value <= DateTime.Now.Date)) { return(enumStatusParticipacaoItemTrilha.Reprovado); } if (participacaoSolucao.MatriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito) { return(enumStatusParticipacaoItemTrilha.EmAndamento); } if (participacaoSolucao.Autorizado != true) { return(enumStatusParticipacaoItemTrilha.EmAndamento); } return(enumStatusParticipacaoItemTrilha.Aprovado); case enumTipoItemTrilha.Discursiva: var participacoes = ListaItemTrilhaParticipacao.Where(itp => itp.UsuarioTrilha.ID == usuarioTrilha.ID) .ToList(); if (!participacoes.Any()) { return(enumStatusParticipacaoItemTrilha.NaoInscrito); } if (participacoes.Any(x => x.Autorizado == true)) { return(enumStatusParticipacaoItemTrilha.Aprovado); } var ultimaParticipacao = participacoes.LastOrDefault(); if (ultimaParticipacao != null && ultimaParticipacao.TipoParticipacao == enumTipoParticipacaoTrilha.ParticipacaoTrilheiro) { return(enumStatusParticipacaoItemTrilha.Pendente); } var ultimaParticipacaoTrilheiro = participacoes.LastOrDefault( x => x.TipoParticipacao == enumTipoParticipacaoTrilha.ParticipacaoTrilheiro); // Se chegou aqui, a última participação pode ser do monitor, então busca a última participação // do monitor e verifica se ela exista e foi autorizada. if (ultimaParticipacao != null && ultimaParticipacaoTrilheiro != null && ultimaParticipacao.TipoParticipacao == enumTipoParticipacaoTrilha.InteracaoMonitor && ultimaParticipacaoTrilheiro.Autorizado == false) { return(enumStatusParticipacaoItemTrilha.Revisar); } return(enumStatusParticipacaoItemTrilha.NaoInscrito); case enumTipoItemTrilha.Jogo: case enumTipoItemTrilha.Atividade: // Se for atividade, somente a última participação é que interessa. var participacao = ListaItemTrilhaParticipacao.LastOrDefault(x => x.UsuarioTrilha.ID == usuarioTrilha.ID); if (participacao == null) { return(enumStatusParticipacaoItemTrilha.NaoInscrito); } if (participacao.Autorizado == true) { return(enumStatusParticipacaoItemTrilha.Aprovado); } return(enumStatusParticipacaoItemTrilha.EmAndamento); case enumTipoItemTrilha.ConheciGame: return(enumStatusParticipacaoItemTrilha.EmAndamento); } return(null); }
public virtual bool UsuarioConcluiu(UsuarioTrilha matricula) { return (ListaItemTrilha.Where(x => x.PodeExibir() && x.Usuario == null && x.Missao.PontoSebrae.TrilhaNivel.ID == matricula.ID).All( x => x.ObterStatusParticipacoesItemTrilha(matricula) == enumStatusParticipacaoItemTrilha.Aprovado)); }