Esempio n. 1
0
 /**
  * @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)));
 }
Esempio n. 2
0
 public function getDataMapper()
 {
     if (is_null($this->_dataMapper)) {
         require_once 'Usuario/Model/FuncionarioDataMapper.php';
         $this->setDataMapper(new Usuario_Model_FuncionarioDataMapper());
     }
     return parent::getDataMapper();
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 /**
  * @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();
 }
Esempio n. 5
0
 public function getDataMapper()
 {
     if (is_null($this->_dataMapper)) {
         require_once 'Biblioteca/Model/TipoExemplarDataMapper.php';
         $this->setDataMapper(new Biblioteca_Model_TipoExemplarDataMapper());
     }
     return parent::getDataMapper();
 }
Esempio n. 6
0
 /**
  * @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();
 }
Esempio n. 7
0
 /**
  * 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();
 }
Esempio n. 8
0
 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());
 }
Esempio n. 10
0
 /**
  * @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'));
 }
Esempio n. 11
0
 /**
  * @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'));
 }
Esempio n. 12
0
 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&atilde;o', 2 => 'sim');
     $this->campoLista('concluinte', 'Concluinte', $opcoes, $this->concluinte);
     $this->campoMonetario('carga_horaria', 'Carga Hor&aacute;ria', $this->carga_horaria, 7, 7, TRUE);
     $this->campoNumero('intervalo', 'Intervalo', $this->intervalo, 2, 2, TRUE);
     $this->campoNumero('idade_inicial', 'Faixa et&aacute;ria', $this->idade_inicial, 2, 2, FALSE, '', '', FALSE, FALSE, TRUE);
     $this->campoNumero('idade_final', '&nbsp;até', $this->idade_final, 2, 2, FALSE);
 }
Esempio n. 13
0
 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());
 }
Esempio n. 15
0
 /**
  * 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']);
 }
Esempio n. 16
0
 /**
  * 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();
 }
Esempio n. 17
0
 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());
 }
Esempio n. 18
0
 /**
  * @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;
 }
Esempio n. 19
0
 /**
  * @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();
         }
     }
 }
Esempio n. 22
0
 /**
  * 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);
     }
 }
Esempio n. 23
0
 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);
 }