Dao.DaoTPromocion.java Source code

Java tutorial

Introduction

Here is the source code for Dao.DaoTPromocion.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 Dao;

import Interface.InterfacePromocion;
import Pojo.Precio;
import Pojo.Promocion;
import Pojo.TipoPrecio;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author server
 */
public class DaoTPromocion implements InterfacePromocion {

    private Session sesion;
    private Transaction tx;

    private void iniciaOperacion() {
        try {
            sesion = HibernateUtil.getSessionFactory().openSession();
            tx = sesion.beginTransaction();
        } catch (HibernateException ex) {

        }

    }

    private void manejaExcepcion(HibernateException he) throws HibernateException {
        tx.rollback();
        throw new HibernateException("Ocurri un error en la capa de acceso a datos", he);
    }

    @Override
    public boolean registrar(Promocion tPromocion, BigDecimal precioMatricula, BigDecimal precioColegiatura)
            throws Exception {
        boolean band = false;
        try {
            iniciaOperacion();
            sesion.save(tPromocion);
            tx.commit();
            sesion.close();

            iniciaOperacion();
            TipoPrecio tipo_Precio = null;
            Precio precio = null;
            for (int i = 1; i < 3; i++) {
                tipo_Precio = new TipoPrecio();
                tipo_Precio.setId(i);
                precio = new Precio();
                precio.setTipoPrecio(tipo_Precio);
                precio.setPromocion(tPromocion);
                if (i == 1)
                    precio.setValor(precioMatricula);
                else
                    precio.setValor(precioColegiatura);

                sesion.save(precio);
            }

            tx.commit();

            sesion.close();
            band = true;
        } catch (Exception e) {
            tx.rollback();
            band = false;
        }

        return band;
    }

    @Override
    public List<Promocion> getTodasPromociones() throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();
        String hql = "from Permiso as p where p.estado = '1' order by p.orden, p.descripcion asc";
        Query query = sesion.createQuery(hql);
        List<Promocion> lstPermiso = (List<Promocion>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public List<Promocion> getPromocionesMaestrias(String maestriaDescripcion, boolean mostrar) throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();
        String consulta = "";

        String estado = "";
        if (mostrar)
            estado = "0";
        else
            estado = "1";

        if (maestriaDescripcion.isEmpty())
            consulta = "";
        else
            consulta = "and m.descripcion like '%" + maestriaDescripcion + "%'";

        String hql = "from Promocion pr inner join fetch pr.maestria m " + "where pr.estado = '" + estado
                + "' and m.estado='1' and " + "(year(current_date) >= year(pr.fechaInicio) and "
                + "year(current_date)<= year(pr.fechaFin)) " + consulta + " order by pr.id desc";
        Query query = sesion.createQuery(hql);
        List<Promocion> lstPermiso = (List<Promocion>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public List<Promocion> getValidacionPromocionesMaestrias(String maestriaDescripcion, int promocion)
            throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();
        String consulta = "";

        String estado = "1";

        consulta = "and m.descripcion = '" + maestriaDescripcion + "'";

        String hql = "from Promocion pr inner join fetch pr.maestria m " + "where pr.estado = '" + estado
                + "' and m.estado='1' " + consulta + " and pr.descripcion = " + promocion + " order by pr.id desc";
        Query query = sesion.createQuery(hql);
        List<Promocion> lstPermiso = (List<Promocion>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public List<Precio> getPromocionesPrecios(int idPromocion) throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();

        String hql = "from Precio precio inner join fetch precio.promocion pr inner join fetch precio.tipoPrecio tipoPrecio where pr.id = "
                + idPromocion + " ";

        Query query = sesion.createQuery(hql);
        List<Precio> lstPermiso = (List<Precio>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public List<Promocion> getPromocionesMaestrias(int idMaestria) throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();

        String hql = "from Promocion pr inner join fetch pr.maestria m "
                + "where pr.estado = '1' and m.estado='1' and " + "(year(current_date) >= year(pr.fechaInicio) and "
                + "year(current_date)<= year(pr.fechaFin)) and " + "m.id = " + idMaestria + " order by pr.id desc";
        Query query = sesion.createQuery(hql);
        List<Promocion> lstPermiso = (List<Promocion>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public List<Promocion> getPromocionesMaestriasEstudiantes(int idMaestria, int idEstudiante) throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();

        String hql = "from Promocion pr inner join fetch pr.maestria maestr \n"
                + "inner join fetch pr.solicitudInscripcions sol \n" + "inner join fetch sol.matriculas matr \n"
                + "inner join fetch sol.estudiante est \n" + "where maestr.id = " + idMaestria + " and est.id = "
                + idEstudiante + " order by pr.descripcion asc";
        Query query = sesion.createQuery(hql);
        List<Promocion> lstPermiso = (List<Promocion>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public List<Promocion> getPromocionesMaestriasDocente(int idDocente) throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();

        String hql = "from Promocion pr inner join fetch pr.maestria m inner join fetch pr.modulos mod inner join fetch mod.usuario user \n"
                + "where pr.estado = '1' and m.estado='1' and \n"
                + "(year(current_date) >= year(pr.fechaInicio) and \n"
                + "year(current_date)<= year(pr.fechaFin)) and \n" + "user.id = " + idDocente
                + " and user.estado='1' order by pr.id desc";
        Query query = sesion.createQuery(hql);
        query.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        List<Promocion> lstPermiso = (List<Promocion>) query.list();
        sesion.close();
        return lstPermiso;
    }

    @Override
    public Promocion getPromocion(int idMaestria) throws Exception {
        this.sesion = null;
        this.tx = null;
        iniciaOperacion();
        String hql = "from Permiso as p where p.estado = '1' order by p.orden, p.descripcion asc";
        Query query = sesion.createQuery(hql);
        Promocion promocion = (Promocion) query.uniqueResult();
        sesion.close();
        return promocion;
    }

    @Override
    public boolean update(Promocion tPromocion, BigDecimal precioMatricula, BigDecimal precioColegiatura)
            throws Exception {
        boolean band = false;
        try {
            iniciaOperacion();
            sesion.update(tPromocion);
            tx.commit();
            sesion.close();

            iniciaOperacion();

            String hql = "from Precio precio inner join fetch precio.promocion pr inner join fetch precio.tipoPrecio tipoPrecio where pr.id = "
                    + tPromocion.getId() + " ";
            Query query = sesion.createQuery(hql);
            List<Precio> lstPrecio = (List<Precio>) query.list();
            sesion.close();

            iniciaOperacion();

            TipoPrecio tipo_Precio = null;
            Precio precio = null;
            for (int i = 0; i < lstPrecio.size(); i++) {

                precio = lstPrecio.get(i);

                if (lstPrecio.get(i).getTipoPrecio().getId() == 1)
                    precio.setValor(precioMatricula);
                else if (lstPrecio.get(i).getTipoPrecio().getId() == 2)
                    precio.setValor(precioColegiatura);

                sesion.update(precio);
            }
            if (lstPrecio.size() <= 0) {
                for (int i = 1; i < 3; i++) {
                    tipo_Precio = new TipoPrecio();
                    tipo_Precio.setId(i);
                    precio = new Precio();
                    precio.setTipoPrecio(tipo_Precio);
                    precio.setPromocion(tPromocion);
                    if (i == 1) {
                        precio.setValor(precioMatricula);
                    } else {
                        precio.setValor(precioColegiatura);
                    }

                    sesion.save(precio);
                }
            }

            tx.commit();
            sesion.close();
            band = true;
        } catch (Exception e) {
            tx.rollback();
            band = false;
        }

        return band;
    }

    @Override
    public int getUltimoidPromocion(String descripcion) throws Exception {
        this.sesion = null;
        this.tx = null;
        int ultimoId = 0;
        iniciaOperacion();
        String hql = "from Promocion as p inner join fetch p.maestria as m where m.descripcion like '%"
                + descripcion + "%' and p.estado = '1' order by p.descripcion desc";
        Query query = sesion.createQuery(hql);
        List<Promocion> lstPromocion = (List<Promocion>) query.list();
        if (lstPromocion.size() > 0)
            ultimoId = lstPromocion.get(0).getDescripcion();
        else
            ultimoId = 0;

        sesion.close();
        return ultimoId;
    }

    @Override
    public boolean existe(Promocion tPromocion) throws Exception {
        this.sesion = null;
        this.tx = null;
        boolean band = false;
        //        Calendar calendar = Calendar.getInstance();
        //        calendar.setTime(tPromocion.getFechaInicio());
        //        int anioInicio = calendar.get(Calendar.YEAR);
        //        
        //        calendar.setTime(tPromocion.getFechaFin());
        //        int anioFin = calendar.get(Calendar.YEAR);

        iniciaOperacion();
        //        String hql="from Promocion as pr where pr.maestria = "+tPromocion.getMaestria().getId()+" and "
        //                + "pr.idUsuario = "+tPromocion.getIdUsuario()+" and "
        //                + "year(pr.fechaInicio) = "+anioInicio+" and "
        //                + "year(pr.fechaFin) = "+anioFin+"";

        String hql = "from Promocion as pr where pr.maestria = " + tPromocion.getMaestria().getId() + " and "
                + "pr.idUsuario = " + tPromocion.getIdUsuario() + " and " + "pr.fechaInicio = '"
                + tPromocion.getFechaInicio() + "' and " + "pr.fechaFin = '" + tPromocion.getFechaFin()
                + "' and pr.estado = '1'";
        Query query = sesion.createQuery(hql);
        List<Promocion> promocion = (List<Promocion>) query.list();
        if (promocion.size() > 0)
            band = true;
        else
            band = false;

        sesion.close();
        return band;
    }

    @Override
    public boolean delete(Promocion tPromocion) throws Exception {
        boolean band = false;
        try {
            iniciaOperacion();
            sesion.delete(tPromocion);

            tx.commit();
            sesion.close();
            band = true;
        } catch (Exception e) {
            tx.rollback();
            band = false;
        }

        return band;
    }

}