Ejemplo n.º 1
0
        private void executarAcao(DataGrid grid, Label lbl, int opcao, bool inteiro)
        {
            if (validarExibicaoTabela())
            {
                DataTable          tabela           = new DataTable();
                List <Funcionario> listaFuncionario = new List <Funcionario>();
                List <string>      listaColunas     = new List <string>();
                prepararTabela(tabela, listaFuncionario, listaColunas, inteiro);

                decimal mediaGeral = 0;
                foreach (Funcionario func in listaFuncionario)
                {
                    object[] linha = new object[listaColunas.Count + 2]; // +2 por causa das colunas nome e media
                    linha[0] = func.Nome;
                    decimal media = 0;
                    for (int i = 0; i < listaColunas.Count; i++)
                    {
                        if (opcao == OpcaoIndicador.NUM_TAREFA_POR_SPRINT)
                        {
                            TarefaDAO tDAO = new TarefaDAO();
                            linha[i + 1] = tDAO.recuperarQtdeTarefasPorSprintPorResponsavel(listaColunas[i], func.Codigo);
                        }
                        else if (opcao == OpcaoIndicador.NUM_TAREFA_ESTIMATIVA_MAIOR_TEMPO_GASTO)
                        {
                            TarefaDAO tDAO = new TarefaDAO();
                            linha[i + 1] = tDAO.recuperarQtdeTarefasPorSprintTempoGastoMaiorEstimativa(listaColunas[i], func.Codigo);
                        }
                        else if (opcao == OpcaoIndicador.NUM_TAREFA_TEMPO_GASTO_MAIOR_24)
                        {
                            TarefaDAO tDAO = new TarefaDAO();
                            linha[i + 1] = tDAO.recuperarQtdeTarefasTempoGastoMaior24(listaColunas[i], func.Codigo);
                        }
                        else if (opcao == OpcaoIndicador.NUM_ITEM_POR_SPRINT)
                        {
                            ItemBacklogDAO ibDAO = new ItemBacklogDAO();
                            linha[i + 1] = ibDAO.recuperarQtdeItensPorSprintPorResponsavel(listaColunas[i], func.Codigo);
                        }
                        else if (opcao == OpcaoIndicador.COMPLEXIDADE_ITEM_POR_SPRINT)
                        {
                            // =SOMARPRODUTO(($Backlog.$E$2:$E$200=B$2)*($Backlog.$R$2:$R$200>0)*($Backlog.$I$2:$I$200))/SOMARPRODUTO(($Backlog.$E$2:$E$200=B$2)*($Backlog.$R$2:$R$200>0))
                            // E = Planejado Para
                            // R = Somatorio numero tarefas do funcionario no item de backlog
                            // I = Complexidade do Item

                            ItemBacklogDAO ibDAO = new ItemBacklogDAO();
                            linha[i + 1] = ibDAO.recuperarComplexidadeItensPorSprintPorResponsavel(listaColunas[i], func.Codigo);
                        }
                        else if (opcao == OpcaoIndicador.NUM_DEFEITO_POR_ITEM_BACKLOG)
                        {
                            // =SOMARPRODUTO(($Backlog.$E$2:$E$200=B$2)*($Backlog.$R$2:$R$200>0)*($Backlog.$M$2:$M$200))/SOMARPRODUTO(($Backlog.$E$2:$E$200=B$2)*($Backlog.$R$2:$R$200>0))
                            // M = Quantidade de defeitos do Item

                            DefeitoDAO dDAO = new DefeitoDAO();
                            linha[i + 1] = dDAO.recuperarMediaDefeitosPorSprintPorResponsavel(listaColunas[i], func.Codigo);
                        }
                        else if (opcao == OpcaoIndicador.NUM_DEFEITO_CORRIGIDO_POR_SPRINT)
                        {
                            // =SOMARPRODUTO(($Backlog.$E$2:$E$200=B$2)*($Backlog.$R$2:$R$200>0)*($Backlog.$M$2:$M$200))/SOMARPRODUTO(($Backlog.$E$2:$E$200=B$2)*($Backlog.$R$2:$R$200>0))
                            // M = Quantidade de defeitos do Item

                            DefeitoDAO dDAO = new DefeitoDAO();
                            linha[i + 1] = dDAO.recuperarDefeitosCorrigidosResponsavel(listaColunas[i], func.Codigo);
                        }
                        else
                        {
                            linha[i + 1] = i;
                        }
                        media += Convert.ToDecimal(linha[i + 1]);
                    }
                    mediaGeral += Decimal.Round((media / listaColunas.Count), 2);
                    linha[listaColunas.Count + 1] = Decimal.Round((media / listaColunas.Count), 2);
                    tabela.Rows.Add(linha);
                }
                lbl.Content = Decimal.Round((mediaGeral / tabela.Rows.Count), 2);;
                preencherGrid(grid, tabela);
            }
        }