Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.filters.filters;

import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;

import java.util.List;

/**
 * @author Jorge Machado
 * @date 4/Jun/2008
 * @see pt.estgp.estgweb.filters.filters
 */

public class ResourceAccessControlQuestionariosReportDocenteFilter extends ResourceAccessControlQuestionariosReportBoardsPedagogicoFilter
{
    public boolean canAccessResource(UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String identifier)
    {

        if(userSession.getUser() != null && userSession.getUser() instanceof Teacher)
        {
            Teacher t = (Teacher) userSession.getUser();
            int code = t.getSigesCode();

            QuestionarioReportDocenteFile q =
                    DaoFactory.getQuestionarioReportDocenteFileDaoImpl().findByRepository(identifier);

            if(q == null)
                return false;

            QuestionarioReportFileGroup questionarioReportFileGroup = q.getReportGroup();
            QuestionarioReportFileGroupDocentesAno questionarioReportFileGroupDocentesAno = (QuestionarioReportFileGroupDocentesAno) DaoFactory.getQuestionarioReportFileGroupDaoImpl().narrow(questionarioReportFileGroup);

            //DOCENTE SO VE SE ESTIVER ATIVO
            if(q.isActive() && q.getEntityCode().equals(""+code))
                return true;
            //BOARDS AND PEDAGOGICO
            else if(super.canAccessResource(userSession,identifier))
                return true;
            //PRESIDENTES DE ESCOLA SO VEEM SE ESTIVER ATIVO
            else if(q.isActive())
            {
                /*
                DIRECAO DA ESCOLA SAI
                //CHECK IF THERE IS ANY UNIT IN SCHOLL AND IF THIS USER IS FROM THE BOARD OF THAT SCHOOL
                if(userSession.getUser().hasRole(Globals.ROLE_BOARD_SCHOOL_ESAE) ||
                        userSession.getUser().hasRole(Globals.ROLE_BOARD_SCHOOL_ESAE) ||
                        userSession.getUser().hasRole(Globals.ROLE_BOARD_SCHOOL_ESAE) ||
                        userSession.getUser().hasRole(Globals.ROLE_BOARD_SCHOOL_ESAE))
                {
                    List <CourseUnit> courseUnitList = DaoFactory
                            .getCourseUnitDaoImpl()
                            .loadTeachedImportYearSemestreUnits(t.getId(), questionarioReportFileGroupDocentesAno.getImportYear());

                    for(CourseUnit cu : courseUnitList)
                    {
                        String instituionCode = cu.getCourse().getInstitutionalCode();
                        if(userSession.getUser().hasRole(Globals.ROLE_BOARD_SCHOOL(instituionCode)))
                        {
                            return true;
                        }
                    }
                }
                */



                //DEPARTAMENTO
                //Carrega as unidades do Docente e confirma se alguma das unidades
                //pertence a um departamento onde o user atual esteja ligado
                List<CourseUnit> courseUnitList = DaoFactory
                        .getCourseUnitDaoImpl()
                        .loadTeachedImportYearSemestreUnits(t.getId(), questionarioReportFileGroupDocentesAno.getImportYear());

                for(CourseUnit cu : courseUnitList)
                {
                    if(cu.getCourse().getDepartment() != null)
                    {
                        if(cu.getCourse().getDepartment().getBoardRole() != null)
                            if(userSession.getUser().hasRole(cu.getCourse().getDepartment().getBoardRole()))
                                return true;

                        if(cu.getCourse().getDepartment().getDirectorRole() != null)
                            if(userSession.getUser().hasRole(cu.getCourse().getDepartment().getDirectorRole()))
                                return true;
                    }

                }

            }

            return false;

        }
        return false;
    }
}