/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 |
%> |