Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1408 → Rev 1409

/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java
435,6 → 435,9
public static final String QUESTIONARIOS_ASSIGNEMENTS_CHECK_STUDENTS_ADMIN = "questionarios.atribuicoes.admin";
public static final String QUESTIONARIOS_ASSIGNEMENTS_CHECK_TEACHERS_ADMIN = "questionarios.atribuicoes.check_teachers";
public static final String QUESTIONARIOS_TIPOLOGIAS_ADMIN = "questionarios.tipologias.admin";
 
public static final String ROLE_PRESIDENTE_CONCELHO_PEDAGOGICO = "pedagogicCouncil.president";
 
public static final boolean USE_XSL_CACHE =ConfigProperties.getBooleanProperty("xsl.use.cache");
 
 
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/PedagogicoAlunosProcessor.java
47,110 → 47,129
questionario.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.START);
}
 
 
 
public void initClearances(QuestionarioImpl q, UserSessionImpl usession, SimpleClearanceRuledSupport s)
{
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
if(q.getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS)
assignationDetailsClearances(q, usession, s);
 
if(q.getStateEnum() == QuestionarioImpl.State.STOPED_WITH_ANSWERS || q.getStateEnum() == QuestionarioImpl.State.PROCESSING || q.getStateEnum() == QuestionarioImpl.State.PROCESSING_WITH_ANSWERS)
{
if(q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.START ||
q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED)
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_ANO_SEMESTRE.name(),usession);
if(usession.getUser().hasRole(Globals.ROLE_PRESIDENTE_CONCELHO_PEDAGOGICO))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_DASHBOARD.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_FORM.name(),usession);
}
}
 
}
 
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED.getPosition() &&
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition())
private void assignationDetailsClearances(QuestionarioImpl q, UserSessionImpl usession, SimpleClearanceRuledSupport s) {
if(q.getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS)
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES.name(),usession);
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
if(q.getCourseSelectionTaskId() <= 0 || q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition())
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
else
if(q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.START ||
q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED)
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_ANO_SEMESTRE.name(),usession);
}
 
 
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED.getPosition() &&
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition())
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES.name(),usession);
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getCourseSelectionTaskId());
if(task.isExecuted() || (task.getSaveDate() != null &&
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked, 30 minutos
if(q.getCourseSelectionTaskId() <= 0 || q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition())
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
else
{
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getCourseSelectionTaskId());
if(task.isExecuted() || (task.getSaveDate() != null &&
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked, 30 minutos
{
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED);//rolling back to year semestre assigned
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)
{
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED);//rolling back to year semestre assigned
}
task.setExecuted(true);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
}
task.setExecuted(true);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
}
}
}
}
 
 
 
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition() &&
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition())
{
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition() &&
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition())
{
 
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name(),usession);
}
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name(),usession);
}
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_STUDENTS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name(),usession);
//s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name(),usession);
}
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_STUDENTS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name(),usession);
//s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name(),usession);
}
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_TEACHERS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_CHECK_TEACHERS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name(),usession);
}
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_TEACHERS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_CHECK_TEACHERS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name(),usession);
}
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
 
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_START_ASSIGN_ANSWERS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_START_ASSIGN_ANSWERS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS.name(),usession);
 
//ATRIBUIR RESPOSTAS MAS SO DEPOIS DE CURSOS ATRIBUIDOS
if(q.getAnswerGenerationTaskId() <= 0 || q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.getPosition())
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession);
else
{
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getAnswerGenerationTaskId());
if(task.isExecuted() || (task.getSaveDate() != null &&
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked, 30 minutos
//ATRIBUIR RESPOSTAS MAS SO DEPOIS DE CURSOS ATRIBUIDOS
if(q.getAnswerGenerationTaskId() <= 0 || q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.getPosition())
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession);
else
{
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getAnswerGenerationTaskId());
if(task.isExecuted() || (task.getSaveDate() != null &&
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked, 30 minutos
{
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED);//rolling back to courses assigned
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)
{
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED);//rolling back to courses assigned
}
task.setExecuted(true);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession);
}
task.setExecuted(true);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession);
}
}
}
}
 
if(q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.getPosition())
{
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
if(q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.getPosition())
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.name(),usession);
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.name(),usession);
}
}
}
 
}
 
@Override
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioImpl.java
330,9 → 330,21
if(getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS)
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_ASSIGNATION_OPERATIONS.name(),usession);
getiAnswersProcessorClass().initClearances(this,usession,s);
}
 
if(getStateEnum() == QuestionarioImpl.State.STOPED_WITH_ANSWERS || getStateEnum() == QuestionarioImpl.State.PROCESSING || getStateEnum() == QuestionarioImpl.State.PROCESSING_WITH_ANSWERS)
{
if(usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_GERAIS))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_DASHBOARD.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_FORM.name(),usession);
}
}
}
//AS CLEARANCES SAO VERIFICADAS LA DENTRO PARA TODOS OS ESTADOS
getiAnswersProcessorClass().initClearances(this,usession,s);
setClearanceRuledSupport(s);
}
 
367,6 → 379,8
QUESTIONARIO_CHANGE_ASSIGNEMENTS_CHECK_TEACHERS,
QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT,
 
QUESTIONARIO_SEE_DASHBOARD
 
;
 
public static QuestionarioClearancesOperation parse(String clearance)
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioDaoImpl.java
14,7 → 14,7
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
import static org.hibernate.criterion.Restrictions.*;
 
/**
* @author Jorge Machado
68,7 → 68,37
}
}
 
public List<QuestionarioImpl> findProcessing()
{
try
{
Criteria criteria = createCriteria();
criteria.add(or(eq("state",QuestionarioImpl.State.PROCESSING.name()),eq("state",QuestionarioImpl.State.PROCESSING_WITH_ANSWERS.name())));
return criteria.list();
}
catch (HibernateException e)
{
throw new DaoException(e);
}
}
 
public List<QuestionarioImpl> findNotClosed()
{
try
{
Criteria criteria = createCriteria();
criteria.add(not(or(or(eq("state",QuestionarioImpl.State.CLOSED.name()),eq("state",QuestionarioImpl.State.PROCESSING_OLAP.name())),
eq("state",QuestionarioImpl.State.OLAP.name()))))
.addOrder(Order.desc("id"));
return criteria.list();
}
catch (HibernateException e)
{
throw new DaoException(e);
}
}
 
 
public long getNumeroRespostas(long questionarioId)
{
Query q = getCurrentSession().createQuery
/branches/v3/impl/src/web/user/home/panels/questionarios.jsp
6,12 → 6,17
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<baco:hasRole role="admin,all,services,questionarios.gerais,questionarios.admin">
<baco:hasRole role="admin,all,services,questionarios.gerais,questionarios.admin,pedagogicCouncil.president">
<div class="panel panel-primary">
<div class="panel-heading">Questionários Pedagógicos</div>
<div class="panel-heading">Questionários</div>
<div class="panel-body">
<div class="list-group">
<div class="list-group-item"><html:link action="/user/listQuestionarios">Administração de Questionários</html:link></div>
<baco:hasRole role="admin,all,services,questionarios.gerais,questionarios.admin">
<div class="list-group-item"><html:link action="/user/listQuestionarios">Administração de Questionários</html:link></div>
</baco:hasRole>
<baco:hasRole role="admin,all,services,questionarios.gerais,questionarios.admin,pedagogicCouncil.president">
<div class="list-group-item"><html:link action="/user/seeQuestionarios">Acompanhamento de Questionários</html:link></div>
</baco:hasRole>
<%-- <div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do">Consulta de Resultados</html:link></div>--%>
</div>
</div>
/branches/v3/impl/src/web/user/home/teacherPae.jsp
26,17 → 26,17
<div class="col-md-6 col-sm-12 col-xs-12">
<jsp:include page="panels/configsInfo.jsp"/>
<jsp:include page="panels/docs.jsp"/>
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<jsp:include page="panels/questionarios.jsp"/>
<jsp:include page="panels/configsGeraisSistema.jsp"/>
 
</div>
<jsp:include page="panels/academicTools.jsp"/>
</baco:hasRole>
 
</div>
<div class="col-md-4 col-sm-12 col-xs-12">
<baco:hasRole role="admin,all,questionarios.gerais,questionarios.admin,pedagogicCouncil.president">
<jsp:include page="panels/questionarios.jsp"/>
</baco:hasRole>
<jsp:include page="panels/emailSet.jsp"/>
<jsp:include page="panels/academicTools.jsp"/>
</div>
 
 
/branches/v3/impl/src/web/user/questionarios/questionariosList.jsp
49,7 → 49,7
<tbody>
<%
AbstractDao.getCurrentSession().beginTransaction();
List<QuestionarioImpl> questionarios = DaoFactory.getQuestionarioDaoImpl().findSortedBy(0, 10, "id");
List<QuestionarioImpl> questionarios = DaoFactory.getQuestionarioDaoImpl().findSortedBy(0, 30, "id");
 
//As transacoes tem de estar fechadas para se chamar a tag initClearances
for(QuestionarioImpl q: questionarios)
/branches/v3/impl/src/web/user/questionarios/questionariosSee.jsp
New file
0,0 → 1,117
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.Questionario" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
 
 
<jsp:include page="headerQuestionarios.jsp"/>
 
 
<div class="container-fluid" style="margin-top: 10px">
 
 
<div class="panel panel-primary">
<div class="panel-heading clearfix">
Questionários
<baco:hasRole role="questionarios.admin,all,admin">
<html:link styleClass="btn btn-default btn-sm pull-right" action="/user/startNewQuestionario">Criar Novo <span class="glyphicon glyphicon-plus"> </span></html:link>
</baco:hasRole>
<a class="btn btn-default" href="#" data-toggle="modal" data-target="#modalHelpQuestionario">
<span class="glyphicon glyphicon-question-sign"></span> Ajuda sobre Processo dos Questionários
</a>
</div>
<div class="panel-body">
<html:errors/>
<jomm:messages/>
<table class="tablesortersimple">
<thead>
<tr>
<th>Num. Control</th>
<th>Descrição</th>
<th>Ano</th>
<th>Semestre</th>
<th>Acompanhar</th>
<th>Formulário</th>
<th>Estado</th>
<th>Alterado a</th>
</tr>
</thead>
<tbody>
<%
AbstractDao.getCurrentSession().beginTransaction();
List<QuestionarioImpl> questionarios = DaoFactory.getQuestionarioDaoImpl().findNotClosed();
 
//As transacoes tem de estar fechadas para se chamar a tag initClearances
for(QuestionarioImpl q: questionarios)
{
request.setAttribute("q",q);
%>
<baco:initClearances name="q"/>
<tr>
<td>${q.id}</td>
<td>${q.description}</td>
<td>${q.year}</td>
<td>${q.semestre}</td>
<td>
<baco:clearOperation name="q" op="QUESTIONARIO_SEE_DASHBOARD">
<html:link styleClass="btn btn-default" action="/user/seeQuestionario?questionarioId=${q.id}">Acompanhar</html:link></td>
</baco:clearOperation>
<td>
<baco:clearOperation name="q" op="QUESTIONARIO_SEE_FORM">
<%
if(q.getStateEnum().getPosition() < QuestionarioImpl.State.PROCESSING.getPosition())
{
%>
<html:link action="/user/formQuestionariosPae?questionario.id=${q.id}" styleClass="btn btn-default">Folumário</html:link>
<%
}
else if (q.getStateEnum().getPosition() < QuestionarioImpl.State.OLAP.getPosition())
{
%>
<html:link action="/user/formQuestionariosPae?questionario.id=${q.id}" styleClass="btn btn-warning">Trancado</html:link>
<%
}
else
{
%>
<html:link action="/user/formQuestionariosPae?questionario.id=${q.id}" styleClass="btn btn-success">Terminado</html:link>
<%
}
%>
</baco:clearOperation>
</td>
<td>
<logic:equal name="q" property="state" value="OLAP">
<div class="alert alert-success alert-small" >
<bean:message key="questionario.state.${q.state}"/>
</div>
</logic:equal>
<logic:notEqual name="q" property="state" value="OLAP">
<div class="alert alert-warning alert-small">
<bean:message key="questionario.state.${q.state}"/>
</div>
</logic:notEqual>
 
</td>
<td><%=pt.estgp.estgweb.web.utils.DatesUtils.getStringFromDate(q.getUpdateDate())%></td>
</tr>
<%
}
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</tbody>
</table>
</div>
 
</div>
 
</div>
/branches/v3/impl/src/web/user/questionarios/respostaQuestionario.jsp
71,7 → 71,8
<label class="label label-pill label-default" style="font-size: 1.1em"><%=alunoRequisitado.getTipologiaRequisitada().getDsTipologia()%>
</div>
<div class="panel-body">
 
<html:errors/>
<jomm:messages/>
<div class="panel panel-default">
<div class="panel-body">
<%=qLoad.getIntroHtml()%>
/branches/v3/impl/src/web/user/questionarios/topnavQuestionarioSee.jsp
New file
0,0 → 1,17
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
Long questionarioId = Long.parseLong(qId);
 
 
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/homePae.do", "intranet.separator.home.back");
topNav.addNavPlace("/user/seeQuestionarios.do", "surveys");
topNav.addNavPlace(null, "survey.see",""+questionarioId);
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/questionarios/questionarioStatePROCESSING.jsp
13,84 → 13,4
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="Questionario" type="pt.estgp.estgweb.domain.QuestionarioImpl" scope="request"/>
<div class="col-sm-6">
<div class="alert alert-info">
<%
AbstractDao.getCurrentSession().beginTransaction();
 
QuestionarioDaoImpl.QuestionarioStatsVars questionarioStatsVars = DaoFactory.getQuestionarioDaoImpl().loadQuestionarioStatsPedagogico(Questionario.getId());
 
 
%>
<%=questionarioStatsVars.respostasObtidas%> Respostas de <%=questionarioStatsVars.respostasRequisitadas%>
</div>
</div>
<div class="col-sm-6">
<baco:clearOperation name="Questionario" op="QUESTIONARIO_STOP_PROCESSEMENT">
<button class="btn btn-danger" type="button" data-toggle="modal" data-target="#confirm-ModalGeneric" data-message="Esta operação irá parar o questionário e os alunos não poderão responder!! Tem a certeza que deseja prosseguir?" data-href="<%=request.getContextPath()%>/user/questionariosPaeYearSemestre.do?dispatch=stopProcessement&questionarioId=${Questionario.id}"><span class="icon icon-stop"> </span> Parar Questionário</button>
</baco:clearOperation>
</div>
<div class="col-sm-12">
<table class="tablesorter-blue">
<thead>
<th>Cursos Selecionados</th>
<th>Total de Unidades</th>
<th>Unidades Não Selecionadas</th>
<th>Unidades Selecionadas</th>
<th>Turmas Selecionadas</th>
<th>Alunos Selecionados</th>
<th>Professores Selecionados</th>
<th>Respostas Requisitadas</th>
<th>Respondidos</th>
 
</thead>
<tbody>
<td><%=questionarioStatsVars.cursos%></td>
<td><%=questionarioStatsVars.unidades%></td>
<td><%=questionarioStatsVars.unidades - questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.turmas%></td>
<td><%=questionarioStatsVars.alunosDeUsadas%></td>
<td><%=questionarioStatsVars.profsDeUsadas%></td>
<td><%=questionarioStatsVars.respostasRequisitadas%></td>
<td><%=questionarioStatsVars.respostasObtidas%></td>
 
</tbody>
</table>
</div>
<div class="col-sm-12">
<table class="tablesorterfiltered">
<thead>
<th class="filter-name filter-select">Instituição</th>
<th>Código</th>
<th>Curso</th>
<th>Unidades</th>
<th>Respondidos</th>
<th>Por Responder</th>
<th>Total</th>
</thead>
<tbody>
<%
List<Long> cursos = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().findCursosAfetosIds(Questionario.getId());
for(Long cursoId: cursos)
{
QuestionarioPedagogicoCursoAfeto cursoAfeto = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().load(cursoId);
long respostasCurso = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().countRespostas(cursoId);
%>
<tr>
<td><%=cursoAfeto.getNomeInstituicao()%></td>
<td><%=cursoAfeto.getCodigoCurso()%></td>
<td><%=cursoAfeto.getNome()%></td>
<td><%=cursoAfeto.getUnidadesAfetas().size()%></td>
<td><%=respostasCurso%></td>
<td><%=cursoAfeto.getStatRespostasRequisitadas() - respostasCurso%></td>
<td><%=cursoAfeto.getStatRespostasRequisitadas()%></td>
</tr>
<%
}
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</tbody>
</table>
 
</div>
<jsp:include page="pedagogicoEstudante/questionarioDashBoard.jsp"/>
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/questionarioDashBoard.jsp
New file
0,0 → 1,121
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.Questionario" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.dao.impl.QuestionarioDaoImpl" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.web.exceptions.NotAuthorizedException" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
 
<%
String questionarioIdStr = request.getParameter("questionarioId");
long questionarioId = Long.parseLong(questionarioIdStr);
 
AbstractDao.getCurrentSession().beginTransaction();
 
QuestionarioImpl questionario = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().load(questionarioId);
questionario.initClearances(UserSession,true);
request.setAttribute("Questionario",questionario);
 
if(!questionario.isClear(UserSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_DASHBOARD.name()))
{
return; //NAO PODE VER O PAINEL
}
else
{
QuestionarioDaoImpl.QuestionarioStatsVars questionarioStatsVars = DaoFactory.getQuestionarioDaoImpl().loadQuestionarioStatsPedagogico(questionarioId);
%>
<div class="col-sm-6">
<div class="alert alert-info">
<%=questionarioStatsVars.respostasObtidas%> respostas obtidas de <%=questionarioStatsVars.respostasRequisitadas%> possiveis
</div>
</div>
<div class="col-sm-6">
<baco:clearOperation name="Questionario" op="QUESTIONARIO_STOP_PROCESSEMENT">
<button class="btn btn-danger" type="button" data-toggle="modal" data-target="#confirm-ModalGeneric" data-message="Esta operação irá parar o questionário e os alunos não poderão responder!! Tem a certeza que deseja prosseguir?" data-href="<%=request.getContextPath()%>/user/questionariosPaeYearSemestre.do?dispatch=stopProcessement&questionarioId=${Questionario.id}"><span class="icon icon-stop"> </span> Parar Questionário</button>
</baco:clearOperation>
</div>
<div class="col-sm-12">
<table class="tablesorter-blue">
<thead>
<th>Cursos Selecionados</th>
<th>Total de Unidades</th>
<th>Unidades Não Selecionadas</th>
<th>Unidades Selecionadas</th>
<th>Turmas Selecionadas</th>
<th>Alunos Selecionados</th>
<th>Professores Selecionados</th>
<th>Respondidos</th>
<th>Por Responder</th>
<th>Respostas Requisitadas</th>
 
</thead>
<tbody>
<td><%=questionarioStatsVars.cursos%></td>
<td><%=questionarioStatsVars.unidades%></td>
<td><%=questionarioStatsVars.unidades - questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.turmas%></td>
<td><%=questionarioStatsVars.alunosDeUsadas%></td>
<td><%=questionarioStatsVars.profsDeUsadas%></td>
<td><label class="label label-success" style="font-size: 1em"><%=questionarioStatsVars.respostasObtidas%></label></td>
<td><label class="label label-danger" style="font-size: 1em"><%=(questionarioStatsVars.respostasRequisitadas-questionarioStatsVars.respostasObtidas)%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=questionarioStatsVars.respostasRequisitadas%></label></td>
 
</tbody>
</table>
</div>
<div class="col-sm-12">
<table class="tablesorterfiltered">
<thead>
<th class="filter-name filter-select">Instituição</th>
<th>Código</th>
<th>Curso</th>
<th>Unidades</th>
<th>Respondidos</th>
<th>Por Responder</th>
<th>Total</th>
</thead>
<tbody>
<%
List<Long> cursos = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().findCursosAfetosIds(questionarioId);
for(Long cursoId: cursos)
{
QuestionarioPedagogicoCursoAfeto cursoAfeto = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().load(cursoId);
long respostasCurso = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().countRespostas(cursoId);
request.setAttribute("cursoAfeto",cursoAfeto);
%>
<tr>
<td><%=cursoAfeto.getNomeInstituicao()%></td>
<td><%=cursoAfeto.getCodigoCurso()%></td>
<td><%=cursoAfeto.getNome()%></td>
<td>
<a href="#" data-href="<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/questionarioCourseDashBoard.jsp?cursoAfetoId=${cursoAfeto.id}" data-title="Acompanhamento de questionários do curso (${cursoAfeto.codigoCurso}) ${cursoAfeto.nome} da ${cursoAfeto.nomeInstituicao})" data-toggle="modal" data-target="#modalAjaxRequest">
<%=cursoAfeto.getUnidadesAfetas().size()%>
</a>
 
</td>
<td><label class="label label-success" style="font-size: 1em"><%=respostasCurso%></label></td>
<td><label class="label label-danger" style="font-size: 1em"><%=cursoAfeto.getStatRespostasRequisitadas() - respostasCurso%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=cursoAfeto.getStatRespostasRequisitadas()%></label></td>
</tr>
<%
}
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</tbody>
</table>
 
</div>
<%
}//FIM DE PAINEL CLEARED
%>
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/questionarioCourseDashBoard.jsp
New file
0,0 → 1,102
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="org.hibernate.Query" %>
<%@ page import="pt.estgp.estgweb.domain.Questionario" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfeta" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
 
<%
String cursoAfetoId = request.getParameter("cursoAfetoId");
 
 
AbstractDao.getCurrentSession().beginTransaction();
 
QuestionarioPedagogicoCursoAfeto cursoAfeto = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().load(Long.parseLong(cursoAfetoId));
Questionario questionarioV = cursoAfeto.getQuestionario();
 
QuestionarioImpl questionario = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().narrow(questionarioV);
questionario.initClearances(UserSession,true);
request.setAttribute("Questionario",questionario);
 
if(!questionario.isClear(UserSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_DASHBOARD.name()))
{
return; //NAO PODE VER O PAINEL
}
else
{
Query q = AbstractDao.getCurrentSession().createQuery(
"select " +
" u.codigoUnidade " +
",u.nome " +
",t.cdDocente " +
",t.nomeDocente " +
",t.dsTipologia " +
",t.cdTurma " +
",sum (case when u.usar = true AND rR.resposta is null then 1 else 0 end) AS porResponder " +
",sum (case when u.usar = true AND rR.resposta is null then 0 else 1 end) AS respostasObtidas " +
",count(distinct a.aluno)" +
" from u in class " + QuestionarioPedagogicoUnidadeCurricularAfeta.class.getName() + " " +
" join u.cursoAfeto c " +
" join u.tipologiasRequisitadas t " +
" join t.alunosRequisitados a " +
" join a.respostaRequisitada rR " +
" left join rR.resposta r " +
 
" where c.id = :id group by t.id order by u.nome asc");
q.setLong("id",cursoAfeto.getId());
 
List<Object[]> tipologias = q.list();
%>
 
<div class="col-sm-12">
<table class="tablesorterfiltered">
<thead>
<th>Código</th>
<th>Unidade</th>
<th>Código Docente</th>
<th class="filter-name filter-select">Docente</th>
<th>Tipologia</th>
<th>Turma</th>
<th>Por Responder</th>
<th>Respondidos</th>
<th>Estudantes</th>
</thead>
<tbody>
<%
 
for(Object[] tipologia: tipologias)
{
%>
<tr>
<td><%=tipologia[0]%></td>
<td><%=tipologia[1]%></td>
<td><%=tipologia[2]%></td>
<td><%=tipologia[3]%></td>
<td><%=tipologia[4]%></td>
<td><%=tipologia[5]%></td>
<td><label class="label label-danger" style="font-size: 1em"><%=tipologia[6]%></label></td>
<td><label class="label label-success" style="font-size: 1em"><%=tipologia[7]%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=tipologia[8]%></label></td>
</tr>
<%
}
%>
</tbody>
</table>
 
</div>
<%
AbstractDao.getCurrentSession().getTransaction().commit();
}//FIM DE PAINEL CLEARED
%>