/** * Método que lista os ensino de acordo com os filtros e com o * usuário logado * * @param Filtros $filtros Objeto do sistema de filtros * * * @return ResultSetHydrator Um objeto contendo os ensinos * relacionados a consulta feita */ public function listar(Filtros $filtros, Usuario $usrFiltro = null) { $sqlEnsino = new SqlEnsino(); if ($usrFiltro instanceof Usuario) { $usuario = $usrFiltro; } else { $usuario = $this->usuarioLogado; } switch ($usuario->getPerfil()->getId()) { case Perfil::COORDENADOR: $coordenador = new Coordenador($usuario->getId()); return $sqlEnsino->deCoordenador($coordenador, $filtros); case Perfil::ALUNO: $coordenador = new Aluno($usuario->getId()); return $sqlEnsino->deAluno($coordenador, $filtros); case Perfil::PROFESSOR: $professor = new Professor($usuario->getId()); return $sqlEnsino->deProfessor($professor, $filtros); default: return $sqlEnsino->listarTodos($filtros); } }
/** * Método que gera a planilha de evolução anual por unidade e ano */ public function evolucaoAnual() { //Inicializando os filtros usados na página $this->filtro->initGets(array("unidade", "ano")); //Inicializando os objetos básicos $sqlUnidade = new SqlUnidade(); $sqlSerie = new SqlSerie(); $sqlEnsino = new SqlEnsino(); $sqlAfa = new SqlAfa(); //Contadores em geral $linha = 0; //Define a linha inicial da impressão da planilha $coluna = 0; //Define a coluna inicial da planilha $colunaInicial = $coluna; $r = 1; //Contador "R" das planilhas //Objetos e variaveis básicas da planilha $conceitos = array("D" => "Deficiente", "I" => "Insuficiente", "R" => "Regular", "B" => "Bom", "L" => "Louvor"); $bimestres = array("1" => "1º Bimestre", "2" => "2º Bimestre", "3" => "3º Bimestre", "4" => "4º Bimestre"); $bimRomanos = array("1" => "I", "2" => "II", "3" => "III", "4" => "IV"); //Fazendo as consultas iniciais $ensinos = $sqlEnsino->listarTodos($this->filtro); $avaliacoea = $sqlAfa; $avaliacoes = $afaObj->listarAvaliacoes($unidade, $ano); die("ok"); //Iniciando a geração da planilha while ($ensino = $ensinos->fetchObject()) { $avaliacoes = $afaObj->buscarAvaliacoes($ensino->pk_ensino, $unidade, $ano); //Teste para somente exibir as plainlhas de ensinos que contenham registros if (count($avaliacoes)) { //Ajustando a primeira coluna $this->workSheet->getColumnDimensionByColumn($coluna)->setWidth(33); //Trecho referente a primeira planilha //PREENCHENDO A PRIMEIRA PLANILHA //Definindo o título da planiplha $tituloPlanilhas = "TABELA R" . $r++ . " – DISTRIBUIÇÃO PERCENTUAL DOS CONCEITOS " . "FORMATIVOS DOS ALUNOS DO " . strtoupper($ensino->nome_ensino) . " EM CADA BIMESTRE"; $this->workSheet->setCellValueByColumnAndRow($coluna, ++$linha, $tituloPlanilhas)->getStyleByColumnAndRow($coluna, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FFF2CC")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $this->workSheet->getStyleByColumnAndRow($coluna, $linha)->getFont()->setBold(TRUE); //Tornando a font bolder // $linhaReferencia = $linha; $linha++; $coluna++; //Criando o cabeçalho da primeira planilha foreach ($bimestres as $bimestre) { $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, $bimestre)->getStyleByColumnAndRow($coluna, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $this->workSheet->mergeCellsByColumnAndRow($coluna, $linha, $coluna + 4, $linha); //Mesclando as colunas $coluna += 5; } $this->workSheet->getStyleByColumnAndRow(--$coluna, $linha)->applyFromArray(array('borders' => array('right' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000'))))); $coluna = $colunaInicial; //Resetando o contador de colunas // Adicionando as colunas indicadoras de níveis $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, "Série")->getStyleByColumnAndRow($coluna, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER)->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $this->workSheet->mergeCellsByColumnAndRow($coluna, $linha, $coluna++, ++$linha); //Mesclando as colunas // foreach (range(0, 3) as $indice) { foreach (array_keys($conceitos) as $letra) { $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, $letra)->getStyleByColumnAndRow($coluna++, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); } } //Mesclando o título da planilha $this->workSheet->mergeCellsByColumnAndRow($colunaInicial, $linhaReferencia, --$coluna, $linhaReferencia); $this->workSheet->getStyleByColumnAndRow($coluna, $linhaReferencia)->applyFromArray(array('borders' => array('right' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000'))))); // $linha++; //Definindo as variaveis para calculo de médias $mdD1B = $mdI1B = $mdR1B = $mdB1B = $mdL1B = array(); $mdD2B = $mdI2B = $mdR2B = $mdB2B = $mdL2B = array(); $mdD3B = $mdI3B = $mdR3B = $mdB3B = $mdL3B = array(); $mdD4B = $mdI4B = $mdR4B = $mdB4B = $mdL4B = array(); $this->workSheet->getStyleByColumnAndRow(--$coluna, $linha)->applyFromArray(array('borders' => array('right' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000'))))); $coluna = $colunaInicial; //Resetando o contador de colunas //adicionando as séries da primeira coluna foreach ($avaliacoes as $avaliacao) { $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, $avaliacao["serie_nome"])->getStyleByColumnAndRow($coluna++, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //Separando os dados foreach (array_keys($bimestres) as $bimestre) { foreach (array_keys($conceitos) as $conceito) { $comando = '$qt' . $conceito . $bimestre . 'B = (float) ' . '(isset($avaliacao["qt-' . strtolower($conceito) . '-' . $bimestre . 'bi"]) ' . '? $avaliacao["qt-' . strtolower($conceito) . '-' . $bimestre . 'bi"] : 0.0);'; eval($comando); } $comando = '$qt' . $bimestre . 'B = (float) (isset($avaliacao["qt-' . $bimestre . 'bi"]) ' . '? $avaliacao["qt-' . $bimestre . 'bi"] : 0.0);'; eval($comando); } //Definindo os percentudais foreach (array_keys($bimestres) as $bimestre) { foreach (array_keys($conceitos) as $conceito) { $comando = '$per' . $conceito . $bimestre . 'B = ' . 'Matematica::percentualDe($qt' . $conceito . $bimestre . 'B, $qt' . $bimestre . 'B);'; eval($comando); $comando = 'array_push($md' . $conceito . $bimestre . 'B, $per' . $conceito . $bimestre . 'B);'; eval($comando); } } //Adicionando os valores da coluna foreach (array_keys($bimestres) as $bimestre) { foreach (array_keys($conceitos) as $conceito) { $comando = '$this->workSheet->setCellValueByColumnAndRow($coluna, ' . '$linha, $per' . $conceito . $bimestre . 'B) ->getStyleByColumnAndRow($coluna++, $linha) ->applyFromArray(//Aplicando formatação a celula array( "fill" => array( "type" => PHPExcel_Style_Fill::FILL_SOLID, "color" => array("rgb" => "FFF2CC") ), "borders" => array( "allborders" => array( "style" => PHPExcel_Style_Border::BORDER_THIN, "color" => array("argb" => "000000"), ) ) ) ) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);'; eval($comando); } } // $coluna = $colunaInicial; //Resetando o contador de colunas $linha++; //Incrementando a linha } //Definindo o texto da linha de médias $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, "MÉDIA")->getStyleByColumnAndRow($coluna++, $linha)->applyFromArray(array("fill" => array("type" => PHPExcel_Style_Fill::FILL_SOLID, "color" => array("rgb" => "FCE4D6")), "borders" => array("allborders" => array("style" => PHPExcel_Style_Border::BORDER_THIN, "color" => array("argb" => "000000")))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //Adicionando as médias foreach (array_keys($bimestres) as $bimestre) { foreach (array_keys($conceitos) as $conceito) { $comando = '$this->workSheet->setCellValueByColumnAndRow($coluna, ' . '$linha, Matematica::mediaAritimeticaArray($md' . $conceito . $bimestre . 'B)) ->getStyleByColumnAndRow($coluna++, $linha) ->applyFromArray(//Aplicando formatação a celula array( "fill" => array( "type" => PHPExcel_Style_Fill::FILL_SOLID, "color" => array("rgb" => "FFF2CC") ), "borders" => array( "allborders" => array( "style" => PHPExcel_Style_Border::BORDER_THIN, "color" => array("argb" => "000000"), ) ) ) ) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);'; eval($comando); } } //Imcrementando a linha $linha++; $coluna = $colunaInicial; //Resetando o contador de colunas //----------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------- ////Trecho referente a primeira planilha //PREENCHENDO A PRIMEIRA PLANILHA //Definindo o título da planiplha $tituloPlanilhas = "TABELA R" . $r++ . " – DISTRIBUIÇÃO PERCENTUAL DOS CONCEITOS " . "FORMATIVOS DOS ALUNOS DO " . strtoupper($ensino->nome_ensino) . " AO LONGO DOS BIMESTRES"; $this->workSheet->setCellValueByColumnAndRow($coluna, ++$linha, $tituloPlanilhas)->getStyleByColumnAndRow($coluna, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FFF2CC")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $this->workSheet->getStyleByColumnAndRow($coluna, $linha)->getFont()->setBold(TRUE); //Tornando a font bolder // $linhaReferencia = $linha; $linha++; $coluna++; //Criando o cabeçalho da primeira planilha foreach ($conceitos as $conceito) { $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, $conceito)->getStyleByColumnAndRow($coluna, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $this->workSheet->mergeCellsByColumnAndRow($coluna, $linha, $coluna + 3, $linha); //Mesclando as colunas $coluna += 4; } $this->workSheet->getStyleByColumnAndRow(--$coluna, $linha)->applyFromArray(array('borders' => array('right' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000'))))); // $coluna = $colunaInicial; //Resetando o contador de colunas // Adicionando as colunas indicadoras de níveis $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, "Série")->getStyleByColumnAndRow($coluna, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER)->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $this->workSheet->mergeCellsByColumnAndRow($coluna, $linha, $coluna++, ++$linha); //Mesclando as colunas // foreach ($conceitos as $conceito) { foreach (array_keys($bimestres) as $bimestre) { $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, $bimRomanos[$bimestre])->getStyleByColumnAndRow($coluna++, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); } } //Mesclando o título da planilha $this->workSheet->mergeCellsByColumnAndRow($colunaInicial, $linhaReferencia, --$coluna, $linhaReferencia); $this->workSheet->getStyleByColumnAndRow($coluna, $linhaReferencia)->applyFromArray(array('borders' => array('right' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000'))))); // $linha++; //Definindo as variaveis para calculo de médias $mdD1B = $mdI1B = $mdR1B = $mdB1B = $mdL1B = array(); $mdD2B = $mdI2B = $mdR2B = $mdB2B = $mdL2B = array(); $mdD3B = $mdI3B = $mdR3B = $mdB3B = $mdL3B = array(); $mdD4B = $mdI4B = $mdR4B = $mdB4B = $mdL4B = array(); $coluna = $colunaInicial; //Resetando o contador de colunas //adicionando as séries da primeira coluna foreach ($avaliacoes as $avaliacao) { $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, $avaliacao["serie_nome"])->getStyleByColumnAndRow($coluna++, $linha)->applyFromArray(array('fill' => array('type' => PHPExcel_Style_Fill::FILL_SOLID, 'color' => array('rgb' => "FCE4D6")), 'borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('argb' => '000000')))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //Separando os dados foreach (array_keys($bimestres) as $bimestre) { foreach (array_keys($conceitos) as $conceito) { $comando = '$qt' . $conceito . $bimestre . 'B = (float) ' . '(isset($avaliacao["qt-' . strtolower($conceito) . '-' . $bimestre . 'bi"]) ' . '? $avaliacao["qt-' . strtolower($conceito) . '-' . $bimestre . 'bi"] : 0.0);'; eval($comando); } $comando = '$qt' . $bimestre . 'B = (float) (isset($avaliacao["qt-' . $bimestre . 'bi"]) ' . '? $avaliacao["qt-' . $bimestre . 'bi"] : 0.0);'; eval($comando); } //Definindo os percentudais foreach (array_keys($bimestres) as $bimestre) { foreach (array_keys($conceitos) as $conceito) { $comando = '$per' . $conceito . $bimestre . 'B = ' . 'Matematica::percentualDe($qt' . $conceito . $bimestre . 'B, $qt' . $bimestre . 'B);'; eval($comando); $comando = 'array_push($md' . $conceito . $bimestre . 'B, $per' . $conceito . $bimestre . 'B);'; eval($comando); } } //Adicionando os valores da coluna foreach (array_keys($conceitos) as $conceito) { foreach (array_keys($bimestres) as $bimestre) { $comando = '$this->workSheet->setCellValueByColumnAndRow($coluna, ' . '$linha, $per' . $conceito . $bimestre . 'B) ->getStyleByColumnAndRow($coluna++, $linha) ->applyFromArray(//Aplicando formatação a celula array( "fill" => array( "type" => PHPExcel_Style_Fill::FILL_SOLID, "color" => array("rgb" => "FFF2CC") ), "borders" => array( "allborders" => array( "style" => PHPExcel_Style_Border::BORDER_THIN, "color" => array("argb" => "000000"), ) ) ) ) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);'; eval($comando); } } // $coluna = $colunaInicial; //Resetando o contador de colunas $linha++; //Incrementando a linha } //Definindo o texto da linha de médias $this->workSheet->setCellValueByColumnAndRow($coluna, $linha, "MÉDIA")->getStyleByColumnAndRow($coluna++, $linha)->applyFromArray(array("fill" => array("type" => PHPExcel_Style_Fill::FILL_SOLID, "color" => array("rgb" => "FCE4D6")), "borders" => array("allborders" => array("style" => PHPExcel_Style_Border::BORDER_THIN, "color" => array("argb" => "000000")))))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //Adicionando as médias foreach (array_keys($conceitos) as $conceito) { foreach (array_keys($bimestres) as $bimestre) { $comando = '$this->workSheet->setCellValueByColumnAndRow($coluna, ' . '$linha, Matematica::mediaAritimeticaArray($md' . $conceito . $bimestre . 'B)) ->getStyleByColumnAndRow($coluna++, $linha) ->applyFromArray(//Aplicando formatação a celula array( "fill" => array( "type" => PHPExcel_Style_Fill::FILL_SOLID, "color" => array("rgb" => "FFF2CC") ), "borders" => array( "allborders" => array( "style" => PHPExcel_Style_Border::BORDER_THIN, "color" => array("argb" => "000000"), ) ) ) ) ->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);'; eval($comando); } } //Imcrementando a linha $linha++; $coluna = $colunaInicial; //Resetando o contador de colunas // } } //Imprimindo a planuilha $this->printPlanilha("Avaliações"); }