package pt.estgp.estgweb.services.questionarios;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.IAnswersProcessor;
import pt.estgp.estgweb.domain.JobServiceTask;
import pt.estgp.estgweb.domain.QuestionarioImpl;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.utils.SimpleClearanceRuledSupport;
import pt.estgp.estgweb.services.questionarios.pedagogico.AnswersAlunosProcessor;
import pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService;
import pt.estgp.estgweb.utils.ConfigProperties;
/**
* Created by jorgemachado on 20/03/16.
*/
public class PedagogicoAlunosProcessor
implements IAnswersProcessor
{
static 1.5.0/docs/api/java/lang/String.html">String title = ConfigProperties.
getProperty("pt.estgp.estgweb.services.questionarios.PedagogicoAlunosProcessor.title");
static 1.5.0/docs/api/java/lang/String.html">String jsp = ConfigProperties.
getProperty("pt.estgp.estgweb.services.questionarios.PedagogicoAlunosProcessor.jsp");
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String getHistoryDriveConstraint
() {
return "QuestionarioAvaliacaoUnidadesCurricularesEstudantes";
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String getTitle
() {
return title
;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String getAfetacoesManagementForward
()
{
return jsp
;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public void initQuestionarioAfetacoesVariables
(QuestionarioImpl questionario
)
{
questionario.
setAfetacoesVarCoursesSelectionForJob(new UpdateCoursesAndUnitsJobService
().
deserializeCoursesList(questionario
));
}
public void startAfetacoes
(QuestionarioImpl questionario
)
{
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.
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)))
{
if(q.
getCourseSelectionTaskId() <= 0 || q.
getSubStatePedagodigoEnum().
getPosition() == QuestionarioImpl.
SubStatePedagogico.
COURSES_ASSIGNED.
getPosition())
s.
addClearance(QuestionarioImpl.
QuestionarioClearancesOperation.
QUESTIONARIO_SCHEDULLE_SELECT_COURSES.
name(),usession
);
else
{
JobServiceTask task = DaoFactory.
getJobServiceTaskDaoImpl().
load(q.
getCourseSelectionTaskId());
if(task.
isExecuted() ||
(task.
getSaveDate() !=
null &&
1.5.0/docs/api/java/lang/System.html">System.
currentTimeMillis()-task.
getSaveDate().
getTime()>1800000)) //half hour blocked, 30 minutos
{
if(!task.
isExecuted() && 1.5.0/docs/api/java/lang/System.html">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
);
}
}
}
}
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_ASSIGNEMENTS_ADMIN))
{
s.
addClearance(QuestionarioImpl.
QuestionarioClearancesOperation.
QUESTIONARIO_CHANGE_ASSIGNEMENTS.
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)))
{
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 &&
1.5.0/docs/api/java/lang/System.html">System.
currentTimeMillis()-task.
getSaveDate().
getTime()>1800000)) //half hour blocked, 30 minutos
{
if(!task.
isExecuted() && 1.5.0/docs/api/java/lang/System.html">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
);
}
}
}
}
if(q.
getSubStatePedagodigoEnum().
getPosition() == QuestionarioImpl.
SubStatePedagogico.
ANSWERS_ASSIGNED.
getPosition())
{
if((usession.
getUser().
isSuperuserOrAdmin()
|| usession.
getUser().
hasRole(Globals.
QUESTIONARIOS_ADMIN)))
{
s.
addClearance(QuestionarioImpl.
QuestionarioClearancesOperation.
QUESTIONARIO_FINNISH_ASSIGNEMENTS.
name(),usession
);
}
}
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/Class.html">Class getJobServiceTaskAnswersProcessor
() {
return AnswersAlunosProcessor.
class;
}
}