Subversion Repositories bacoAlunos

Rev

Rev 1378 | Rev 1395 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain.dao.impl;

import jomm.dao.impl.AbstractDao;
import org.hibernate.Query;
import org.hibernate.criterion.Projections;
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;

import java.util.List;

import static org.hibernate.criterion.Restrictions.eq;

/**
 * Created by jorgemachado on 24/03/16.
 */

public class QuestionarioPedagogicoCursoAfetoDaoImpl extends  QuestionarioPedagogicoCursoAfetoDao{

    public static QuestionarioPedagogicoCursoAfetoDaoImpl getInstance() {
        if (myInstance == null)
            myInstance = new QuestionarioPedagogicoCursoAfetoDaoImpl();
        return (QuestionarioPedagogicoCursoAfetoDaoImpl) myInstance;
    }

    public List<QuestionarioPedagogicoCursoAfeto> find(long questionarioId,1.5.0/docs/api/java/lang/String.html">String cursoCode)
    {
        return createCriteria()
                .add(eq("questionario.id", questionarioId))
                .add(eq("codigoCurso", cursoCode))
        .list();
    }
    public List<QuestionarioPedagogicoCursoAfeto> find(long questionarioId)
    {
        return createCriteria()
                .add(eq("questionario.id", questionarioId))
                .list();
    }

    public List<Long> findCursosAfetosIds(long questionarioId)
    {
        return createCriteria()
                .setProjection(Projections.distinct(Projections.property("id")))
                .add(eq("questionario.id", questionarioId))
                .list();
    }




    public static class CourseStatsVars
    {
        public long unidades;
        public long marcadas;
        public long observadas;
        public long porVerProfs;
        public long porVer;
        public long naoUsadas;
    }

    public CourseStatsVars loadStats(long cursoAfetoId)
    {
        CourseStatsVars courseStatsVars = new CourseStatsVars();
        1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
                " sum (case when u.vista = false then 1 else 0 end) AS porVer " +
                ",sum (case when u.vistaProfs = false then 1 else 0 end) AS porVerProfs " +
                ",sum (case when u.usar = false then 1 else 0 end) AS naoUsadas " +
                ",sum (case when u.marked = true then 1 else 0 end) AS marked " +
                ",sum (case when u.obs is not NULL and u.obs != '' then 1 else 0 end) AS observadas " +
                ",count(distinct u.id) AS unidades " +
                "from " + QuestionarioPedagogicoCursoAfeto.class.getName() + " c " +
                "JOIN c.unidadesAfetas u " +
                "WHERE c.id = :id " +
                "GROUP BY c.id");

        q.setLong("id",cursoAfetoId);
        5+0%2Fdocs%2Fapi+Object">Object[] results = (5+0%2Fdocs%2Fapi+Object">Object[]) q.uniqueResult();
        courseStatsVars.porVer = (1.5.0/docs/api/java/lang/Long.html">Long) results[0];
        courseStatsVars.porVerProfs = (1.5.0/docs/api/java/lang/Long.html">Long) results[1];
        courseStatsVars.naoUsadas =   (1.5.0/docs/api/java/lang/Long.html">Long) results[2];
        courseStatsVars.marcadas =   (1.5.0/docs/api/java/lang/Long.html">Long) results[3];
        courseStatsVars.observadas =   (1.5.0/docs/api/java/lang/Long.html">Long) results[4];
        courseStatsVars.unidades =   (1.5.0/docs/api/java/lang/Long.html">Long) results[5];

        return courseStatsVars;
    }
}