public List <string> CriarSugestoes(ProgressoDto progressoDto, bool houveReabertas, bool houvePerdidas, int qtdParticipantes) { List <string> lista = new List <string>(); if (progressoDto.Posicao == qtdParticipantes) { lista.Add("Você está na ultima colocação. Precisamos melhorar esse quadro."); } switch (progressoDto.Posicao) { case 2: lista.Add("A primeira posição está bem a sua frente. Continue com o bom trabalho e suba mais degraus."); break; case 3: lista.Add("O pódio é seu. Continue com o bom trabalho e suba mais degraus."); break; case 4: lista.Add("Você está perto do pódio. Continue com o bom trabalho e suba mais degraus."); break; default: break; } if (!progressoDto.Emblemas.Any()) { lista.Add("Além de ganhar pontos extras, o emblema o diferencia dos demais jogadores em algum aspecto. Tente atender os critérios."); } if (!progressoDto.Premios.Any()) { lista.Add("Atenda as expectativas. Conquiste os prêmios definidos e ganhe pontos extras."); } if (houveReabertas) { lista.Add("Você teve várias atividades reabertas e isso faz com que você não alcance a pontuação máxima. Faça mais testes para ter certeza que as concluiu antes de fechá-las."); } if (houvePerdidas) { lista.Add("Após concluir as atividades, as mesmas foram reabertas e outro jogador as fechou. Preste mais atenção para não perder os pontos."); } return(lista); }
private ProgressoModel ParseToProgressoModel(ProgressoDto dto) { ProgressoModel model = new ProgressoModel(); model.Nome = dto.Nome; model.Login = dto.Login; model.Pontuacao = dto.Pontuacao; model.Posicao = dto.Posicao; model.ImagemByte = dto.Imagem; model.Sugestoes = dto.Sugestoes; model.PremioTarefa = dto.Premios.Any(x => x == PremioEnum.Tarefa); model.PremioProblema = dto.Premios.Any(x => x == PremioEnum.Problema); model.EmblemaAjudante = dto.Emblemas.Any(x => x == EmblemaEnum.Ajudante); model.EmblemaCerteiro = dto.Emblemas.Any(x => x == EmblemaEnum.Certeiro); model.EmblemaHalter = dto.Emblemas.Any(x => x == EmblemaEnum.Halterofilista); model.EmblemaSuporte = dto.Emblemas.Any(x => x == EmblemaEnum.Suporte); model.EmblemaResolvedor = dto.Emblemas.Any(x => x == EmblemaEnum.Resolvedor); return(model); }
private ProgressoDto ObterProgressoUsuario(List <ResumoQuantitativoHelper> resumosUsuarios, UsuarioInfoDTO usuarioInfo, string nomeProjeto) { var resumosUsuariosAtivos = resumosUsuarios.Where( x => Configuracao.Xml.LoginsAtivos(nomeProjeto).Contains(x.Login)).ToList(); var resumoSuporte = ObterQuemAtendeCriterioPorEmblema(resumosUsuariosAtivos, EmblemaEnum.Suporte); var resumoHalter = ObterQuemAtendeCriterioPorEmblema(resumosUsuariosAtivos, EmblemaEnum.Halterofilista); var resumoCerteiro = ObterQuemAtendeCriterioPorEmblema(resumosUsuariosAtivos, EmblemaEnum.Certeiro); var resumoAjudante = ObterQuemAtendeCriterioPorEmblema(resumosUsuariosAtivos, EmblemaEnum.Ajudante); var resumoSabio = ObterQuemAtendeCriterioPorEmblema(resumosUsuariosAtivos, EmblemaEnum.Resolvedor); var dicUsuarioResumoPontuacao = ObterPontuacoes(resumosUsuariosAtivos, resumoSuporte, resumoHalter, resumoCerteiro, resumoAjudante, resumoSabio); int posicao = 0; foreach (var itemDicUsuarioResumo in dicUsuarioResumoPontuacao.OrderByDescending(x => x.Value)) { posicao += 1; var resumo = itemDicUsuarioResumo.Key; if (resumo.IdUsuario != usuarioInfo.Id) { continue; } int pontuacao = itemDicUsuarioResumo.Value; ProgressoDto p = new ProgressoDto(); p.Nome = usuarioInfo.Nome; p.Login = usuarioInfo.Login; p.Pontuacao = pontuacao; p.Posicao = posicao; p.Imagem = usuarioInfo.Imagem; if (resumo.QuantidadeTarefasConcluidas >= Configuracao.Xml.QuantidadePremioTarefa) { p.Premios.Add(PremioEnum.Tarefa); } if (resumo.QuantidadeProblemasConcluidos >= Configuracao.Xml.QuantidadePremioProblema) { p.Premios.Add(PremioEnum.Problema); } if (resumo == resumoSuporte) { p.Emblemas.Add(EmblemaEnum.Suporte); } if (resumo == resumoHalter) { p.Emblemas.Add(EmblemaEnum.Halterofilista); } if (resumo == resumoCerteiro) { p.Emblemas.Add(EmblemaEnum.Certeiro); } if (resumo == resumoAjudante) { p.Emblemas.Add(EmblemaEnum.Ajudante); } if (resumo == resumoSabio) { p.Emblemas.Add(EmblemaEnum.Resolvedor); } bool houveReabertas = resumo.QuantidadeAtividadesConcluidasReabertas != 0; bool houvePerdidas = resumo.QuantidadeAtividadesFeitasQueOutroConcluiu != 0; p.Sugestoes = CriarSugestoes(p, houveReabertas, houvePerdidas, resumosUsuariosAtivos.Count); return(p); } throw new Exception("Progresso não encontrado"); }