예제 #1
0
        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);
        }
예제 #2
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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }