/** * Método que lista todos os comentários feitos para o anexo informado * @param Anexos $anexo * @return ResultSetHydrator Um objeto contendo conversões de modelos com os dados da consulta * @throws Exception */ public function comentariosDeAnexo(Anexos $anexo) { if (!is_int($anexo->getId())) { throw new Exception("O anexo informado não é válido", 11); } $select = new Select(); $select->where(array("comentario_fk_anexo" => $anexo->getId()))->join("public.usuario", array("comentario_fk_usuario" => "pk_usuario"))->join("apostilas.anexos", array("pk_anexo" => "comentario_fk_anexo")); return $this->tableGatway->selectObj($select); }
/** * Método que lista todos os comentários feitos para o anexo informado. * * @param Anexos $anexo * * @return ResultSetHydrator Um objeto contendo conversões de modelos com os dados da consulta * * @throws Exception */ public function comentariosDeAnexo(Anexos $anexo) { if (!is_int($anexo->getId())) { throw new Exception('O anexo informado não é válido', 11); } $select = new Select(); $select->where(array('comentario_fk_anexo' => $anexo->getId()))->join('public.usuario', array('comentario_fk_usuario' => 'pk_usuario'))->join('apostilas.anexos', array('pk_anexo' => 'comentario_fk_anexo')); return $this->tg->selectObj($select); }
/** * Método que salva uma avaliação de um determinado extra * @param AnexosAvaliacao $avaliacao * @throws Exception */ public function avaliar(AnexosAvaliacao $avaliacao) { $select = new Select(); $ava = $this->tg->selectObj($select->where(array("anexos_ava_fk_anexo" => $avaliacao->getAnexo()->getId(), "anexos_ava_fk_usuario" => $avaliacao->getUsuario()->getId()))); if ($ava->rowCount()) { $aval = $ava->fetch(); return $this->tg->update("pk_anexos_ava={$aval->getId()}", array("anexos_ava_nota" => $avaliacao->getNota())); } else { return $this->tg->insert(array("anexos_ava_fk_anexo" => $avaliacao->getAnexo()->getId(), "anexos_ava_fk_usuario" => $avaliacao->getUsuario()->getId(), "anexos_ava_nota" => $avaliacao->getNota(), "anexos_ava_dt" => $avaliacao->getDtHora()->format("Y-m-d G:i:s"))); } }
/** * Método que lista usuários de um determinado perfil * @param Usuario $modelo * @return array * @throws UsuarioException */ public function listar(Usuario $modelo = null) { //Montando a consulta $select = new Select(); if (!is_null($modelo)) { //Caso seja buscado um usuário de acordo com o perfil $select->join("public.usuario_tipo_vin", array("pk_usuario" => "public.usuario_tipo_vin.fk_usuario"))->join("public.tipo_usuario", array("pk_tipo_usuario" => "fk_tipo_usuario"))->join($modelo->getPerfil()->getTabela(), array("pk_usuario" => $modelo->getPerfil()->getTabela() . ".fk_usuario")); $select->where(array("pk_tipo_usuario" => $modelo->getPerfil()->getId())); } //Realizando a consulta e testando o resultado $querySelect = $this->gatWayUsuario->selectObj($select); if (!$querySelect->rowCount()) { throw new UsuarioException("Não foram encontrados usuários do perfil informado"); } return $querySelect->fetchAll($modelo); }
/** * Método que retorna o tópico pedido * @param int $topico O código do tópico buscado * @return Topico Um objeto contendo os dados do tópico * @param boolea $apenasMinistrados Define se deve exibir qualquer tópico ou apenas os já ministrados em aula * @throws LivroException */ public function getTopico($topico, $apenasMinistrados = TRUE) { if (!is_int($topico)) { throw new LivroException("O tópico informado não é válido"); } $select = new Select(); $tableGatway = new TableGatway(new Topico(), "apostilas.conteudo"); $tableGatway->defineColuna("pk_conteudo", new ResultSetMap(Column::INTEGER)); $select->columns("*, " . "apostilas.acompanhamento.data_aula as topico_data_aula," . "apostilas.acompanhamento.status as topico_status")->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->join("public.materia_vin", array("pk_materia_vin" => "fk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->join("public.materia_mae", array("pk_materia_mae" => "fk_materia_mae"))->join("public.area", array("pk_area" => "fk_area"))->join("apostilas.livro", array("pk_livro" => "fk_livro"))->join("apostilas.livro_cat", array("pk_livro_cat" => "fk_livro_cat")); if ((bool) $apenasMinistrados) { $select->join("apostilas.acompanhamento", array("pk_conteudo" => "fk_conteudo")); } else { $select->join("apostilas.acompanhamento", array("pk_conteudo" => "fk_conteudo"), Join::LEFT_JOIN); } $select->where(array("pk_conteudo" => $topico)); $resultSet = $tableGatway->selectObj($select); if (!$resultSet->rowCount()) { throw new LivroException("O tópico informado não foi encontrado ou ainda não foi dado em aula"); } return $resultSet->fetch(); }
/** * Método usado para buscas especificas, especialização criada * para permitir o armazenamento de logs de exibições unicas. * Este método adiciona um "limit 1" ao fim da consulta e define o where * baseado na coluna e indice informados * * @param string $coluna A culuna usada para o busca * * @param int $id O indice a ser buscado * * @param Select $select A consulta a ser executada * * @return Model Um objeto contendo os dados de acordo com o indice * informado ou FALSE em caso de erro */ public function get($coluna, $id, Select $select) { if (!(int) $id) { throw new SqlException("Foi informado um indice inválido para a consulta", 65); } if (!String::validarTipo($coluna)) { throw new SqlException("Foi informada uma coluna inválida para a consulta", 66); } $this->defineColuna($coluna, new ResultSetMap(Column::INTEGER)); $this->salvarLog(Logs::GET, $id); $resultset = $this->selectObj($select->where(array($coluna => $id))->limit(1)); if ($resultset->rowCount()) { return $resultset->fetch(); } else { return false; } }