/* * This file is part of SGEA - Sistema de Gestão de Eventos Acadêmicos - TADS IFNMG Campus Januária. * * SGEA is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * SGEA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with SGEA. If not, see <http://www.gnu.org/licenses/>. */ package br.edu.ifnmg.GerenciamentoEventos.Infraestrutura.Dados; import br.edu.ifnmg.DomainModel.AreaConhecimento; import br.edu.ifnmg.DomainModel.Perfil; import br.edu.ifnmg.DomainModel.Pessoa; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.*; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Servicos.PessoaRepositorioLocal; import java.util.List; import javax.ejb.Singleton; import javax.persistence.Query; /** * * @author petronio */ @Singleton public class PessoaDAO extends DAO<Pessoa> implements PessoaRepositorioLocal { public PessoaDAO() { super(Pessoa.class); } @Override public List<Pessoa> Buscar(Pessoa filtro) { if (filtro != null) { IgualA("id", filtro.getId()) .IgualA("perfil", filtro.getPerfil()) .Like("nome", filtro.getNome()) .Like("cpf", filtro.getCpf()) .Like("email", filtro.getEmail()); } Ordenar("nome", "ASC"); return Buscar(); } @Override public List<Pessoa> Buscar(Evento e){ Join("inscricoes", "i").IgualA("i.evento", e).Ordenar("nome", "ASC"); return Buscar(); } @Override public List<Pessoa> Buscar(Atividade a){ Query q = getManager().createQuery("select o from Pessoa o join o.inscricoes i " + " join i.itens it where it.atividade = :a" + " order by o.nome "); q.setParameter("a", a); //Join("inscricoes", "i1").Join("i.itens", "i2").IgualA("i2.atividade", a).Ordenar("nome", "ASC"); return q.getResultList(); } @Override public Pessoa Abrir(String login) { return IgualA("email", login).Abrir(); } @Override public Pessoa AbrirPorCPF(String cpf) { return IgualA("cpf", cpf).Abrir(); } @Override public List<Pessoa> BuscarTexto(String filtro) { List<Pessoa> list = getManager() .createNativeQuery("SELECT * FROM pessoas WHERE MATCH(nome,cpf,email) AGAINST(? IN BOOLEAN MODE)", Pessoa.class) .setParameter(1, filtro+"*") .getResultList(); return list; } @Override public List<Pessoa> BuscarTexto(Pessoa filtro) { String f = ""; if(filtro.getNome() != null) f = f + filtro.getNome()+"* "; if(filtro.getCpf()!= null) f = f + filtro.getCpf()+"* "; if(filtro.getEmail()!= null) f = f + filtro.getEmail()+"* "; List<Pessoa> list = getManager() .createNativeQuery("SELECT * FROM pessoas WHERE MATCH(nome,cpf,email) AGAINST(? IN BOOLEAN MODE)", Pessoa.class) .setParameter(1, f) .getResultList(); return list; } @Override public List<AreaConhecimento> AvaliadoresPorAreas(Perfil p) { Query query = getManager() .createQuery("Select ac from Pessoa p join p.areasConhecimento ac where p.perfil =:perfil " + "order by ac.numeroCNPQ"); query.setParameter("perfil", p); return query.getResultList(); } @Override public List<Pessoa> BuscarAvaliadores(Perfil p, AreaConhecimento a) { return Join("areasConhecimento", "ac") .IgualA("perfil", p) .IgualA("ac.id", a.getId()) .Buscar(); } }