/**
* 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.domain.accounting.report.events;
import java.math.BigDecimal;
import org.fenixedu.academic.domain.ExecutionYear;
import org.fenixedu.academic.domain.accounting.Event;
import org.fenixedu.academic.domain.accounting.events.AnnualEvent;
import org.fenixedu.academic.domain.accounting.events.EnrolmentOutOfPeriodEvent;
import org.fenixedu.academic.domain.accounting.events.dfa.DfaRegistrationEvent;
import org.fenixedu.academic.domain.accounting.events.specializationDegree.SpecializationDegreeRegistrationEvent;
import org.fenixedu.academic.domain.administrativeOffice.AdministrativeOffice;
import org.fenixedu.academic.domain.student.EnrolmentModel;
import org.fenixedu.academic.domain.student.Registration;
import org.fenixedu.academic.util.MultiLanguageString;
public class EventWrapper implements Wrapper {
private final Event event;
public EventWrapper(Event event) {
this.event = event;
}
@Override
public String getStudentNumber() {
if (event.getParty().isPerson()) {
if (event.getPerson().getStudent() != null) {
return event.getPerson().getStudent().getNumber().toString();
}
}
return "--";
}
@Override
public String getStudentName() {
return event.getParty().getName();
}
@Override
public String getStudentEmail() {
return event.getParty().getDefaultEmailAddressValue();
}
@Override
public String getRegistrationStartDate() {
return "--";
}
@Override
public String getExecutionYear() {
ExecutionYear executionYear = getForExecutionYear();
return executionYear.getName();
}
@Override
public ExecutionYear getForExecutionYear() {
ExecutionYear executionYear = null;
if (event.isDfaRegistrationEvent()) {
executionYear = ((DfaRegistrationEvent) event).getExecutionYear();
} else if (event.isEnrolmentOutOfPeriod()) {
executionYear = ((EnrolmentOutOfPeriodEvent) event).getExecutionPeriod().getExecutionYear();
} else if (event.isAnnual()) {
executionYear = ((AnnualEvent) event).getExecutionYear();
} else {
executionYear = ExecutionYear.readByDateTime(event.getWhenOccured());
}
return executionYear;
}
@Override
public String getDegreeName() {
if (hasRegistration()) {
return getRegistration().getDegree().getNameI18N().getContent(MultiLanguageString.pt);
}
return "--";
}
@Override
public String getDegreeType() {
if (hasRegistration()) {
return getRegistration().getDegreeType().getName().getContent();
}
return "--";
}
@Override
public String getPhdProgramName() {
return "--";
}
@Override
public String getEnrolledECTS() {
if (hasRegistration()) {
return new BigDecimal(getRegistration().getLastStudentCurricularPlan()
.getEnrolmentsEctsCredits(getForExecutionYear())).toString();
}
return "--";
}
@Override
public String getRegime() {
if (hasRegistration()) {
return getRegistration().getRegimeType(getForExecutionYear()).getLocalizedName();
}
return "--";
}
@Override
public String getEnrolmentModel() {
if (!hasRegistration()) {
return "--";
}
EnrolmentModel enrolmentModelForExecutionYear =
getRegistration().getEnrolmentModelForExecutionYear(getForExecutionYear());
if (enrolmentModelForExecutionYear != null) {
return enrolmentModelForExecutionYear.getLocalizedName();
}
return "--";
}
@Override
public String getResidenceYear() {
return "--";
}
@Override
public String getResidenceMonth() {
return "--";
}
@Override
public String getStudiesType() {
if (hasRegistration()) {
return "Curso";
}
return "--";
}
private Registration getRegistration() {
if (event.isDfaRegistrationEvent()) {
return ((DfaRegistrationEvent) event).getRegistration();
} else if (event.isEnrolmentOutOfPeriod()) {
return ((EnrolmentOutOfPeriodEvent) event).getStudentCurricularPlan().getRegistration();
} else if (event.isSpecializationDegreeRegistrationEvent()) {
return ((SpecializationDegreeRegistrationEvent) event).getRegistration();
}
return null;
}
private boolean hasRegistration() {
return getRegistration() != null;
}
@Override
public String getTotalDiscount() {
return event.getTotalDiscount().toPlainString();
}
@Override
public boolean isAfterOrEqualExecutionYear(ExecutionYear executionYear) {
return !getForExecutionYear().isBefore(executionYear);
}
@Override
public AdministrativeOffice getRelatedAcademicOffice() {
Registration registration = getRegistration();
if (registration == null) {
return null;
}
return registration.getDegree().getAdministrativeOffice();
}
@Override
public String getRelatedEventExternalId() {
return "--";
}
@Override
public String getDebtorFiscalId() {
return "--";
}
@Override
public String getDebtorName() {
return "--";
}
}