/* * 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.Pessoa; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Servicos.InscricaoRepositorio; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.*; import br.edu.ifnmg.DomainModel.Services.Repositorio; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.Singleton; import javax.persistence.Query; /** * * @author petronio */ @Singleton public class InscricaoDAO extends DAO<Inscricao> implements InscricaoRepositorio { DAO<InscricaoItem> itemDAO; public InscricaoDAO() { super(Inscricao.class); itemDAO = new DAO<>(InscricaoItem.class); } @PostConstruct public void inicializar() { itemDAO.setManager(getManager()); } @Override public List<Inscricao> Buscar(Evento evt, String participante) { return Join("pessoa", "p") .IgualA("tipo", InscricaoTipo.Inscricao) .IgualA("evento", evt) .Like("p.nome", participante) .Ordenar("p.nome", "ASC") .Buscar(); } @Override public List<Inscricao> Buscar(Inscricao filtro) { return IgualA("id", filtro.getId()) .IgualA("pessoa", filtro.getPessoa()) .IgualA("evento", filtro.getEvento()) .IgualA("tipo", filtro.getTipo()) .IgualA("categoria", filtro.getCategoria()) .IgualA("status", filtro.getStatus()) .Ordenar("categoria", "ASC") .Ordenar("ordem", "ASC") .Buscar(); } @Override public List<InscricaoItem> Buscar(InscricaoItem filtro) { return itemDAO.IgualA("id", filtro.getId()) .IgualA("pessoa", filtro.getPessoa()) .IgualA("evento", filtro.getEvento()) .IgualA("atividade", filtro.getAtividade()) .IgualA("tipo", filtro.getTipo()) .IgualA("categoria", filtro.getCategoria()) .IgualA("status", filtro.getStatus()) .Ordenar("categoria", "ASC") .Ordenar("ordem", "ASC") .Buscar(); } @Override public Inscricao Abrir(Evento evt, Pessoa p) { return IgualA("evento", evt) .IgualA("pessoa", p) .IgualA("tipo", InscricaoTipo.Inscricao) .Abrir(); } @Override public InscricaoItem Abrir(Inscricao i, Atividade a) { return itemDAO.IgualA("inscricao", i) .IgualA("atividade", a) .IgualA("tipo", InscricaoTipo.InscricaoItem) .Abrir(); } @Override public boolean Apagar(Inscricao i) { /*for(InscricaoItem item : i.getItens()){ i.remove(item); } for(Arquivo a : i.getArquivos()) i.remove(a);*/ return super.Apagar(i); } @Override public boolean Salvar(InscricaoItem i) { /* Inscricao tmp = i.getInscricao(); tmp.add(i); return Salvar(tmp); */ return itemDAO.Salvar(i); } @Override public boolean Apagar(InscricaoItem i) { Inscricao tmp = i.getInscricao(); tmp.remove(i); return Salvar(tmp); } @Override public Repositorio<InscricaoItem> getRepositorioItem() { return itemDAO; } @Override public InscricaoItem AbrirItem(Long id) { return itemDAO.Abrir(id); } @Override public Long QuantidadeInscricoes(Inscricao i, Atividade a) { Query query = itemDAO.getManager().createQuery("select count(i) from InscricaoItem i where i.inscricao =:inscricao " + "and i.atividade =:atividade and i.categoria =:normal and i.status <> :cancelada and i.status <> :recusada"); query.setParameter("inscricao", i) .setParameter("atividade", a) .setParameter("normal", InscricaoCategoria.Normal) .setParameter("cancelada", InscricaoStatus.Cancelada) .setParameter("recusada", InscricaoStatus.Recusada); return (Long) query.getSingleResult(); } }