Subversion Repositories bacoAlunos

Rev

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

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())
        {
            s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_START_ASSIGN_ANSWERS.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_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);
            }

            if((usession.getUser().isSuperuserOrAdmin()
                    || usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
            {

                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;
    }


}