public static List <GraficoEscopoCompletudeDTO> CalcularGraficoEscopoCompletude(Guid oidProjeto, Session session) { List <GraficoEscopoCompletudeDTO> lista = new List <GraficoEscopoCompletudeDTO>(); Dictionary <string, GraficoEscopoCompletudeDTO> modulosDic = new Dictionary <string, GraficoEscopoCompletudeDTO>(); //Adiciona os modulos na lista. foreach (Modulo item in Modulo.GetModuloPorProjeto(session, oidProjeto)) { GraficoEscopoCompletudeDTO dto = new GraficoEscopoCompletudeDTO(); dto.Modulo = item.TxNome; dto.TotalPontosModulo = item.NbPontosTotal; lista.Add(dto); modulosDic.Add(dto.Modulo, dto); } //Preenche os dados com as estorias. foreach (Estoria est in Estoria.GetEstoriasPorProjetoByOid(session, oidProjeto)) { if (est.EstoriaFilho.Count <= 0) { string keyMap = Modulo.RnRecuperarModuloRaiz(est.Modulo).TxNome; if (est.CsSituacao.Equals(CsEstoriaDomain.EmDesenv)) { modulosDic[keyMap].PontosEmDesenv += est.NbTamanho; } else if (est.CsSituacao.Equals(CsEstoriaDomain.Pronto)) { modulosDic[keyMap].PontosProntos += est.NbTamanho; } else if (est.CsEmAnalise) { modulosDic[keyMap].PontosEmAnalise += est.NbTamanho; } else { modulosDic[keyMap].PontoNaoIniciados += est.NbTamanho; } modulosDic[keyMap].SomaModulo += est.NbTamanho; } } foreach (GraficoEscopoCompletudeDTO dto in lista) { //Existe desvio ou solicitação de mudança. double diff = dto.SomaModulo - dto.TotalPontosModulo; if (dto.SomaModulo > dto.TotalPontosModulo) { //SOLICITAÇÂO DE MUDANÇA. if (dto.PontoNaoIniciados > 0) { if (dto.PontoNaoIniciados >= diff) { dto.PontoNaoIniciados = dto.PontoNaoIniciados - diff; dto.PontosMudanca = diff; diff = 0; } else { dto.PontosMudanca = dto.PontoNaoIniciados; diff -= dto.PontoNaoIniciados; dto.PontoNaoIniciados = 0; } } if (diff > 0 && dto.PontosEmAnalise > 0) { if (dto.PontosEmAnalise >= diff) { dto.PontosEmAnalise = dto.PontosEmAnalise - diff; dto.PontosMudanca += diff; diff = 0; } else { dto.PontosMudanca += dto.PontosEmAnalise; diff -= dto.PontosEmAnalise; dto.PontosEmAnalise = 0; } } //DESVIO... if (dto.PontosProntos > 0 && dto.PontosProntos > dto.TotalPontosModulo) { double diffDesvio = dto.PontosProntos - dto.TotalPontosModulo; if (dto.PontosProntos >= diffDesvio) { dto.PontosProntos = dto.PontosProntos - diffDesvio; dto.PontosDesvio += diffDesvio; diffDesvio = 0; } else { dto.PontosDesvio += dto.PontosProntos; diffDesvio -= dto.PontosProntos; dto.PontosProntos = 0; } } } else { dto.PontoNaoIniciados += dto.TotalPontosModulo - dto.SomaModulo; } dto.PercNaoInciado = calcPerc(dto.PontoNaoIniciados, dto.TotalPontosModulo); dto.PercEmAnalise = calcPerc(dto.PontosEmAnalise, dto.TotalPontosModulo); dto.PercEmDesenv = calcPerc(dto.PontosEmDesenv, dto.TotalPontosModulo); dto.PercProntos = calcPerc(dto.PontosProntos, dto.TotalPontosModulo); dto.PercMudanca = calcPerc(dto.PontosMudanca, dto.TotalPontosModulo); dto.PercDesvio = calcPerc(dto.PontosDesvio, dto.TotalPontosModulo); } return(lista); }
public static List <GraficoEscopoCompletudeDTO> CalcularGraficoEscopoCompletude(Guid oidProjeto) { List <GraficoEscopoCompletudeDTO> graficos = new List <GraficoEscopoCompletudeDTO>(); Dictionary <string, GraficoEscopoCompletudeDTO> modulos = new Dictionary <string, GraficoEscopoCompletudeDTO>(); using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { //Adiciona os modulos na lista. foreach (WexProject.BLL.Entities.Escopo.Modulo item in ModuloDAO.ConsultarModulos(contexto, oidProjeto)) { GraficoEscopoCompletudeDTO dto = new GraficoEscopoCompletudeDTO(); dto.Modulo = item.TxNome; dto.TotalPontosModulo = item.NbPontosTotal.HasValue ? item.NbPontosTotal.Value : 0; graficos.Add(dto); modulos.Add(dto.Modulo, dto); } //Preenche os dados com as estorias. foreach (WexProject.BLL.Entities.Escopo.Estoria item in EstoriaDAO.ConsultarEstoriasPorProjeto(contexto, oidProjeto)) { if (item.Estorias.Count <= 0) { string keyMap = ModuloBO.RecuperarModuloRaiz(item.Modulo).TxNome; bool emAnalise = item.CsEmAnalise.HasValue ? item.CsEmAnalise.Value : false; if (item.CsSituacao == Convert.ToInt32(CsEstoriaDomain.EmDesenv)) { modulos[keyMap].PontosEmDesenv += Convert.ToDouble(item.NbTamanho); } else if (item.CsSituacao == Convert.ToInt32(CsEstoriaDomain.Pronto)) { modulos[keyMap].PontosProntos += Convert.ToDouble(item.NbTamanho); } else if (emAnalise) { modulos[keyMap].PontosEmAnalise += Convert.ToDouble(item.NbTamanho); } else { modulos[keyMap].PontoNaoIniciados += Convert.ToDouble(item.NbTamanho); } modulos[keyMap].SomaModulo += Convert.ToDouble(item.NbTamanho); } } foreach (GraficoEscopoCompletudeDTO dto in graficos) { //Existe desvio ou solicitação de mudança. double diff = dto.SomaModulo - dto.TotalPontosModulo; if (dto.SomaModulo > dto.TotalPontosModulo) { //SOLICITAÇÂO DE MUDANÇA. if (dto.PontoNaoIniciados > 0) { if (dto.PontoNaoIniciados >= diff) { dto.PontoNaoIniciados = dto.PontoNaoIniciados - diff; dto.PontosMudanca = diff; diff = 0; } else { dto.PontosMudanca = dto.PontoNaoIniciados; diff -= dto.PontoNaoIniciados; dto.PontoNaoIniciados = 0; } } if (diff > 0 && dto.PontosEmAnalise > 0) { if (dto.PontosEmAnalise >= diff) { dto.PontosEmAnalise = dto.PontosEmAnalise - diff; dto.PontosMudanca += diff; diff = 0; } else { dto.PontosMudanca += dto.PontosEmAnalise; diff -= dto.PontosEmAnalise; dto.PontosEmAnalise = 0; } } //DESVIO... if (dto.PontosProntos > 0 && dto.PontosProntos > dto.TotalPontosModulo) { double diffDesvio = dto.PontosProntos - dto.TotalPontosModulo; if (dto.PontosProntos >= diffDesvio) { dto.PontosProntos = dto.PontosProntos - diffDesvio; dto.PontosDesvio += diffDesvio; diffDesvio = 0; } else { dto.PontosDesvio += dto.PontosProntos; diffDesvio -= dto.PontosProntos; dto.PontosProntos = 0; } } } else { dto.PontoNaoIniciados += dto.TotalPontosModulo - dto.SomaModulo; } dto.PercNaoInciado = calcPerc(dto.PontoNaoIniciados, dto.TotalPontosModulo); dto.PercEmAnalise = calcPerc(dto.PontosEmAnalise, dto.TotalPontosModulo); dto.PercEmDesenv = calcPerc(dto.PontosEmDesenv, dto.TotalPontosModulo); dto.PercProntos = calcPerc(dto.PontosProntos, dto.TotalPontosModulo); dto.PercMudanca = calcPerc(dto.PontosMudanca, dto.TotalPontosModulo); dto.PercDesvio = calcPerc(dto.PontosDesvio, dto.TotalPontosModulo); } return(graficos); } }