Esempio n. 1
0
        private EstatisticaDto ObterProgressoUsuario(List <ResumoQuantitativoHelper> resumosUsuarios,
                                                     UsuarioInfoDTO usuarioInfo, string nomeProjeto)
        {
            var resumosUsuariosAtivos = resumosUsuarios.Where(
                x => Configuracao.Xml.LoginsAtivos(nomeProjeto).Contains(x.Login)).ToList();

            var resumo = resumosUsuariosAtivos.FirstOrDefault(x => x.IdUsuario == usuarioInfo.Id);

            if (resumo == null)
            {
                throw new Exception("Estatística não encontrada");
            }

            EstatisticaDto e = new EstatisticaDto();

            e.Nome   = usuarioInfo.Nome;
            e.Login  = usuarioInfo.Login;
            e.Imagem = usuarioInfo.Imagem;

            e.QuantidadeAtividadesTotal     = resumosUsuarios.Sum(x => x.QuantidadeTarefasConcluidas + x.QuantidadeProblemasConcluidos);
            e.QuantidadeAtividadesJogador   = resumo.QuantidadeTarefasConcluidas + resumo.QuantidadeProblemasConcluidos;
            e.QuantidadeAtividadesPerdidas  = resumo.QuantidadeAtividadesFeitasQueOutroConcluiu;
            e.QuantidadeAtividadesReabertas = resumo.QuantidadeAtividadesConcluidasReabertas;

            e.PorcentagemAtividadesJogador   = CalcularPorcentagem(e.QuantidadeAtividadesJogador, e.QuantidadeAtividadesTotal);
            e.PorcentagemAtividadesPerdidas  = CalcularPorcentagem(e.QuantidadeAtividadesPerdidas, e.QuantidadeAtividadesJogador);
            e.PorcentagemAtividadesReabertas = CalcularPorcentagem(e.QuantidadeAtividadesReabertas, e.QuantidadeAtividadesJogador);

            return(e);
        }
Esempio n. 2
0
        private List <UsuarioInfoDTO> CriarUsuariosInfoDto(List <Constant> constants)
        {
            var dtos = new List <UsuarioInfoDTO>();

            foreach (var itemEntidade in constants)
            {
                var dto = new UsuarioInfoDTO();
                dto.Id     = itemEntidade.ConstId;
                dto.Nome   = itemEntidade.IdentityDisplayName;
                dto.Login  = itemEntidade.NamePart;
                dto.Imagem = itemEntidade.ImageData;

                dtos.Add(dto);
            }

            return(dtos);
        }
        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");
        }
Esempio n. 4
0
        private List <AtividadeDTO> CriarWorkItemsBugDto(List <WorkItemCoreLatest> workItemsCoreLatest, List <WorkItemCoreWere> workItemsCoreWere,
                                                         List <UsuarioInfoDTO> usersInfo, UsuarioInfoDTO currentUser, List <WorkItemCustomLatest> workItemsCustomLatest, List <CampoDTO> fields)
        {
            List <AtividadeDTO> dtos = new List <AtividadeDTO>();

            foreach (var currentEntity in workItemsCoreLatest)
            {
                var workItemsCoreWereDoCurrent = workItemsCoreWere.Where(x => x.PartitionId == currentEntity.PartitionId &&
                                                                         x.DataspaceId == currentEntity.DataspaceId && x.Id == currentEntity.Id).OrderBy(x => x.ChangedDate).ToList();

                //Para verificar se o problema foi resolvido pelo usuário atual,
                //é verificado se a utlima situação de testing está assinada para o mesmo
                var ultimoWorkItemCoreWereTesting = workItemsCoreWereDoCurrent.LastOrDefault(x =>
                                                                                             x.State == WorkItemState.Testing &&
                                                                                             usersInfo.Any(u => u.Id == x.IdUsuarioPadrao));

                //Se estiver assinado pra o usuario corrente, significa que foi ele quem corrigiu o problema
                //Se não, significa que o usuario tem hsitorico de testing, mas o problema foi reaberto e não foi corrigido por ele
                if (ultimoWorkItemCoreWereTesting == null ||
                    ultimoWorkItemCoreWereTesting.IdUsuarioPadrao != currentUser.Id)
                {
                    continue;
                }

                var dto = new AtividadeDTO();

                dto.PartitionId = currentEntity.PartitionId;
                dto.DataspaceId = currentEntity.DataspaceId;
                dto.Id          = currentEntity.Id;
                dto.Ordem       = 0;
                dto.Tipo        = TipoAtividadeEnum.Bug;
                dto.Situacao    = SituacaoAtividadeEnum.Feito;
                dto.Data        = currentEntity.ChangedDate;

                dto.Historico.AddRange(CriarWorkItemHistoricoDto(workItemsCoreWereDoCurrent, usersInfo, TipoAtividadeEnum.Bug));

                var workItemCustomDoCurrent = workItemsCustomLatest.Where(x => x.PartitionId == currentEntity.PartitionId &&
                                                                          x.DataspaceId == currentEntity.DataspaceId && x.Id == currentEntity.Id).ToList();

                dto.CamposValores.AddRange(CriarWorkItemsComValorDosCampos(workItemCustomDoCurrent, fields));

                dtos.Add(dto);
            }

            return(dtos);
        }