package org.fenixedu.academic.service;
import java.text.Collator;
import java.util.Collection;
import java.util.TreeSet;
import java.util.function.Function;
import org.fenixedu.academic.domain.IdentificationDocumentExtraDigit;
import org.fenixedu.academic.domain.IdentificationDocumentSeriesNumber;
import org.fenixedu.academic.domain.Person;
import org.fenixedu.academic.domain.exceptions.DomainException;
import org.fenixedu.academic.domain.person.IDDocumentType;
import org.fenixedu.academic.domain.student.Student;
import org.fenixedu.academic.util.Bundle;
import org.fenixedu.bennu.core.i18n.BundleUtil;
import org.joda.time.YearMonthDay;
public class StudentWarningsDefaultCheckers {
public final static Function<Student, Collection<String>> WARNING_VALID_ID_DOCUMENT = student -> {
final Collection<String> warnings = new TreeSet<String>();
final Person person = student.getPerson();
if (person.getIdDocumentType() == IDDocumentType.IDENTITY_CARD) {
String identificationDocumentSeriesNumber = person.getIdentificationDocumentSeriesNumber();
if (identificationDocumentSeriesNumber.length() == 1) {
try {
IdentificationDocumentExtraDigit
.validate(person.getDocumentIdNumber(), identificationDocumentSeriesNumber);
} catch (DomainException de) {
warnings.add(BundleUtil.getString(Bundle.APPLICATION, de.getMessage()));
}
} else {
try {
IdentificationDocumentSeriesNumber
.validate(person.getDocumentIdNumber(), identificationDocumentSeriesNumber);
} catch (DomainException de) {
warnings.add(BundleUtil.getString(Bundle.APPLICATION, de.getMessage()));
}
}
}
final YearMonthDay documentExpirationDate = person.getExpirationDateOfDocumentIdYearMonthDay();
if (documentExpirationDate == null) {
warnings.add(BundleUtil.getString(Bundle.APPLICATION, "label.identificationDocument.no.expiration.date"));
} else if (documentExpirationDate.isBefore(new YearMonthDay())) {
warnings.add(BundleUtil.getString(Bundle.APPLICATION, "label.identificationDocument.past.expiration.date"));
}
return warnings;
};
}