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); }
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"); }
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); }