com.ipn.escom.ageinnn.evento.service.EventoService.java Source code

Java tutorial

Introduction

Here is the source code for com.ipn.escom.ageinnn.evento.service.EventoService.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipn.escom.ageinnn.evento.service;

import com.ipn.escom.ageinnn.aspirante.model.Aspirante;
import com.ipn.escom.ageinnn.aspirante.model.AspiranteId;
import com.ipn.escom.ageinnn.configuracion.model.PeriodoAdmision;
import com.ipn.escom.ageinnn.evento.model.EstadoEvento;
import com.ipn.escom.ageinnn.evento.model.Evento;
import com.ipn.escom.ageinnn.evento.model.TipoEvento;
import com.ipn.escom.ageinnn.service.Service;
import com.ipn.escom.ageinnn.usuario.model.Docente;
import com.ipn.escom.ageinnn.usuario.model.MedicoResidente;
import com.ipn.escom.ageinnn.usuario.service.AspiranteServceImpl;
import com.ipn.escom.ageinnn.usuario.service.CatalogoServiceImpl;
import com.ipn.escom.ageinnn.usuario.service.UsuarioServiceImpl;
import com.ipn.escom.ageinnn.utils.EventoDTO;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.transaction.Transactional;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Erick
 */
public class EventoService {

    private Session session;

    public boolean validarEvento(EventoDTO evento) {
        System.out.println("EVENTO_SERVICE: Validando evento........");
        boolean validado = false;
        UsuarioServiceImpl usuarioService = new UsuarioServiceImpl();
        CatalogoServiceImpl catalogoServiceImpl = new CatalogoServiceImpl();
        AspiranteServceImpl aspiranteServceImpl = new AspiranteServceImpl();

        PeriodoAdmision periodoAdmision = catalogoServiceImpl.findPeriodoActual();
        MedicoResidente medico = usuarioService.findByEmail(MedicoResidente.class, evento.getAspiranteEmail());
        Aspirante aspirante = aspiranteServceImpl.find(new AspiranteId(medico.getId(), periodoAdmision.getId()));
        Docente docente = usuarioService.findByEmail(Docente.class, evento.getDocenteEmail());

        if (aspirante != null && docente != null) {
            CatalogoServiceImpl catalogoService = new CatalogoServiceImpl();

            System.out.println("PeriodoAdmision actual: " + periodoAdmision.getId());

            boolean isInPeriodoActual = aspirante.getPeriodoAdmision().getId().equals(periodoAdmision.getId());
            boolean isInEntrevista = !("documentos".equals(aspirante.getProcesoAdmision().getNombre())
                    && "rechazado".equals(aspirante.getProcesoAdmision().getNombre()));

            if (isInPeriodoActual && isInEntrevista) {
                TipoEvento entrevista = catalogoService.find(TipoEvento.class, evento.getTipoEventoId());
                String tipoEventoNombre = "";
                try {
                    switch (entrevista.getNombre()) {
                    case "Entrevista 1":
                        tipoEventoNombre = "entrevista 1";
                        break;
                    case "Entrevista 2":
                        tipoEventoNombre = "entrevista 2";
                        break;
                    case "Entrevista 3":
                        tipoEventoNombre = "entrevista 3";
                        break;
                    }

                    boolean isRightEvento = tipoEventoNombre.equals(aspirante.getProcesoAdmision().getNombre());

                    if (isRightEvento) {
                        Evento eventoEncontrado = this.findByAspiranteAndTipoEvento(aspirante, entrevista);
                        if (eventoEncontrado == null
                                || "cancelado".equals(eventoEncontrado.getEstadoEvento().getNombre())) {
                            validado = true;
                        }
                    }

                } catch (NullPointerException npe) {
                    System.out.println("No se encuentra el tipo de evento");
                } catch (Exception e) {
                    System.out.println("Algo ha salido mal");
                    throw e;
                }

            }
        }

        return validado;
    }

    @SuppressWarnings("unchecked")
    public Evento findByAspiranteAndTipoEvento(Aspirante aspirante, TipoEvento tipoEvento) {
        Evento evento = null;
        session = Service.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List<Evento> eventoList = session.createCriteria(Evento.class)
                .add(Restrictions.eq("medicoId", aspirante.getMedico().getId()))
                .add(Restrictions.eq("tipoEventoId", tipoEvento.getId())).list();
        session.getTransaction().commit();
        if (!eventoList.isEmpty()) {
            evento = eventoList.get(0);
        }
        return evento;

    }

    @Transactional
    public Serializable save(Evento evento) {
        Serializable id = null;
        try {
            session = Service.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            id = session.save(evento);
            session.getTransaction().commit();
        } catch (Exception e) {
            session.getTransaction().rollback();
        }
        return id;

    }

    public Evento find(Serializable id) {
        Evento evento = null;
        session = Service.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        evento = (Evento) session.get(Evento.class, id);
        session.getTransaction().commit();
        return evento;
    }

    public void delete(Evento evento) {
        try {
            session = Service.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            session.delete(evento);
            session.getTransaction().commit();
        } catch (Exception e) {
            session.getTransaction().rollback();
        }

    }

    public List<Evento> findByDocenteAndEstadoEvento(Docente docente, EstadoEvento pendiente) {
        List<Evento> eventoList = new ArrayList<>();
        try {
            session = Service.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            eventoList = session.createCriteria(Evento.class).add(Restrictions.eq("docenteId", docente.getId()))
                    .add(Restrictions.eq("estadoEventoId", pendiente.getId())).list();
            session.getTransaction().commit();

        } catch (Exception e) {
            session.getTransaction().rollback();
            throw e;
        }

        return eventoList;
    }

    public Session getSession() {
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

    public Evento findByDocenteAndEventoId(Docente docente, Integer eventoId) {
        Evento entrevista = null;
        try {
            session = Service.getSessionFactory().getCurrentSession();
            session.beginTransaction();

            entrevista = (Evento) session.createCriteria(Evento.class).add(
                    Restrictions.and(Restrictions.idEq(eventoId), Restrictions.eq("docenteId", docente.getId())))
                    .uniqueResult();

            session.getTransaction().commit();

        } catch (Exception e) {
            session.getTransaction().rollback();
            throw e;
        }

        return entrevista;
    }

    public void update(Evento entrevista) {
        try {
            session = Service.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            session.saveOrUpdate(entrevista);
            session.getTransaction().commit();
        } catch (Exception e) {
            session.getTransaction().rollback();
        }
    }

    public void setEstadoEntrevistaEnCurso(Evento evento) {
        CatalogoServiceImpl catalogoServiceImpl = new CatalogoServiceImpl();
        EstadoEvento enCurso = catalogoServiceImpl.findByNombre(EstadoEvento.class, "en curso");
        if (enCurso != null) {
            evento.setEstadoEventoId(enCurso.getId());
        }
    }

}