public int ObterPontuacaoDePremios(ResumoQuantitativoHelper resumo, PremioEnum premio) { switch (premio) { case PremioEnum.Tarefa: { if (resumo.QuantidadeTarefasConcluidas >= Configuracao.Xml.QuantidadePremioTarefa) { return(Configuracao.Xml.PontuacaoPremioTarefa); } } break; case PremioEnum.Problema: { if (resumo.QuantidadeProblemasConcluidos >= Configuracao.Xml.QuantidadePremioProblema) { return(Configuracao.Xml.PontuacaoPremioProblema); } } break; } return(0); }
public int ObterPontuacaoDeAtividades(ResumoQuantitativoHelper resumo) { int pontuacao = 0; pontuacao = (resumo.QuantidadeTarefasConcluidas + resumo.QuantidadeProblemasConcluidos) * Configuracao.Xml.PontuacaoAtividade; pontuacao = pontuacao - resumo.QuantidadeAtividadesConcluidasReabertas * Configuracao.Xml.PontuacaoAtividadeReaberta; pontuacao = pontuacao + (resumo.QuantidadeAtividadesFazendoQueOutroConcluiu * Configuracao.Xml.PontuacaoAtividadePerdida); return(pontuacao); }
public Dictionary <ResumoQuantitativoHelper, int> ObterPontuacoes(List <ResumoQuantitativoHelper> resumosUsuarios, ResumoQuantitativoHelper resumoSuporte, ResumoQuantitativoHelper resumoHalter, ResumoQuantitativoHelper resumoCerteiro, ResumoQuantitativoHelper resumoAjudante, ResumoQuantitativoHelper resumoSabio) { var dicUsuarioResumoTotal = new Dictionary <ResumoQuantitativoHelper, int>(); foreach (var itemResumo in resumosUsuarios) { int pontuacaoAtividades = ObterPontuacaoDeAtividades(itemResumo); int pontuacaoPremios = 0; pontuacaoPremios += ObterPontuacaoDePremios(itemResumo, PremioEnum.Tarefa); pontuacaoPremios += ObterPontuacaoDePremios(itemResumo, PremioEnum.Problema); int pontuacaoEmblemas = 0; if (itemResumo == resumoSuporte) { pontuacaoEmblemas += ObterPontuacaoDeEmblemas(EmblemaEnum.Suporte); } if (itemResumo == resumoHalter) { pontuacaoEmblemas += ObterPontuacaoDeEmblemas(EmblemaEnum.Halterofilista); } if (itemResumo == resumoCerteiro) { pontuacaoEmblemas += ObterPontuacaoDeEmblemas(EmblemaEnum.Certeiro); } if (itemResumo == resumoAjudante) { pontuacaoEmblemas += ObterPontuacaoDeEmblemas(EmblemaEnum.Ajudante); } if (itemResumo == resumoSabio) { pontuacaoEmblemas += ObterPontuacaoDeEmblemas(EmblemaEnum.Resolvedor); } int pontuacaoTotal = pontuacaoAtividades + pontuacaoPremios + pontuacaoEmblemas; dicUsuarioResumoTotal.Add(itemResumo, pontuacaoTotal); } return(dicUsuarioResumoTotal); }
public ResumoQuantitativoHelper CriarResumoQuantitativo(UsuarioAtividadeDTO usuarioAtividade, List <UsuarioAtividadeDTO> usuariosAtividades) { ResumoQuantitativoHelper detalhe = new ResumoQuantitativoHelper(); detalhe.IdUsuario = usuarioAtividade.UsuarioInfo.Id; detalhe.Login = usuarioAtividade.UsuarioInfo.Login; foreach (var itemAtividade in usuarioAtividade.Atividades) { //Verifica quantas atividades foram feitas bool atividadeTipoTarefa = itemAtividade.Tipo == TipoAtividadeEnum.Tarefa; if (atividadeTipoTarefa) { detalhe.QuantidadeTarefasConcluidas += 1; } else { detalhe.QuantidadeProblemasConcluidos += 1; } //Verifica quantas atividades foram feitas e depois reabertas em nome do usuário corrente var situacaoFeito = itemAtividade.Historico.FirstOrDefault(x => (x.Situacao == SituacaoAtividadeEnum.Feito || x.Situacao == SituacaoAtividadeEnum.Teste) && x.UsuarioInfo == usuarioAtividade.UsuarioInfo); var situacaoFazendoOuAFazer = itemAtividade.Historico.LastOrDefault(x => x.Situacao == SituacaoAtividadeEnum.Fazendo || x.Situacao == SituacaoAtividadeEnum.Afazer); if (situacaoFeito != null && situacaoFazendoOuAFazer != null && situacaoFeito.Ordem < situacaoFazendoOuAFazer.Ordem) { detalhe.QuantidadeAtividadesConcluidasReabertas += 1; } //Verifica estimativas var estimado = itemAtividade.CamposValores.FirstOrDefault(x => x.Campo.Nome == Configuracao.Xml.CampoEstimadoTarefa || x.Campo.Nome == Configuracao.Xml.CampoEstimadoProblema); var realizado = itemAtividade.CamposValores.FirstOrDefault(x => x.Campo.Nome == Configuracao.Xml.CampoRealizadoTarefa || x.Campo.Nome == Configuracao.Xml.CampoRealizadoProblema); if (estimado != null && realizado != null) { detalhe.ValorTotalEstimado += estimado.TipoValor == TipoValorCampoEnumDTO.Numero ? Convert.ToDecimal(estimado.Valor) : 0; detalhe.ValorTotalRealizado += realizado.TipoValor == TipoValorCampoEnumDTO.Numero ? Convert.ToDecimal(realizado.Valor) : 0; } //Verifica se a atividade foi concluida por outro usuário anteriormente if (itemAtividade.Historico.Any(x => x.UsuarioInfo != null && x.Situacao == SituacaoAtividadeEnum.Feito && x.UsuarioInfo != usuarioAtividade.UsuarioInfo)) { detalhe.QuantidadeAtividadesConcluidasQueOutrosFizeram += 1; } } //Verifica informações em relação a atividades de outros ususarios foreach (var itemAtividadeOutroUsuario in usuariosAtividades.Where(x => x.UsuarioInfo != usuarioAtividade.UsuarioInfo).SelectMany(x => x.Atividades)) { var hsitoricoComAlteracoesDoUsuarioCorrente = itemAtividadeOutroUsuario.Historico.Where(x => x.UsuarioInfo == usuarioAtividade.UsuarioInfo); if (hsitoricoComAlteracoesDoUsuarioCorrente.Any(x => x.Situacao == SituacaoAtividadeEnum.Fazendo)) { detalhe.QuantidadeAtividadesFazendoQueOutroConcluiu += 1; } if (hsitoricoComAlteracoesDoUsuarioCorrente.Any(x => x.Situacao == SituacaoAtividadeEnum.Feito || x.Situacao == SituacaoAtividadeEnum.Teste)) { detalhe.QuantidadeAtividadesFeitasQueOutroConcluiu += 1; } } return(detalhe); }