/** * @see CoreExt_Entity_Validatable#getDefaultValidatorCollection() */ public function getDefaultValidatorCollection() { // Enums $tipoNotaValor = RegraAvaliacao_Model_Nota_TipoValor::getInstance(); $tipoProgressao = RegraAvaliacao_Model_TipoProgressao::getInstance(); $tipoParecerDescritivo = RegraAvaliacao_Model_TipoParecerDescritivo::getInstance(); $tipoPresenca = RegraAvaliacao_Model_TipoPresenca::getInstance(); // ids de fórmulas de média $formulaMedia = $this->getDataMapper()->findFormulaMediaFinal(); $formulaMedia = CoreExt_Entity::entityFilterAttr($formulaMedia, 'id'); // ids de fórmulas de recuperação $formulaRecuperacao = $this->getDataMapper()->findFormulaMediaRecuperacao(); $formulaRecuperacao = CoreExt_Entity::entityFilterAttr($formulaRecuperacao, 'id'); $formulaRecuperacao[0] = NULL; // ids de tabelas de arredondamento $tabelas = $this->getDataMapper()->findTabelaArredondamento($this); $tabelas = CoreExt_Entity::entityFilterAttr($tabelas, 'id'); // Instituições $instituicoes = array_keys(App_Model_IedFinder::getInstituicoes()); // Fórmula de média é obrigatória? $isFormulaMediaRequired = TRUE; // Média é obrigatória? $isMediaRequired = TRUE; if ($this->get('tipoNota') == RegraAvaliacao_Model_Nota_TipoValor::NENHUM) { $isFormulaMediaRequired = FALSE; $isMediaRequired = FALSE; // Aceita somente o valor NULL quando o tipo de nota é Nenhum. $formulaMedia = $formulaMedia + array(NULL); } return array('instituicao' => new CoreExt_Validate_Choice(array('choices' => $instituicoes)), 'nome' => new CoreExt_Validate_String(array('min' => 5, 'max' => 50)), 'formulaMedia' => new CoreExt_Validate_Choice(array('choices' => $formulaMedia, 'required' => $isFormulaMediaRequired)), 'formulaRecuperacao' => new CoreExt_Validate_Choice(array('choices' => $formulaRecuperacao, 'required' => FALSE)), 'tipoNota' => new CoreExt_Validate_Choice(array('choices' => $tipoNotaValor->getKeys())), 'tipoProgressao' => new CoreExt_Validate_Choice(array('choices' => $tipoProgressao->getKeys())), 'tabelaArredondamento' => new CoreExt_Validate_Choice(array('choices' => $tabelas, 'choice_error' => 'A tabela de arredondamento selecionada não ' . 'corresponde ao sistema de nota escolhido.')), 'parecerDescritivo' => new CoreExt_Validate_Choice(array('choices' => $tipoParecerDescritivo->getKeys())), 'tipoPresenca' => new CoreExt_Validate_Choice(array('choices' => $tipoPresenca->getKeys())), 'media' => $this->validateIfEquals('tipoProgressao', RegraAvaliacao_Model_TipoProgressao::CONTINUADA, 'CoreExt_Validate_Numeric', array('required' => $isMediaRequired, 'min' => 1, 'max' => 10), array('required' => $isMediaRequired, 'min' => 0, 'max' => 10)), 'porcentagemPresenca' => new CoreExt_Validate_Numeric(array('min' => 1, 'max' => 100)), 'mediaRecuperacao' => $this->validateIfEquals('tipoProgressao', RegraAvaliacao_Model_TipoProgressao::CONTINUADA, 'CoreExt_Validate_Numeric', array('required' => $isMediaRequired, 'min' => 1, 'max' => 14), array('required' => $isMediaRequired, 'min' => 0, 'max' => 14))); }
public function getDataMapper() { if (is_null($this->_dataMapper)) { require_once 'Usuario/Model/FuncionarioDataMapper.php'; $this->setDataMapper(new Usuario_Model_FuncionarioDataMapper()); } return parent::getDataMapper(); }
public function testAtualizaMatricula() { $matricula = $this->getCleanMock('clsPmieducarMatricula'); $matricula->expects($this->once())->method('edita')->will($this->returnValue(TRUE)); // Guarda no repositório estático de classes CoreExt_Entity::addClassToStorage('clsPmieducarMatricula', $matricula, NULL, TRUE); App_Model_Matricula::atualizaMatricula(1, 1, TRUE); }
/** * @see CoreExt_Entity#getDataMapper() */ public function getDataMapper() { if (is_null($this->_dataMapper)) { require_once 'TabelaArredondamento/Model/TabelaValorDataMapper.php'; $this->setDataMapper(new TabelaArredondamento_Model_TabelaValorDataMapper()); } return parent::getDataMapper(); }
public function getDataMapper() { if (is_null($this->_dataMapper)) { require_once 'Biblioteca/Model/TipoExemplarDataMapper.php'; $this->setDataMapper(new Biblioteca_Model_TipoExemplarDataMapper()); } return parent::getDataMapper(); }
/** * @see CoreExt_Entity#getDataMapper() */ public function getDataMapper() { if (is_null($this->_dataMapper)) { require_once 'ComponenteCurricular/Model/AnoEscolarDataMapper.php'; $this->setDataMapper(new ComponenteCurricular_Model_AnoEscolarDataMapper()); } return parent::getDataMapper(); }
/** * Atualiza os dados da matrícula do aluno, promovendo-o ou retendo-o. Usa * uma instância da classe legada clsPmieducarMatricula para tal. * * @param int $matricula * @param int $usuario * @param bool $aprovado * @return bool */ public static function atualizaMatricula($matricula, $usuario, $aprovado = TRUE) { $instance = CoreExt_Entity::addClassToStorage('clsPmieducarMatricula', NULL, 'include/pmieducar/clsPmieducarMatricula.inc.php'); $instance->cod_matricula = $matricula; $instance->ref_usuario_cad = $usuario; $instance->ref_usuario_exc = $usuario; $instance->aprovado = $aprovado == TRUE ? App_Model_MatriculaSituacao::APROVADO : App_Model_MatriculaSituacao::REPROVADO; return $instance->edita(); }
public function getDefaultValidatorCollection() { $instituicoes = array_keys(App_Model_IedFinder::getInstituicoes()); $tipoBase = ComponenteCurricular_Model_TipoBase::getInstance(); $tipos = $tipoBase->getKeys(); $areas = $this->getDataMapper()->findAreaConhecimento(); $areas = CoreExt_Entity::entityFilterAttr($areas, 'id'); return array('instituicao' => new CoreExt_Validate_Choice(array('choices' => $instituicoes)), 'nome' => new CoreExt_Validate_String(array('min' => 5, 'max' => 200)), 'abreviatura' => new CoreExt_Validate_String(array('min' => 2, 'max' => 15)), 'tipo_base' => new CoreExt_Validate_Choice(array('choices' => $tipos)), 'area_conhecimento' => new CoreExt_Validate_Choice(array('choices' => $areas))); }
public function testSituacaoFaltasReprovado() { $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); $faltas = array(new Avaliacao_Model_FaltaGeral(array('id' => 1, 'quantidade' => 180, 'etapa' => 1)), new Avaliacao_Model_FaltaGeral(array('id' => 2, 'quantidade' => 180, 'etapa' => 2)), new Avaliacao_Model_FaltaGeral(array('id' => 3, 'quantidade' => 180, 'etapa' => 3)), new Avaliacao_Model_FaltaGeral(array('id' => 4, 'quantidade' => 180, 'etapa' => 4))); $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); $expected = $this->_getExpectedSituacaoFaltas(); // Configura a expectativa $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); $expected->porcentagemFalta = $expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100; $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; $service = $this->_getServiceInstance(); $this->assertEquals($expected, $service->getSituacaoFaltas()); }
/** * @see clsCadastro#Gerar() */ public function Gerar() { $this->campoOculto('id', $this->getEntity()->id); // Instituição $instituicoes = App_Model_IedFinder::getInstituicoes(); $this->campoLista('instituicao', $this->_getLabel('instituicao'), $instituicoes, $this->getEntity()->instituicao); // Nome $this->campoTexto('nome', $this->_getLabel('nome'), $this->getEntity()->nome, 50, 200, TRUE, FALSE, FALSE, $this->_getHelp('nome')); // Abreviatura $this->campoTexto('abreviatura', $this->_getLabel('abreviatura'), $this->getEntity()->abreviatura, 50, 25, TRUE, FALSE, FALSE, $this->_getHelp('abreviatura')); // Tipo Base $tipoBase = ComponenteCurricular_Model_TipoBase::getInstance(); $this->campoRadio('tipo_base', $this->_getLabel('tipo_base'), $tipoBase->getEnums(), $this->getEntity()->get('tipo_base')); // Área de conhecimento $areas = $this->getDataMapper()->findAreaConhecimento(); $areas = CoreExt_Entity::entityFilterAttr($areas, 'id', 'nome'); $this->campoLista('area_conhecimento', $this->_getLabel('area_conhecimento'), $areas, $this->getEntity()->get('area_conhecimento')); }
/** * @see clsCadastro#Gerar() */ public function Gerar() { $this->campoOculto('id', $this->getEntity()->id); // Instituição $instituicoes = App_Model_IedFinder::getInstituicoes(); $this->campoLista('instituicao', $this->_getLabel('instituicao'), $instituicoes, $this->getEntity()->instituicao); // Nome $this->campoTexto('nome', $this->_getLabel('nome'), $this->getEntity()->nome, 50, 50, TRUE, FALSE, FALSE, $this->_getHelp('nome')); // Nota tipo valor $notaTipoValor = RegraAvaliacao_Model_Nota_TipoValor::getInstance(); $this->campoRadio('tipoNota', $this->_getLabel('tipoNota'), $notaTipoValor->getEnums(), $this->getEntity()->get('tipoNota'), '', $this->_getHelp('tipoNota')); // Tabela de arredondamento $tabelaArredondamento = $this->getDataMapper()->findTabelaArredondamento($this->getEntity()); $tabelaArredondamento = CoreExt_Entity::entityFilterAttr($tabelaArredondamento, 'id', 'nome'); if (empty($tabelaArredondamento)) { $tabelaArredondamento = array(0 => 'O tipo de nota não possui tabela de arredondamento.'); } $this->campoLista('tabelaArredondamento', $this->_getLabel('tabelaArredondamento'), $tabelaArredondamento, $this->getEntity()->get('tabelaArredondamento'), '', FALSE, $this->_getHelp('tabelaArredondamento'), '', FALSE, FALSE); // Tipo progressão $tipoProgressao = RegraAvaliacao_Model_TipoProgressao::getInstance(); $this->campoRadio('tipoProgressao', $this->_getLabel('tipoProgressao'), $tipoProgressao->getEnums(), $this->getEntity()->get('tipoProgressao'), '', $this->_getHelp('tipoProgressao')); // Média $this->campoTexto('media', $this->_getLabel('media'), $this->getEntity()->media, 5, 50, FALSE, FALSE, FALSE, $this->_getHelp('media')); $this->campoTexto('mediaRecuperacao', $this->_getLabel('mediaRecuperacao'), $this->getEntity()->mediaRecuperacao, 5, 50, FALSE, FALSE, FALSE, $this->_getHelp('mediaRecuperacao')); // Cálculo média $formulas = $this->getDataMapper()->findFormulaMediaFinal(); $formulas = CoreExt_Entity::entityFilterAttr($formulas, 'id', 'nome'); $this->campoLista('formulaMedia', $this->_getLabel('formulaMedia'), $formulas, $this->getEntity()->get('formulaMedia'), '', FALSE, $this->_getHelp('formulaMedia'), '', FALSE, FALSE); // Cálculo média recuperação $formulas = $this->getDataMapper()->findFormulaMediaRecuperacao(); $formulasArray = array(0 => 'Não usar recuperação'); $formulasArray = $formulasArray + CoreExt_Entity::entityFilterAttr($formulas, 'id', 'nome'); $this->campoLista('formulaRecuperacao', $this->_getLabel('formulaRecuperacao'), $formulasArray, $this->getEntity()->get('formulaRecuperacao'), '', FALSE, $this->_getHelp('formulaRecuperacao'), '', FALSE, FALSE); // Porcentagem presença $this->campoTexto('porcentagemPresenca', $this->_getLabel('porcentagemPresenca'), $this->getEntity()->porcentagemPresenca, 5, 50, TRUE, FALSE, FALSE, $this->_getHelp('porcentagemPresenca')); // Parecer descritivo $parecerDescritivo = RegraAvaliacao_Model_TipoParecerDescritivo::getInstance(); $this->campoRadio('parecerDescritivo', $this->_getLabel('parecerDescritivo'), $parecerDescritivo->getEnums(), $this->getEntity()->get('parecerDescritivo'), '', $this->_getHelp('parecerDescritivo')); // Presença $tipoPresenca = RegraAvaliacao_Model_TipoPresenca::getInstance(); $this->campoRadio('tipoPresenca', $this->_getLabel('tipoPresenca'), $tipoPresenca->getEnums(), $this->getEntity()->get('tipoPresenca'), '', $this->_getHelp('tipoPresenca')); }
function Gerar() { if ($_POST) { foreach ($_POST as $campo => $val) { $this->{$campo} = $this->{$campo} ? $this->{$campo} : $val; } } // primary keys $this->campoOculto("cod_serie", $this->cod_serie); $obrigatorio = TRUE; $get_curso = TRUE; include 'include/pmieducar/educar_campo_lista.php'; $this->campoTexto("nm_serie", "Série", $this->nm_serie, 30, 255, TRUE); $opcoes = array("" => "Selecione"); if ($this->ref_cod_curso) { $objTemp = new clsPmieducarCurso(); $lista = $objTemp->lista($this->ref_cod_curso, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); if (is_array($lista) && count($lista)) { foreach ($lista as $registro) { $opcoes_["{$registro['cod_curso']}"] = "{$registro['qtd_etapas']}"; } } for ($i = 1; $i <= $opcoes_["{$registro['cod_curso']}"]; $i++) { $opcoes[$i] = "Etapa {$i}"; } } $this->campoLista('etapa_curso', 'Etapa Curso', $opcoes, $this->etapa_curso); // Regra de avaliação $mapper = new RegraAvaliacao_Model_RegraDataMapper(); $regras = array(); if (!is_null($this->ref_cod_instituicao)) { $regras = $mapper->findAll(array(), array('instituicao' => $this->ref_cod_instituicao)); $regras = CoreExt_Entity::entityFilterAttr($regras, 'id', 'nome'); } $this->campoLista('regra_avaliacao_id', 'Regra Avaliação', $regras, $this->regra_avaliacao_id); $opcoes = array('' => 'Selecione', 1 => 'não', 2 => 'sim'); $this->campoLista('concluinte', 'Concluinte', $opcoes, $this->concluinte); $this->campoMonetario('carga_horaria', 'Carga Horária', $this->carga_horaria, 7, 7, TRUE); $this->campoNumero('intervalo', 'Intervalo', $this->intervalo, 2, 2, TRUE); $this->campoNumero('idade_inicial', 'Faixa etária', $this->idade_inicial, 2, 2, FALSE, '', '', FALSE, FALSE, TRUE); $this->campoNumero('idade_final', ' até', $this->idade_final, 2, 2, FALSE); }
public function __construct($options = array()) { $this->_data['etapa'] = NULL; $this->setValidator('etapa', $this->_getEtapaValidator()); parent::__construct($options); }
/** * Faltas para componentes funcionam usam os mesmos critérios das faltas * gerais para a definição de aprovado ou reprovado: presença geral. */ public function testSituacaoFaltasReprovado() { $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); $componentes = $this->_getConfigOptions('escolaSerieDisciplina'); $faltas = array(new Avaliacao_Model_FaltaComponente(array('id' => 1, 'componenteCurricular' => 1, 'quantidade' => 60, 'etapa' => 1)), new Avaliacao_Model_FaltaComponente(array('id' => 2, 'componenteCurricular' => 1, 'quantidade' => 60, 'etapa' => 2)), new Avaliacao_Model_FaltaComponente(array('id' => 3, 'componenteCurricular' => 1, 'quantidade' => 60, 'etapa' => 3)), new Avaliacao_Model_FaltaComponente(array('id' => 4, 'componenteCurricular' => 1, 'quantidade' => 55, 'etapa' => 4)), new Avaliacao_Model_FaltaComponente(array('id' => 5, 'componenteCurricular' => 2, 'quantidade' => 5, 'etapa' => 1)), new Avaliacao_Model_FaltaComponente(array('id' => 6, 'componenteCurricular' => 2, 'quantidade' => 5, 'etapa' => 2)), new Avaliacao_Model_FaltaComponente(array('id' => 7, 'componenteCurricular' => 2, 'quantidade' => 5, 'etapa' => 3)), new Avaliacao_Model_FaltaComponente(array('id' => 8, 'componenteCurricular' => 2, 'quantidade' => 5, 'etapa' => 4)), new Avaliacao_Model_FaltaComponente(array('id' => 9, 'componenteCurricular' => 3, 'quantidade' => 5, 'etapa' => 1)), new Avaliacao_Model_FaltaComponente(array('id' => 10, 'componenteCurricular' => 3, 'quantidade' => 5, 'etapa' => 2)), new Avaliacao_Model_FaltaComponente(array('id' => 11, 'componenteCurricular' => 3, 'quantidade' => 5, 'etapa' => 3)), new Avaliacao_Model_FaltaComponente(array('id' => 12, 'componenteCurricular' => 3, 'quantidade' => 5, 'etapa' => 4)), new Avaliacao_Model_FaltaComponente(array('id' => 13, 'componenteCurricular' => 4, 'quantidade' => 5, 'etapa' => 1)), new Avaliacao_Model_FaltaComponente(array('id' => 14, 'componenteCurricular' => 4, 'quantidade' => 5, 'etapa' => 2)), new Avaliacao_Model_FaltaComponente(array('id' => 15, 'componenteCurricular' => 4, 'quantidade' => 5, 'etapa' => 3)), new Avaliacao_Model_FaltaComponente(array('id' => 16, 'componenteCurricular' => 4, 'quantidade' => 5, 'etapa' => 4))); $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); $expected = $this->_getExpectedSituacaoFaltas(); // Configura a expectativa $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); $expected->porcentagemFalta = $expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100; $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; // Configura expectativa para o componente de id '1' $componenteHoraFalta = array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 0, 4), 'id', 'quantidade')) * $this->_getConfigOption('curso', 'hora_falta'); $componentePorcentagemFalta = $componenteHoraFalta / $componentes[0]['carga_horaria'] * 100; $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; $expected->componentesCurriculares[1] = new stdClass(); $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::REPROVADO; $expected->componentesCurriculares[1]->horasFaltas = $componenteHoraFalta; $expected->componentesCurriculares[1]->porcentagemFalta = $componentePorcentagemFalta; $expected->componentesCurriculares[1]->porcentagemPresenca = $componentePorcentagemPresenca; // Configura expectativa para o componente de id '2' $componenteHoraFalta = array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 4, 4), 'id', 'quantidade')) * $this->_getConfigOption('curso', 'hora_falta'); $componentePorcentagemFalta = $componenteHoraFalta / $componentes[1]['carga_horaria'] * 100; $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; $expected->componentesCurriculares[2] = new stdClass(); $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO; $expected->componentesCurriculares[2]->horasFaltas = $componenteHoraFalta; $expected->componentesCurriculares[2]->porcentagemFalta = $componentePorcentagemFalta; $expected->componentesCurriculares[2]->porcentagemPresenca = $componentePorcentagemPresenca; // Configura expectativa para o componente de id '3' $componenteHoraFalta = array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 8, 4), 'id', 'quantidade')) * $this->_getConfigOption('curso', 'hora_falta'); $componentePorcentagemFalta = $componenteHoraFalta / $componentes[2]['carga_horaria'] * 100; $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; $expected->componentesCurriculares[3] = new stdClass(); $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; $expected->componentesCurriculares[3]->horasFaltas = $componenteHoraFalta; $expected->componentesCurriculares[3]->porcentagemFalta = $componentePorcentagemFalta; $expected->componentesCurriculares[3]->porcentagemPresenca = $componentePorcentagemPresenca; // Configura expectativa para o componente de id '4' $componenteHoraFalta = array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 12, 4), 'id', 'quantidade')) * $this->_getConfigOption('curso', 'hora_falta'); $componentePorcentagemFalta = $componenteHoraFalta / $componentes[3]['carga_horaria'] * 100; $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; $expected->componentesCurriculares[4] = new stdClass(); $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; $expected->componentesCurriculares[4]->horasFaltas = $componenteHoraFalta; $expected->componentesCurriculares[4]->porcentagemFalta = $componentePorcentagemFalta; $expected->componentesCurriculares[4]->porcentagemPresenca = $componentePorcentagemPresenca; $service = $this->_getServiceInstance(); $this->assertEquals($expected, $service->getSituacaoFaltas()); }
/** * Construtor. Remove o campo identidade já que usa uma chave composta. * @see CoreExt_Entity#__construct($options = array()) */ public function __construct($options = array()) { parent::__construct($options); unset($this->_data['id']); }
/** * Salva ou atualiza um registro através de uma instância de CoreExt_Entity. * * @param CoreExt_Entity $instance * @return bool * @throws CoreExt_DataMapper_Exception|Exception */ public function save(CoreExt_Entity $instance) { if (!$instance->isValid()) { throw new Exception('A instânca de "' . get_class($instance) . '" contém erros de validação.'); } // Coumpound key, todos os valores precisam estar setados, seja para // INSERT ou UPDATE. A instância precisa ser marcada explicitamente // como "old" para que UPDATE seja chamado. if (1 < count($this->_primaryKey)) { foreach ($this->_primaryKey as $pk) { $value = $instance->get($pk); if (!isset($value)) { require_once 'CoreExt/DataMapper/Exception.php'; throw new CoreExt_DataMapper_Exception('Erro de compound key. Uma das primary keys tem o valor NULL: "' . $pk . '"'); } } } elseif (1 == count($this->_primaryKey)) { if (isset($instance->id)) { $instance->markOld(); } } // Reseta o locale para o default (en_US) $this->getLocale()->resetLocale(); if ($instance->isNew()) { return $this->_getDbAdapter()->Consulta($this->_getSaveStatment($instance)); } else { return $this->_getDbAdapter()->Consulta($this->_getUpdateStatment($instance)); } // Retorna o locale para o usado no restante da aplicação $this->getLocale()->setLocale(); }
public function testIntegracaoMatriculaPromoverAluno() { $situacao = new stdClass(); $situacao->aprovado = TRUE; $situacao->andamento = FALSE; $situacao->recuperacao = FALSE; $situacao->retidoFalta = FALSE; $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); // Mock para RegraAvaliacao_Model_Regra $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::CONTINUADA); $service = $this->setExcludedMethods(array('promover', '_updateMatricula'))->getCleanMock('Avaliacao_Service_Boletim'); $service->expects($this->at(0))->method('getSituacaoAluno')->will($this->returnValue($situacao)); $service->expects($this->at(1))->method('getOption')->with('aprovado')->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); $service->expects($this->at(2))->method('getRegra')->will($this->returnValue($regra)); $service->expects($this->at(3))->method('getOption')->with('matricula')->will($this->returnValue($codMatricula)); $service->expects($this->at(4))->method('getOption')->with('usuario')->will($this->returnValue($codUsuario)); // Configura mock de instância de classe legada $matricula = $this->getCleanMock('clsPmieducarMatricula'); $matricula->expects($this->at(0))->method('edita')->will($this->returnValue(TRUE)); CoreExt_Entity::addClassToStorage('clsPmieducarMatricula', $matricula, 'include/pmieducar/clsPmieducarMatricula.inc.php', TRUE); $this->assertTrue($service->promover()); }
/** * @return clsPmieducarDispensaDisciplina */ protected function _setUpDispensaDisciplinaMock() { $mock = $this->getCleanMock('clsPmieducarDispensaDisciplina'); $mock->expects($this->any())->method('lista')->will($this->returnValue($this->_getConfigOptions('dispensaDisciplina'))); CoreExt_Entity::addClassToStorage('clsPmieducarDispensaDisciplina', $mock, NULL, TRUE); return $this; }
/** * @depends App_Model_IedFinderTest::testGetRegraAvaliacaoPorMatricula */ public function testGetQuantidadeDeModulosMatriculaCursoAnoNaoPadrao() { // Curso não padrão $returnCurso = array('cod_curso' => 1, 'carga_horaria' => 800, 'hora_falta' => 50 / 60, 'padrao_ano_escolar' => 0); $cursoMock = $this->getCleanMock('clsPmieducarCurso'); $cursoMock->expects($this->any())->method('detalhe')->will($this->returnValue($returnCurso)); CoreExt_Entity::addClassToStorage('clsPmieducarCurso', $cursoMock, NULL, TRUE); $returnTurmaModulo = array(array('ref_cod_turma' => 1, 'ref_cod_modulo' => 1, 'sequencial' => 1), array('ref_cod_turma' => 1, 'ref_cod_modulo' => 1, 'sequencial' => 2), array('ref_cod_turma' => 1, 'ref_cod_modulo' => 1, 'sequencial' => 3), array('ref_cod_turma' => 1, 'ref_cod_modulo' => 1, 'sequencial' => 4)); $turmaModuloMock = $this->getCleanMock('clsPmieducarTurmaModulo'); $turmaModuloMock->expects($this->at(0))->method('lista')->with(1)->will($this->returnValue($returnTurmaModulo)); App_Model_IedFinder::addClassToStorage('clsPmieducarTurmaModulo', $turmaModuloMock, NULL, TRUE); $etapas = App_Model_IedFinder::getQuantidadeDeModulosMatricula(1); $this->assertEquals(4, $etapas, '::getQuantidadeDeModulosMatricula() retorna a quantidade de módulos para uma matrícula de um ano escolar não padrão (curso não padrão).'); }
function renderHTML() { @session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; @session_write_close(); if ($_POST) { foreach ($_POST as $key => $value) { $this->{$key} = $value; } } if ($this->ref_ref_cod_serie) { $this->ref_cod_serie = $this->ref_ref_cod_serie; } $fonte = 'arial'; $corTexto = '#000000'; if (empty($this->ref_cod_turma)) { echo '<script> alert("Erro ao gerar relatório!\\nNenhuma turma selecionada!"); window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1)); </script>'; return TRUE; } if ($this->ref_cod_escola) { $obj_escola = new clsPmieducarEscola($this->ref_cod_escola); $det_escola = $obj_escola->detalhe(); $this->nm_escola = $det_escola['nome']; $obj_instituicao = new clsPmieducarInstituicao($det_escola['ref_cod_instituicao']); $det_instituicao = $obj_instituicao->detalhe(); $this->nm_instituicao = $det_instituicao['nm_instituicao']; } $obj_calendario = new clsPmieducarEscolaAnoLetivo(); $lista_calendario = $obj_calendario->lista($this->ref_cod_escola, $this->ano, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL); $obj_turma = new clsPmieducarTurma($this->ref_cod_turma); $det_turma = $obj_turma->detalhe(); $this->nm_turma = $det_turma['nm_turma']; $obj_serie = new clsPmieducarSerie($this->ref_cod_serie); $det_serie = $obj_serie->detalhe(); $this->nm_serie = $det_serie['nm_serie']; // Regra da série $regraMapper = new RegraAvaliacao_Model_RegraDataMapper(); $this->regra = $regraMapper->find($det_serie['regra_avaliacao_id']); $obj_pessoa = new clsPessoa_($det_turma['ref_cod_regente']); $det = $obj_pessoa->detalhe(); $this->nm_professor = $det['nome']; if (!$lista_calendario) { echo '<script> alert("Escola não possui calendário definido para este ano"); window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1)); </script>'; return TRUE; } $obj_curso = new clsPmieducarCurso($this->ref_cod_curso); $det_curso = $obj_curso->detalhe(); $this->nm_curso = $det_curso['nm_curso']; $obj_tipo_avaliacao = new clsPmieducarTipoAvaliacao($det_curso['ref_cod_tipo_avaliacao']); $det_tipo_avaliacao = $obj_tipo_avaliacao->detalhe(); $conceitual = $det_tipo_avaliacao['conceitual']; $obj_matricula_turma = new clsPmieducarMatriculaTurma(); $obj_matricula_turma->setOrderby('nome_ascii'); $lst_matricula_turma = $obj_matricula_turma->lista($this->ref_cod_matricula, $this->ref_cod_turma, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_serie, $this->ref_cod_curso, $this->ref_cod_escola, $this->ref_cod_instituicao, NULL, NULL, array(1, 2, 3), NULL, NULL, $this->ano, NULL, NULL, NULL, NULL, TRUE); // Recupera os componentes curriculares da turma $componentes = App_Model_IedFinder::getComponentesTurma($this->ref_cod_serie, $this->ref_cod_escola, $this->ref_cod_turma); // Recupera a quantidade de módulos e o nome do módulo da escola/turma $modulo = App_Model_IedFinder::getModulo($this->ref_cod_escola, $this->ref_cod_curso, $this->ref_cod_turma, $this->ano); $nomeModulo = $modulo['nome'][0]; $modulos = $modulo['total']; if ($lst_matricula_turma) { $relatorio = new relatorios('Espelho de Notas Ano - ' . $this->ano, 210, FALSE, 'Espelho de Notas', 'A4', "{$this->nm_instituicao}\n{$this->nm_escola}\n{$this->nm_curso}\n{$this->nm_serie} - Turma: {$this->nm_turma} " . date('d/m/Y')); $relatorio->setMargem(20, 20, 20, 20); $relatorio->exibe_produzido_por = FALSE; $array_val = array(array(40, 'Cód.'), array(160, 'Nome do Aluno')); foreach (range(1, $modulos) as $num) { $array_val[] = array(30, $num . $nomeModulo); } $array_val[] = array(55, 'M.Parcial'); $array_val[] = array(50, 'Exame'); $array_val[] = array(50, 'M.Final'); $array_val[] = array(38, 'Faltas'); $arrFuncBody = ' $values = array(); foreach ($data as $d) { $values[] = $d[$index]; } return $values; '; $arrFunc = create_function('$data, $index', $arrFuncBody); foreach ($componentes as $componente) { $relatorio->novalinha(array($componente->nome), 0, 16, TRUE, 'arial', array(400), '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE); $relatorio->novalinha($arrFunc($array_val, 1), 0, 16, TRUE, 'arial', $arrFunc($array_val, 0), '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE); foreach ($lst_matricula_turma as $matricula) { $codMatricula = $matricula['ref_cod_matricula']; if (!isset($this->boletim[$codMatricula])) { $boletim = new Avaliacao_Service_Boletim(array('matricula' => $codMatricula, 'RegraDataMapper' => $regraMapper)); } else { $boletim = $this->boletim[$codMatricula]; } $media_final = $media_parcial = $nota_exame = ''; $medias = $boletim->getMediasComponentes(); $notas = $boletim->getNotasComponentes(); if ($boletim->getRegra()->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::GERAL) { $faltas = array_sum(CoreExt_Entity::entityFilterAttr($boletim->getFaltasGerais(), 'id', 'quantidade')); } else { $faltas = $boletim->getFaltasComponentes(); if (isset($faltas[$componente->id])) { $faltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas[$componente->id], 'id', 'quantidade')); } else { $faltas = ''; } } $etapas = range(1, count($notas[$componente->id])); // Se tiver mais etapas nas notas lançadas, significa que prestou exame if (count($etapas) > $modulos) { array_pop($etapas); } $data = array(array(40, $matricula['ref_cod_aluno']), array(160, $matricula['nome'])); foreach ($etapas as $i) { $data[] = array(30, $boletim->getNotaComponente($componente->id, $i)->notaArredondada); $media_parcial = $medias[$componente->id][0]->mediaArredondada; if ($i == $modulos) { $media_final = $media_parcial; $media_parcial = ''; $nota_exame = $boletim->getNotaComponente($componente->id, 'Rc')->notaArredondada; } } // Adiciona entradas em branco no array de dados for ($i = 0, $loop = $modulos - count($etapas); $i < $loop; $i++) { $data[] = array(30, ''); } $data[] = array(55, $media_parcial); $data[] = array(50, $nota_exame); $data[] = array(50, $media_final); $data[] = array(38, $faltas); $relatorio->novalinha($arrFunc($data, 1), 0, 12, FALSE, 'arial', $arrFunc($data, 0), '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE); } $relatorio->quebraPagina(); } $this->get_link = $relatorio->fechaPdf(); } echo sprintf(' <script> window.onload=function() { parent.EscondeDiv("LoadImprimir"); window.location="download.php?filename=%s" } </script>', $this->get_link); echo sprintf(' <html> <center> Se o download não iniciar automaticamente <br> <a target="blank" href="%s" style="font-size: 16px; color: #000000; text-decoration: underline;">clique aqui!</a><br><br> <span style="font-size: 10px;"> Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br> Clique na Imagem para Baixar o instalador<br><br> <a href="http://www.adobe.com.br/products/acrobat/readstep2.html" target="new"><br><img src="imagens/acrobat.gif" width="88" height="31" border="0"></a> </span> </center> </html>', $this->get_link); }
function getAlunoNotasFaltasTable($alunos_matriculados) { $fonte = 'arial'; $corTexto = '#000000'; $esquerda_original = 3; $espessura_linha = 0.3; $tam_texto = 9; $direita = 834; $altura = 20; $obj_serie = new clsPmieducarSerie($this->ref_cod_serie); $det_serie = $obj_serie->detalhe(); $espacoDiv = $this->presencaGeral ? 1 : 2; foreach ($alunos_matriculados as $matricula => $aluno) { $boletim = new Avaliacao_Service_Boletim(array('matricula' => $matricula)); $medias = $boletim->getMediasComponentes(); if ($this->presencaGeral) { // Soma as faltas do aluno $faltas = array_sum(CoreExt_Entity::entityFilterAttr($boletim->getFaltasGerais(), 'etapa', 'quantidade')); } else { $faltas = $boletim->getFaltasComponentes(); } $esquerda = $esquerda_original; // Matrícula $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); $this->pdf->escreve_relativo($matricula, $esquerda, $this->page_y + 2, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); // Nome do aluno $espaco_nome = 150; $this->pdf->escreve_relativo($aluno['nome'], $esquerda, $this->page_y + 2, $espaco_nome, 45, $fonte, $tam_texto, $corTexto, 'center'); $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); // Situação da matrícula $this->pdf->escreve_relativo(App_Model_MatriculaSituacao::getInstance()->getValue($aluno['aprovado']), $esquerda, $this->page_y + 4, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); $espacoComponentes = ceil(($direita - $esquerda) / (count($this->componentes) + ($this->presencaGeral ? 1 : 0))); // Exibe as médias e faltas do aluno foreach ($this->componentes as $id => $componente) { // Se não tem média, foi dispensado do componente if (!isset($medias[$id])) { $media = 'D'; $faltas = 'D'; } else { $media = $medias[$id][0]; $media = $media->mediaArredondada; if (!$this->presencaGeral) { if (isset($faltas[$id])) { $faltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas[$id], 'id', 'quantidade')); } } } // Média $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4, $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto + 1, $corTexto, 'center'); $this->pdf->linha_relativa($esquerda + $espacoComponentes / $espacoDiv, $this->page_y, 0, $altura); // Exibe as faltas no componente curricular, caso a presença não seja geral if (!$this->presencaGeral) { $this->pdf->escreve_relativo($faltas, $esquerda + $espacoComponentes / $espacoDiv, $this->page_y + 4, $espacoComponentes / $espacoDiv, 100, $fonte, $tam_texto + 1, $corTexto, 'center'); } $esquerda += $espacoComponentes; $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); } // Exibe as faltas no total, caso a presença seja geral if ($this->presencaGeral) { $this->pdf->escreve_relativo($faltas, $esquerda, $this->page_y + 4, $espacoComponentes, 50, $fonte, $tam_texto + 1, $corTexto, 'center'); $esquerda += $espacoComponentes; $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); } $this->page_y += $altura; if ($this->page_y > $this->pdf->altura - $altura * 2) { $this->pdf->ClosePage(); $this->pdf->OpenPage(); $this->addCabecalho(); } } }
/** * Atualiza a média dos componentes curriculares. */ protected function _updateNotaComponenteMedia() { require_once 'Avaliacao/Model/NotaComponenteMedia.php'; $this->_loadNotaComponenteCurricular(FALSE); foreach ($this->_notasComponentes as $id => $notasComponentes) { // Cria um array onde o índice é a etapa $etapasNotas = CoreExt_Entity::entityFilterAttr($notasComponentes, 'etapa', 'nota'); $notas = array('Se' => 0, 'Et' => $this->getOption('etapas')); // Cria o array formatado para o cálculo da fórmula da média foreach ($etapasNotas as $etapa => $nota) { if (is_numeric($etapa)) { $notas['E' . $etapa] = $nota; $notas['Se'] += $nota; continue; } $notas[$etapa] = $nota; } // Calcula a média $media = $this->_calculaMedia($notas); // Cria uma nova instância de média, já com a nota arredondada e a etapa $notaComponenteCurricularMedia = new Avaliacao_Model_NotaComponenteMedia(array('notaAluno' => $this->_getNotaAluno()->id, 'componenteCurricular' => $id, 'media' => $media, 'mediaArredondada' => $this->arredondaNota($media), 'etapa' => $etapa)); try { // Se existir, marca como "old" para possibilitar a atualização $this->getNotaComponenteMediaDataMapper()->find(array($notaComponenteCurricularMedia->get('notaAluno'), $notaComponenteCurricularMedia->get('componenteCurricular'))); $notaComponenteCurricularMedia->markOld(); } catch (Exception $e) { // Prossegue, sem problemas. } // Salva a média $this->getNotaComponenteMediaDataMapper()->save($notaComponenteCurricularMedia); } }
public function testTransformaEntityEmArrayAssociativo() { $data = array('id' => 1, 'nome' => 'fooBar', 'estadoCivil' => 'solteiro', 'doador' => TRUE); $entity = new CoreExt_EntityStub($data); // Interface de instância $array = $entity->filterAttr('id', 'nome'); $this->assertEquals(array(1 => 'fooBar'), $array); // Interface estática $array = CoreExt_Entity::entityFilterAttr($entity, 'id', 'nome'); $this->assertEquals(array(1 => 'fooBar'), $array); }