Package org.fenixedu.academic.ui.faces.bean.coordinator.evaluation

Source Code of org.fenixedu.academic.ui.faces.bean.coordinator.evaluation.CoordinatorEvaluationsBackingBean

/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FenixEdu Academic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FenixEdu Academic.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.ui.faces.bean.coordinator.evaluation;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

import javax.faces.model.SelectItem;

import org.apache.commons.beanutils.BeanComparator;
import org.apache.commons.collections.comparators.ComparatorChain;
import org.apache.struts.util.MessageResources;
import org.fenixedu.academic.domain.CurricularCourse;
import org.fenixedu.academic.domain.CurricularYear;
import org.fenixedu.academic.domain.DegreeCurricularPlan;
import org.fenixedu.academic.domain.DegreeModuleScope;
import org.fenixedu.academic.domain.Evaluation;
import org.fenixedu.academic.domain.Exam;
import org.fenixedu.academic.domain.ExecutionCourse;
import org.fenixedu.academic.domain.ExecutionDegree;
import org.fenixedu.academic.domain.ExecutionSemester;
import org.fenixedu.academic.domain.ExecutionYear;
import org.fenixedu.academic.domain.Grouping;
import org.fenixedu.academic.domain.Project;
import org.fenixedu.academic.domain.WrittenEvaluation;
import org.fenixedu.academic.domain.WrittenTest;
import org.fenixedu.academic.domain.exceptions.DomainException;
import org.fenixedu.academic.service.services.exceptions.FenixServiceException;
import org.fenixedu.academic.service.services.exceptions.NotAuthorizedException;
import org.fenixedu.academic.service.services.resourceAllocationManager.exams.CreateWrittenEvaluation;
import org.fenixedu.academic.service.services.resourceAllocationManager.exams.DeleteWrittenEvaluation;
import org.fenixedu.academic.service.services.resourceAllocationManager.exams.EditWrittenEvaluation;
import org.fenixedu.academic.service.services.teacher.DeleteEvaluation;
import org.fenixedu.academic.ui.faces.bean.base.FenixBackingBean;
import org.fenixedu.academic.ui.faces.components.util.CalendarLink;
import org.fenixedu.academic.ui.struts.action.coordinator.DegreeCoordinatorIndex;
import org.fenixedu.academic.util.Bundle;
import org.fenixedu.academic.util.EvaluationType;

import pt.ist.fenixframework.FenixFramework;
import pt.utl.ist.fenix.tools.util.DateFormatUtil;

public class CoordinatorEvaluationsBackingBean extends FenixBackingBean {

    private static final MessageResources messages = MessageResources.getMessageResources(Bundle.DEGREE);

    private static final Locale locale = new Locale("pt", "PT");

    // These are context variables
    private String degreeCurricularPlanID = null;

    private String executionPeriodID = null;

    private String curricularYearID = null;

    // These are context variables for creating evaluations
    private String evaluationType = null;

    private String executionCourseID = null;

    // These variables hold the necessary information for creating/editing the
    // evaluations
    private String name = null;

    private String begin = null;

    private String end = null;

    private String description = null;

    private String date = null;

    private String beginTime = null;

    private String endTime = null;

    private String evaluationID = null;

    private Evaluation evalution;

    private Boolean onlineSubmissionsAllowed = null;

    private Integer maxSubmissionsToKeep = null;

    private String groupingID = null;

    private List<SelectItem> executionCourseGroupings = null;

    private Evaluation evaluation;

    public String getDegreeCurricularPlanID() {
        DegreeCoordinatorIndex.setCoordinatorContext(getRequest());
        return (degreeCurricularPlanID == null) ? degreeCurricularPlanID = getAndHoldStringParameter("degreeCurricularPlanID") : degreeCurricularPlanID;
    }

    public String getExecutionPeriodID() throws FenixServiceException {
        if (executionPeriodID == null) {
            executionPeriodID = getAndHoldStringParameter("executionPeriodID");
            if (executionPeriodID == null) {
                final ExecutionSemester executionSemester = getCurrentExecutionPeriod();
                executionPeriodID = executionSemester.getExternalId();
            }
        }
        return executionPeriodID;
    }

    public void setExecutionPeriodID(final String executionPeriodID) {
        this.executionPeriodID = executionPeriodID;
    }

    public String getCurricularYearID() {
        return (curricularYearID == null) ? curricularYearID = getAndHoldStringParameter("curricularYearID") : curricularYearID;
    }

    public void setCurricularYearID(String curricularYearID) {
        this.curricularYearID = curricularYearID;
    }

    public DegreeCurricularPlan getDegreeCurricularPlan() {
        final String degreeCurricularPlanID = getDegreeCurricularPlanID();
        return FenixFramework.getDomainObject(degreeCurricularPlanID);
    }

    private ExecutionSemester getCurrentExecutionPeriod() throws FenixServiceException {
        ExecutionSemester lastExecutionPeriod = null;
        final DegreeCurricularPlan degreeCurricularPlan = getDegreeCurricularPlan();
        for (final ExecutionDegree executionDegree : degreeCurricularPlan.getExecutionDegreesSet()) {
            final ExecutionYear executionYear = executionDegree.getExecutionYear();
            for (final ExecutionSemester executionSemester : executionYear.getExecutionPeriodsSet()) {
                if (executionSemester.isCurrent()) {
                    return executionSemester;
                } else if (lastExecutionPeriod == null || executionSemester.isAfter(lastExecutionPeriod)) {
                    lastExecutionPeriod = executionSemester;
                }
            }
        }
        return lastExecutionPeriod;
    }

    public List<SelectItem> getExecutionPeriodSelectItems() throws FenixServiceException {
        final DegreeCurricularPlan degreeCurricularPlan = getDegreeCurricularPlan();
        final TreeSet<ExecutionSemester> executionPeriods = new TreeSet<ExecutionSemester>();
        for (final ExecutionDegree executionDegree : degreeCurricularPlan.getExecutionDegreesSet()) {
            final ExecutionYear executionYear = executionDegree.getExecutionYear();
            for (final ExecutionSemester executionSemester : executionYear.getExecutionPeriodsSet()) {
                executionPeriods.add(executionSemester);
            }
        }
        final List<SelectItem> selectItems = new ArrayList<SelectItem>();
        for (final ExecutionSemester executionSemester : executionPeriods) {
            final SelectItem selectItem = new SelectItem();
            selectItem.setLabel(executionSemester.getName() + " - " + executionSemester.getExecutionYear().getYear());
            selectItem.setValue(executionSemester.getExternalId());
            selectItems.add(selectItem);
        }
        return selectItems;
    }

    public List<SelectItem> getCurricularYearSelectItems() throws FenixServiceException {
        final List<SelectItem> selectItems = new ArrayList<SelectItem>();
        selectItems.add(new SelectItem("", messages.getMessage(locale, "public.curricular.years.all")));
        for (int i = 1; i <= 5; i++) {
            selectItems.add(new SelectItem(Integer.valueOf(i), String.valueOf(i)));
        }
        return selectItems;
    }

    public ExecutionSemester getExecutionPeriod() throws FenixServiceException {
        final String executionPeriodID = getExecutionPeriodID();
        return FenixFramework.getDomainObject(executionPeriodID);
    }

    private ExecutionDegree getExecutionDegree() throws FenixServiceException {
        final DegreeCurricularPlan degreeCurricularPlan = getDegreeCurricularPlan();
        final ExecutionSemester executionSemester = getExecutionPeriod();
        for (final ExecutionDegree executionDegree : degreeCurricularPlan.getExecutionDegreesSet()) {
            if (executionDegree.getExecutionYear() == executionSemester.getExecutionYear()) {
                return executionDegree;
            }
        }
        return null;
    }

    public Date getCalendarBegin() throws FenixServiceException {
        final ExecutionDegree executionDegree = getExecutionDegree();
        final ExecutionSemester executionSemester = getExecutionPeriod();
        if (executionDegree != null) {
            if (executionSemester.getSemester().intValue() == 1) {
                return executionDegree.getPeriodLessonsFirstSemester().getStart();
            } else if (executionSemester.getSemester().intValue() == 2) {
                return executionDegree.getPeriodLessonsSecondSemester().getStart();
            } else {
                return executionSemester.getBeginDate();
            }
        } else {
            return null;
        }
    }

    public Date getCalendarEnd() throws FenixServiceException {
        final ExecutionDegree executionDegree = getExecutionDegree();
        final ExecutionSemester executionSemester = getExecutionPeriod();
        if (executionDegree != null) {
            if (executionSemester.getSemester().intValue() == 1) {
                return executionDegree.getPeriodExamsFirstSemester().getEnd();
            } else if (executionSemester.getSemester().intValue() == 2) {
                return executionDegree.getPeriodExamsSecondSemester().getEnd();
            } else {
                return executionSemester.getEndDate();
            }
        } else {
            return null;
        }
    }

    private static final Comparator executionCourseComparator = new ComparatorChain();

    static {
        ((ComparatorChain) executionCourseComparator).addComparator(new BeanComparator("nome"));
        ((ComparatorChain) executionCourseComparator).addComparator(new BeanComparator("externalId"));
    }

    private static final Comparator evaluationComparator = new Comparator() {
        @Override
        public int compare(Object o1, Object o2) {
            if (o1.getClass() != o2.getClass()) {
                return o1.getClass().getName().compareTo(o2.getClass().getName());
            } else if (o1 instanceof WrittenTest) {
                final WrittenTest writtenTest1 = (WrittenTest) o1;
                final WrittenTest writtenTest2 = (WrittenTest) o2;
                return writtenTest1.getDayDate().compareTo(writtenTest2.getDayDate());
            } else if (o2 instanceof Project) {
                final Project project1 = (Project) o1;
                final Project project2 = (Project) o2;
                return project1.getBegin().compareTo(project2.getBegin());
            } else {
                return -1;
            }
        }
    };

    public List<ExecutionCourse> getExecutionCourses() throws FenixServiceException {
        final List<ExecutionCourse> executionCourses = new ArrayList<ExecutionCourse>();
        final DegreeCurricularPlan degreeCurricularPlan = getDegreeCurricularPlan();
        final ExecutionSemester executionSemester = getExecutionPeriod();
        final CurricularYear curricularYear = getCurricularYear();

        for (final CurricularCourse curricularCourse : degreeCurricularPlan.getCurricularCoursesSet()) {
            if (isActiveInExecutionPeriodAndYear(curricularCourse, executionSemester, curricularYear)) {
                for (final ExecutionCourse executionCourse : curricularCourse.getAssociatedExecutionCoursesSet()) {
                    if (executionCourse.getExecutionPeriod() == executionSemester) {
                        executionCourses.add(executionCourse);
                    }
                }
            }
        }
        return executionCourses;
    }

    public Map<ExecutionCourse, Set<Evaluation>> getExecutionCoursesMap() throws FenixServiceException {
        final Map<ExecutionCourse, Set<Evaluation>> executionCourseEvaluationsMap =
                new TreeMap<ExecutionCourse, Set<Evaluation>>(executionCourseComparator);
        final DegreeCurricularPlan degreeCurricularPlan = getDegreeCurricularPlan();
        final ExecutionSemester executionSemester = getExecutionPeriod();
        final CurricularYear curricularYear = getCurricularYear();

        for (final CurricularCourse curricularCourse : degreeCurricularPlan.getCurricularCoursesSet()) {
            if (isActiveInExecutionPeriodAndYear(curricularCourse, executionSemester, curricularYear)) {
                for (final ExecutionCourse executionCourse : curricularCourse.getAssociatedExecutionCoursesSet()) {
                    if (executionCourse.getExecutionPeriod() == executionSemester) {
                        final Set<Evaluation> evaluations = new TreeSet<Evaluation>(evaluationComparator);
                        executionCourseEvaluationsMap.put(executionCourse, evaluations);
                        evaluations.addAll(executionCourse.getAssociatedEvaluationsSet());
                    }
                }
            }
        }
        return executionCourseEvaluationsMap;
    }

    public List<CalendarLink> getCalendarLinks() throws FenixServiceException {
        final List<CalendarLink> calendarLinks = new ArrayList<CalendarLink>();
        final String evaluationType = getEvaluationType();

        for (final ExecutionCourse executionCourse : getExecutionCourses()) {
            for (final Evaluation evaluation : executionCourse.getAssociatedEvaluationsSet()) {
                if (evaluationType == null || evaluationType.length() == 0
                        || evaluationType.equals(evaluation.getClass().getName())) {
                    if (evaluation instanceof WrittenTest) {
                        final WrittenTest writtenTest = (WrittenTest) evaluation;
                        constructCalendarLink(calendarLinks, writtenTest, executionCourse);
                    } else if (evaluation instanceof Project) {
                        final Project project = (Project) evaluation;
                        constructCalendarLink(calendarLinks, project, executionCourse);
                    } else if (evaluation instanceof Exam) {
                        final Exam exam = (Exam) evaluation;
                        if (exam.isExamsMapPublished()) {
                            constructEmptyCalendarLink(calendarLinks, exam, executionCourse);
                        }
                    }
                }
            }
        }

        return calendarLinks;
    }

    public List<ExecutionCourse> getExecutionCoursesWithoutEvaluations() throws FenixServiceException {
        final List<ExecutionCourse> executionCourses = new ArrayList<ExecutionCourse>();
        for (final ExecutionCourse executionCourse : getExecutionCourses()) {
            if (!hasNonExamEvaluation(executionCourse)) {
                executionCourses.add(executionCourse);
            }
        }
        return executionCourses;
    }

    public List<ExecutionCourse> getExecutionCoursesWithEvaluations() throws FenixServiceException {
        final List<ExecutionCourse> executionCourses = new ArrayList<ExecutionCourse>();
        for (final ExecutionCourse executionCourse : getExecutionCourses()) {
            if (hasNonExamEvaluation(executionCourse)) {
                executionCourses.add(executionCourse);
            }
        }
        return executionCourses;
    }

    private boolean hasNonExamEvaluation(final ExecutionCourse executionCourse) {
        for (final Evaluation evaluation : executionCourse.getAssociatedEvaluationsSet()) {
            if (!(evaluation instanceof Exam)) {
                return true;
            }
        }
        return false;
    }

    private boolean isActiveInExecutionPeriodAndYear(final CurricularCourse curricularCourse,
            final ExecutionSemester executionSemester, final CurricularYear curricularYear) {

        for (final DegreeModuleScope curricularCourseScope : curricularCourse.getDegreeModuleScopes()) {
            if (curricularCourseScope.isActiveForExecutionPeriod(executionSemester)
                    && (curricularYear == null || curricularYear.getYear().equals(curricularCourseScope.getCurricularYear()))) {
                return true;
            }
        }
        return false;
    }

    private CurricularYear getCurricularYear() {
        final String curricularYearID = getCurricularYearID();
        return (curricularYearID != null) ? FenixFramework.<CurricularYear> getDomainObject(curricularYearID) : null;
    }

    private void constructEmptyCalendarLink(final List<CalendarLink> calendarLinks, final WrittenEvaluation writtenEvaluation,
            final ExecutionCourse executionCourse) {
        CalendarLink calendarLink = new CalendarLink(executionCourse, writtenEvaluation, locale);
        // addLinkParameters(calendarLink, executionCourse, writtenEvaluation);
        // addWrittenEvaluationLinkParameters(calendarLink, writtenEvaluation);
        calendarLink.setAsLink(false);
        calendarLinks.add(calendarLink);
    }

    private void constructCalendarLink(final List<CalendarLink> calendarLinks, final WrittenEvaluation writtenEvaluation,
            final ExecutionCourse executionCourse) {
        CalendarLink calendarLink = new CalendarLink(executionCourse, writtenEvaluation, locale);
        addLinkParameters(calendarLink, executionCourse, writtenEvaluation);
        addWrittenEvaluationLinkParameters(calendarLink, writtenEvaluation);
        calendarLinks.add(calendarLink);
    }

    private void constructCalendarLink(final List<CalendarLink> calendarLinks, final Project project,
            final ExecutionCourse executionCourse) {
        final CalendarLink calendarLinkBegin =
                new CalendarLink(executionCourse, project, project.getBegin(), messages.getMessage(locale,
                        "label.evaluation.project.begin"), locale);
        addLinkParameters(calendarLinkBegin, executionCourse, project);
        addProjectLinkParameters(calendarLinkBegin, project);
        calendarLinks.add(calendarLinkBegin);

        final CalendarLink calendarLinkEnd =
                new CalendarLink(executionCourse, project, project.getEnd(), messages.getMessage(locale,
                        "label.evaluation.project.end"), locale);
        addLinkParameters(calendarLinkEnd, executionCourse, project);
        addProjectLinkParameters(calendarLinkEnd, project);
        calendarLinks.add(calendarLinkEnd);
    }

    private void addLinkParameters(final CalendarLink calendarLink, final ExecutionCourse executionCourse,
            final Evaluation evaluation) {
        calendarLink.addLinkParameter("degreeCurricularPlanID", getDegreeCurricularPlanID().toString());
        calendarLink.addLinkParameter("executionPeriodID", executionCourse.getExecutionPeriod().getExternalId().toString());
        calendarLink.addLinkParameter("executionCourseID", executionCourse.getExternalId().toString());
        calendarLink
                .addLinkParameter("curricularYearID", (getCurricularYearID() != null) ? getCurricularYearID().toString() : "");
        calendarLink.addLinkParameter("evaluationID", evaluation.getExternalId().toString());
        calendarLink.addLinkParameter("evaluationType", evaluation.getClass().getName());
    }

    private void addWrittenEvaluationLinkParameters(CalendarLink calendarLink, WrittenEvaluation writtenEvaluation) {
        if (writtenEvaluation instanceof WrittenTest) {
            calendarLink.addLinkParameter("description", ((WrittenTest) writtenEvaluation).getDescription());
        }
        calendarLink.addLinkParameter("date", DateFormatUtil.format("dd/MM/yyyy", writtenEvaluation.getDayDate()));
        calendarLink.addLinkParameter("beginTime", DateFormatUtil.format("HH:mm", writtenEvaluation.getBeginningDate()));
        calendarLink.addLinkParameter("endTime", DateFormatUtil.format("HH:mm", writtenEvaluation.getEndDate()));
    }

    private void addProjectLinkParameters(CalendarLink calendarLinkBegin, Project project) {
        calendarLinkBegin.addLinkParameter("name", project.getName());
        calendarLinkBegin.addLinkParameter("begin", DateFormatUtil.format("dd/MM/yyyy HH:mm", project.getBegin()));
        calendarLinkBegin.addLinkParameter("end", DateFormatUtil.format("dd/MM/yyyy HH:mm", project.getEnd()));
        calendarLinkBegin.addLinkParameter("description", project.getDescription());
    }

    public String getEvaluationType() {
        return (evaluationType == null) ? evaluationType = getAndHoldStringParameter("evaluationType") : evaluationType;
    }

    public void setEvaluationType(String evaluationType) {
        this.evaluationType = evaluationType;
    }

    public List<SelectItem> getExecutionCourseSelectItems() throws FenixServiceException {
        final List<SelectItem> selectItems = new ArrayList<SelectItem>();
        selectItems.add(new SelectItem("", messages.getMessage(locale, "public.curricular.years.all")));
        final List<ExecutionCourse> executionCourses = getExecutionCourses();
        for (ExecutionCourse executionCourse : executionCourses) {
            selectItems.add(new SelectItem(executionCourse.getExternalId(), executionCourse.getNome()));
        }
        return selectItems;
    }

    public String getExecutionCourseID() {
        return (executionCourseID == null) ? executionCourseID = getAndHoldStringParameter("executionCourseID") : executionCourseID;
    }

    public void setExecutionCourseID(String executionCourseID) {
        this.executionCourseID = executionCourseID;
    }

    public String getDescription() {
        return (description == null) ? description = getAndHoldStringParameter("description") : description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getName() {
        return (name == null) ? name = getAndHoldStringParameter("name") : name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBegin() {
        if (begin == null) {
            begin = getAndHoldStringParameter("begin");
            if (begin == null) {
                final String parameterString = getRequestParameter("selectedDate");
                if (parameterString != null && parameterString.length() > 0) {
                    begin = parameterString + " 00:00";
                    setRequestAttribute("begin", begin);
                }
            }
        }
        return (begin == null) ? begin = getAndHoldStringParameter("begin") : begin;
    }

    public void setBegin(String begin) {
        this.begin = begin;
    }

    public String getEnd() {
        return (end == null) ? end = getAndHoldStringParameter("end") : end;
    }

    public void setEnd(String end) {
        this.end = end;
    }

    public String createWrittenTest() throws FenixServiceException {
        final ExecutionCourse executionCourse = getExecutionCourse();

        final List<String> executionCourseIDs = new ArrayList<String>(1);
        executionCourseIDs.add(this.getExecutionCourseID().toString());

        final List<String> degreeModuleScopeIDs = getDegreeModuleScopeIDs(executionCourse);

        try {
            CreateWrittenEvaluation.runCreateWrittenEvaluation(getExecutionCourseID(),
                    DateFormatUtil.parse("dd/MM/yyyy", getDate()), DateFormatUtil.parse("HH:mm", getBeginTime()),
                    DateFormatUtil.parse("HH:mm", getEndTime()), executionCourseIDs, degreeModuleScopeIDs, null, null, null,
                    getDescription());

        } catch (ParseException ex) {
            setErrorMessage("error.invalid.date");
            return "viewCreationPage";
        }

        return "viewCalendar";
    }

    public String editWrittenTest() throws FenixServiceException {
        final ExecutionCourse executionCourse = getExecutionCourse();

        final List<String> executionCourseIDs = new ArrayList<String>(1);
        executionCourseIDs.add(this.getExecutionCourseID().toString());

        final List<String> degreeModuleScopeIDs = getDegreeModuleScopeIDs(executionCourse);

        try {
            EditWrittenEvaluation.runEditWrittenEvaluation(executionCourse.getExternalId(),
                    DateFormatUtil.parse("dd/MM/yyyy", getDate()), DateFormatUtil.parse("HH:mm", getBeginTime()),
                    DateFormatUtil.parse("HH:mm", getEndTime()), executionCourseIDs, degreeModuleScopeIDs, null,
                    getEvaluationID(), null, getDescription(), null);

        } catch (ParseException ex) {
            setErrorMessage("error.invalid.date");
            return "viewEditPage";
        } catch (NotAuthorizedException ex) {
            setErrorMessage(ex.getMessage());
            return "viewEditPage";
        }

        return "viewCalendar";
    }

    public ExecutionCourse getExecutionCourse() {
        return FenixFramework.getDomainObject(getExecutionCourseID());
    }

    private List<String> getDegreeModuleScopeIDs(final ExecutionCourse executionCourse) {
        final List<String> ids = new ArrayList<String>();
        for (final CurricularCourse curricularCourse : executionCourse.getAssociatedCurricularCoursesSet()) {
            List<DegreeModuleScope> degreeModuleScopes = curricularCourse.getDegreeModuleScopes();
            for (DegreeModuleScope degreeModuleScope : degreeModuleScopes) {
                if (degreeModuleScope.getCurricularSemester().equals(executionCourse.getExecutionPeriod().getSemester())) {
                    ids.add(degreeModuleScope.getKey());
                }
            }
        }
        return ids;
    }

    public String getBeginTime() {
        return (beginTime == null) ? beginTime = getAndHoldStringParameter("beginTime") : beginTime;
    }

    public void setBeginTime(String beginTime) {
        this.beginTime = beginTime;
    }

    public String getDate() {
        if (date == null) {
            date = getAndHoldStringParameter("date");
            if (date == null) {
                final String parameterString = getRequestParameter("selectedDate");
                if (parameterString != null && parameterString.length() > 0) {
                    date = parameterString;
                    setRequestAttribute("date", date);
                }
            }
        }
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getEndTime() {
        return (endTime == null) ? endTime = getAndHoldStringParameter("endTime") : endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public String getEvaluationID() {
        return (evaluationID == null) ? evaluationID = getAndHoldStringParameter("evaluationID") : evaluationID;
    }

    public void setEvaluationID(String evaluationID) {
        this.evaluationID = evaluationID;
    }

    public String deleteEvaluation() throws FenixServiceException {
        final String evaluationType = getEvaluationType();
        if (evaluationType.equals(WrittenEvaluation.class.getName())) {
            try {
                DeleteWrittenEvaluation.runDeleteWrittenEvaluation(getExecutionCourseID(), getEvaluationID());
            } catch (NotAuthorizedException ex) {
                setErrorMessage(ex.getMessage());
                return "viewDeletePage";
            } catch (DomainException ex) {
                setErrorMessage(ex.getKey());
                return "viewDeletePage";
            }
        } else {
            try {
                DeleteEvaluation.runDeleteEvaluation(getExecutionCourseID(), getEvaluationID());
            } catch (DomainException ex) {
                setErrorMessage(ex.getKey());
                return "viewDeletePage";
            }
        }
        return "viewCalendar";
    }

    public List<SelectItem> getExecutionCourseGroupings() throws FenixServiceException {
        if (this.executionCourseGroupings == null) {
            this.executionCourseGroupings = new ArrayList<SelectItem>();

            for (Grouping grouping : getExecutionCourse().getGroupings()) {
                this.executionCourseGroupings.add(new SelectItem(grouping.getExternalId(), grouping.getName()));
            }

        }

        return this.executionCourseGroupings;
    }

    private Evaluation getEvaluation() {
        if (this.evalution == null && getEvaluationID() != null) {
            this.evaluation = FenixFramework.getDomainObject(getEvaluationID());
        }

        return this.evaluation;
    }

    private Project getProject() {
        Evaluation evaluation = getEvaluation();
        if (evaluation != null && evaluation.getEvaluationType().equals(EvaluationType.PROJECT_TYPE)) {
            return (Project) evaluation;
        }

        return null;

    }

    public String getGroupingID() {
        if (this.groupingID == null && getProject() != null) {
            Grouping grouping = getProject().getGrouping();

            this.groupingID = (grouping != null) ? grouping.getExternalId() : null;
        }
        return groupingID;
    }

    public void setGroupingID(String groupingID) {
        this.groupingID = groupingID;
    }

    public Grouping getGrouping() {
        if (getProject() != null) {
            return getProject().getGrouping();
        } else {
            return null;
        }
    }

    public Integer getMaxSubmissionsToKeep() {
        if (this.maxSubmissionsToKeep == null && getProject() != null) {
            this.maxSubmissionsToKeep = getProject().getMaxSubmissionsToKeep();
        }
        return maxSubmissionsToKeep;
    }

    public void setMaxSubmissionsToKeep(Integer maxSubmissionsToKeep) {
        this.maxSubmissionsToKeep = maxSubmissionsToKeep;
    }

    public Boolean getOnlineSubmissionsAllowed() {
        if (this.onlineSubmissionsAllowed == null && getProject() != null) {
            this.onlineSubmissionsAllowed = getProject().getOnlineSubmissionsAllowed();
        }
        return onlineSubmissionsAllowed;
    }

    public void setOnlineSubmissionsAllowed(Boolean onlineSubmissionsAllowed) {
        this.onlineSubmissionsAllowed = onlineSubmissionsAllowed;
    }

    public String returnToCalendar() {
        setEvaluationType("");

        return "viewCalendar";
    }

}
TOP

Related Classes of org.fenixedu.academic.ui.faces.bean.coordinator.evaluation.CoordinatorEvaluationsBackingBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.