/* * 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.Apresentacao; import br.edu.ifnmg.DomainModel.AreaConhecimento; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Evento; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Servicos.EventoRepositorio; import br.edu.ifnmg.GerenciamentoEventos.Aplicacao.ControllerBaseEntidade; import br.edu.ifnmg.DomainModel.Arquivo; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.AtividadeTipo; import br.edu.ifnmg.DomainModel.Pessoa; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Alocacao; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.EventoInscricaoCategoria; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Recurso; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Servicos.AlocacaoRepositorio; import br.edu.ifnmg.GerenciamentoEventos.DomainModel.Status; import javax.inject.Named; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.enterprise.context.RequestScoped; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.ValidatorException; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.UploadedFile; /** * * @author petronio */ @Named(value = "eventoController") @RequestScoped public class EventoController extends ControllerBaseEntidade<Evento> implements Serializable { /** * Creates a new instance of FuncionarioBean */ public EventoController() { } @EJB EventoRepositorio dao; @EJB AlocacaoRepositorio alocDAO; UploadedFile arquivo; AtividadeTipo atividadeTipo; Integer limite; Alocacao alocacao; EventoInscricaoCategoria categoria; AreaConhecimento areaConhecimento; Pessoa avaliador; public UploadedFile getArquivo() { return arquivo; } public void setArquivo(UploadedFile arquivo) { this.arquivo = arquivo; } @PostConstruct public void init() { setRepositorio(dao); setPaginaEdicao("editarEvento.xhtml"); setPaginaListagem("listagemEventos.xtml"); alocacao = new Alocacao(); } @Override public List<Evento> getListagem() { return repositorio.Ordenar("inicio", "DESC").Buscar(getFiltro()); } @Override public Evento getFiltro() { if (filtro == null) { filtro = new Evento(); filtro.setNome(getSessao("evtctrl_nome")); } return filtro; } @Override public void setFiltro(Evento filtro) { this.filtro = filtro; if (filtro != null) { setSessao("evtctrl_nome", filtro.getNome()); } } @Override public void limpar() { setEntidade(new Evento()); } public void configurarEventoGlobal() { setConfiguracao("EVENTO_PADRAO", entidade.getId().toString()); Mensagem("Sucesso", "Configuração global alterada com êxito!"); } public void configurarEventoUsuario() { setConfiguracao(getUsuarioCorrente(), "EVENTO_PADRAO", entidade.getId().toString()); Mensagem("Sucesso", "Configuração do usuário alterada com êxito!"); } public void fileUploadListener(FileUploadEvent event) { entidade = dao.Refresh(getEntidade()); Arquivo tmp = criaArquivo(event.getFile()); String arq = (String) event.getComponent().getAttributes().get("arquivo"); switch (arq) { case "banner": entidade.setBanner(tmp); break; case "logomarca": entidade.setLogo(tmp); break; case "Imagem de Fundo": entidade.setCertificadoFundo(tmp); break; case "Assinatura 1": entidade.setCertificadoAssinatura1(tmp); break; case "Assinatura 2": entidade.setCertificadoAssinatura2(tmp); break; } if (dao.Salvar(entidade)) { Mensagem("Sucesso", "Arquivo anexado com êxito!"); AppendLog("Anexou o arquivo " + entidade.getLogo() + " ao evento " + entidade); } else { Mensagem("Falha", "Falha ao anexar o arquivo!"); AppendLog("Erro ao anexar o arquivo " + entidade.getLogo() + " ao evento " + entidade + ":" + dao.getErro()); } } public Status[] getStatus() { return Status.values(); } Pessoa responsavel; public void addResponsavel() { entidade = dao.Refresh(getEntidade()); entidade.add(responsavel); SalvarAgregado(responsavel); responsavel = new Pessoa(); } public void removeResponsavel() { entidade = dao.Refresh(getEntidade()); entidade.remove(responsavel); RemoverAgregado(responsavel); responsavel = new Pessoa(); } public void addCategoria() { entidade = dao.Refresh(getEntidade()); entidade.add(categoria); SalvarAgregado(categoria); categoria = new EventoInscricaoCategoria(); } public void removeCategoria() { entidade = dao.Refresh(getEntidade()); entidade.remove(categoria); RemoverAgregado(categoria); categoria = new EventoInscricaoCategoria(); } public void addLimite() { entidade = dao.Refresh(getEntidade()); entidade.addLimite(atividadeTipo, limite); SalvarAgregado(atividadeTipo); atividadeTipo = new AtividadeTipo(); } public void removeLimite() { entidade = dao.Refresh(getEntidade()); entidade.removeLimite(atividadeTipo); RemoverAgregado(atividadeTipo); atividadeTipo = new AtividadeTipo(); } public void addLimiteCategoria() { entidade = dao.Refresh(getEntidade()); entidade.addLimite(categoria, limite); SalvarAgregado(categoria); categoria = new EventoInscricaoCategoria(); } public void removeLimiteCategoria() { entidade = dao.Refresh(getEntidade()); entidade.removeLimite(categoria); RemoverAgregado(categoria); categoria = new EventoInscricaoCategoria(); } public Pessoa getResponsavel() { return responsavel; } public void setResponsavel(Pessoa responsavel) { this.responsavel = responsavel; } public AtividadeTipo getAtividadeTipo() { return atividadeTipo; } public void setAtividadeTipo(AtividadeTipo atividadeTipo) { this.atividadeTipo = atividadeTipo; } public Integer getLimite() { return limite; } public void setLimite(Integer limite) { this.limite = limite; } public List<Entry<AtividadeTipo, Integer>> getLimitesAtividades() { return new ArrayList<Entry<AtividadeTipo, Integer>>(entidade.getInscricoesPorAtividade().entrySet()); } public void addAlocacao() { entidade = dao.Refresh(getEntidade()); Rastrear(alocacao); alocacao.setInicio(entidade.getInicio()); alocacao.setTermino(entidade.getTermino()); List<Alocacao> tmp = alocDAO.conflitos(alocacao); if (!tmp.isEmpty()) { MensagemErro("Conflito de Horário", "O recurso já está alocado para o horário desta atividade!"); return; } entidade.add(alocacao); SalvarAgregado(alocacao); alocacao = new Alocacao(); } public void validaAlocacao(FacesContext context, UIComponent component, Object value) throws ValidatorException { entidade = dao.Refresh(getEntidade()); Alocacao tmp = new Alocacao(); tmp.setRecurso((Recurso) value); tmp.setInicio(entidade.getInicio()); tmp.setTermino(entidade.getTermino()); List<Alocacao> conflitos = alocDAO.conflitos(tmp); if (!conflitos.isEmpty() && !conflitos.get(0).getAtividade().equals(entidade)) { FacesMessage msg = new FacesMessage("Conflito de Horário", "O recurso " + value + " já está alocado para este horário na atividade " + conflitos.get(0).getAtividade() + "!"); msg.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ValidatorException(msg); } } public void removeAlocacao() { entidade.remove(alocacao); RemoverAgregado(alocacao); alocacao = new Alocacao(); } public Alocacao getAlocacao() { return alocacao; } public void setAlocacao(Alocacao alocacao) { this.alocacao = alocacao; } public EventoInscricaoCategoria getCategoria() { return categoria; } public void setCategoria(EventoInscricaoCategoria categoria) { this.categoria = categoria; } public Pessoa getAvaliador() { return avaliador; } public void setAvaliador(Pessoa avaliador) { this.avaliador = avaliador; } public void addAvaliador() { getEntidade().addAvaliador(avaliador); if (dao.Salvar(getEntidade())) { Mensagem("Sucesso!", "Avaliador adicionado com êxito!"); } else { Mensagem("Falha!", "Falha ao adicionar avaliador!"); } } public void removeAvaliador() { getEntidade().removeAvaliador(avaliador); if (dao.Salvar(getEntidade())) { Mensagem("Sucesso!", "Avaliador removido com êxito!"); } else { Mensagem("Falha!", "Falha ao remover avaliador!"); } } public AreaConhecimento getAreaConhecimento() { return areaConhecimento; } public void setAreaConhecimento(AreaConhecimento areaConhecimento) { this.areaConhecimento = areaConhecimento; } public void addAreaConhecimento() { getEntidade().addAreaConhecimento(areaConhecimento); if (dao.Salvar(entidade)) { Mensagem("Sucesso", "Área de conhecimento adicionada com êxito!"); } else { Mensagem("Falha", "Falha ao adicionar Área de conhecimento!"); AppendLog("Erro ao anexar a Área de conhecimento " + String.valueOf(areaConhecimento) + " a submissão " + entidade + ":" + dao.getErro()); } areaConhecimento = null; } public void removeAreaConhecimento() { getEntidade().removeAreaConhecimento(areaConhecimento); dao.Salvar(entidade); areaConhecimento = null; } }