/**
* Copyright © 2011 Instituto Superior Técnico
*
* This file is part of FenixEdu Teacher Credits.
*
* FenixEdu Teacher Credits 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 Teacher Credits 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 Teacher Credits. If not, see <http://www.gnu.org/licenses/>.
*/
package pt.ist.fenixedu.teacher.dto.teacherCredits;
import java.io.Serializable;
import org.fenixedu.academic.domain.ExecutionSemester;
import org.joda.time.DateTime;
import org.joda.time.Interval;
import pt.ist.fenixedu.teacher.domain.credits.AnnualCreditsState;
import pt.ist.fenixedu.teacher.domain.time.calendarStructure.TeacherCreditsFillingForDepartmentAdmOfficeCE;
import pt.ist.fenixedu.teacher.domain.time.calendarStructure.TeacherCreditsFillingForTeacherCE;
import pt.ist.fenixframework.Atomic;
public class TeacherCreditsPeriodBean implements Serializable {
private DateTime beginForTeacher;
private DateTime endForTeacher;
private DateTime beginForDepartmentAdmOffice;
private DateTime endForDepartmentAdmOffice;
private ExecutionSemester executionPeriodReference;
private AnnualCreditsState annualCreditsState;
private DateTime sharedUnitCreditsBeginDate;
private DateTime sharedUnitCreditsEndDate;
private DateTime unitCreditsBeginDate;
private DateTime unitCreditsEndDate;
private boolean teacher;
public TeacherCreditsPeriodBean(ExecutionSemester executionSemester) {
setExecutionPeriod(executionSemester);
refreshDates();
}
public TeacherCreditsPeriodBean(ExecutionSemester executionSemester, boolean teacher) {
setExecutionPeriod(executionSemester);
setTeacher(teacher);
refreshDates();
}
public ExecutionSemester getExecutionPeriod() {
return executionPeriodReference;
}
public void setExecutionPeriod(ExecutionSemester executionSemester) {
executionPeriodReference = executionSemester;
}
public DateTime getBeginForTeacher() {
return beginForTeacher;
}
public void setBeginForTeacher(DateTime begin) {
this.beginForTeacher = begin;
}
public DateTime getEndForTeacher() {
return endForTeacher;
}
public void setEndForTeacher(DateTime end) {
this.endForTeacher = end;
}
public DateTime getBeginForDepartmentAdmOffice() {
return beginForDepartmentAdmOffice;
}
public void setBeginForDepartmentAdmOffice(DateTime beginForDepartmentAdmOffice) {
this.beginForDepartmentAdmOffice = beginForDepartmentAdmOffice;
}
public DateTime getEndForDepartmentAdmOffice() {
return endForDepartmentAdmOffice;
}
public void setEndForDepartmentAdmOffice(DateTime endForDepartmentAdmOffice) {
this.endForDepartmentAdmOffice = endForDepartmentAdmOffice;
}
public void refreshDates() {
ExecutionSemester executionSemester = getExecutionPeriod();
TeacherCreditsFillingForDepartmentAdmOfficeCE departmentAdmOffice =
TeacherCreditsFillingForDepartmentAdmOfficeCE.getTeacherCreditsFillingForDepartmentAdmOffice(executionSemester
.getAcademicInterval());
setBeginForDepartmentAdmOffice(departmentAdmOffice != null ? departmentAdmOffice.getBegin() : null);
setEndForDepartmentAdmOffice(departmentAdmOffice != null ? departmentAdmOffice.getEnd() : null);
TeacherCreditsFillingForTeacherCE teacherCE =
TeacherCreditsFillingForTeacherCE.getTeacherCreditsFillingForTeacher(executionSemester.getAcademicInterval());
setBeginForTeacher(teacherCE != null ? teacherCE.getBegin() : null);
setEndForTeacher(teacherCE != null ? teacherCE.getEnd() : null);
setAnnualCreditsState();
}
public boolean isTeacher() {
return teacher;
}
public void setTeacher(boolean teacher) {
this.teacher = teacher;
}
public AnnualCreditsState getAnnualCreditsState() {
return annualCreditsState;
}
public void setAnnualCreditsState() {
annualCreditsState = AnnualCreditsState.getAnnualCreditsState(getExecutionPeriod().getExecutionYear());
setSharedUnitCreditsBeginDate(annualCreditsState.getSharedUnitCreditsInterval() != null ? annualCreditsState
.getSharedUnitCreditsInterval().getStart() : null);
setSharedUnitCreditsEndDate(annualCreditsState.getSharedUnitCreditsInterval() != null ? annualCreditsState
.getSharedUnitCreditsInterval().getEnd() : null);
setUnitCreditsBeginDate(annualCreditsState.getUnitCreditsInterval() != null ? annualCreditsState.getUnitCreditsInterval()
.getStart() : null);
setUnitCreditsEndDate(annualCreditsState.getUnitCreditsInterval() != null ? annualCreditsState.getUnitCreditsInterval()
.getEnd() : null);
}
public DateTime getSharedUnitCreditsBeginDate() {
return sharedUnitCreditsBeginDate;
}
public void setSharedUnitCreditsBeginDate(DateTime sharedUnitCreditsBeginDate) {
this.sharedUnitCreditsBeginDate = sharedUnitCreditsBeginDate;
}
public DateTime getSharedUnitCreditsEndDate() {
return sharedUnitCreditsEndDate;
}
public void setSharedUnitCreditsEndDate(DateTime sharedUnitCreditsEndDate) {
this.sharedUnitCreditsEndDate = sharedUnitCreditsEndDate;
}
public DateTime getUnitCreditsBeginDate() {
return unitCreditsBeginDate;
}
public void setUnitCreditsBeginDate(DateTime unitCreditsBeginDate) {
this.unitCreditsBeginDate = unitCreditsBeginDate;
}
public DateTime getUnitCreditsEndDate() {
return unitCreditsEndDate;
}
public void setUnitCreditsEndDate(DateTime unitCreditsEndDate) {
this.unitCreditsEndDate = unitCreditsEndDate;
}
private Interval getSharedUnitCreditsInterval() {
return new Interval(getSharedUnitCreditsBeginDate(), getSharedUnitCreditsEndDate());
}
private Interval getUnitCreditsInterval() {
return new Interval(getUnitCreditsBeginDate(), getUnitCreditsEndDate());
}
@Atomic
public void editIntervals() {
annualCreditsState.setSharedUnitCreditsInterval(getSharedUnitCreditsInterval());
annualCreditsState.setUnitCreditsInterval(getUnitCreditsInterval());
}
}