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