package net.sourceforge.fenixedu.applicationTier.Servico.student;

import net.sourceforge.fenixedu.applicationTier.Service;
import net.sourceforge.fenixedu.domain.ExecutionPeriod;
import net.sourceforge.fenixedu.domain.Person;
import net.sourceforge.fenixedu.domain.inquiries.InquiriesStudentExecutionPeriod;
import net.sourceforge.fenixedu.domain.student.Student;
import net.sourceforge.fenixedu.util.PeriodState;
import net.sourceforge.zas.metainfo.AccessControlled;

public class RegisterStudentInquiryResponseIntention extends Service {

    @AccessControlled("STUDENT")
    public void run(final Person person, final Boolean dontWantToRespond) {
	final Student student = person.getStudent();
	final InquiriesStudentExecutionPeriod inquiriesStudentExecutionPeriod = getInquiriesStudentExecutionPeriod(student);
	inquiriesStudentExecutionPeriod.setDontWantToRespond(dontWantToRespond);
    }

    private InquiriesStudentExecutionPeriod getInquiriesStudentExecutionPeriod(final Student student) {
	for (final InquiriesStudentExecutionPeriod inquiriesStudentExecutionPeriod : student
		.getInquiriesStudentExecutionPeriodsSet()) {
	    if (inquiriesStudentExecutionPeriod.getExecutionPeriod().getState().equals(PeriodState.CURRENT)) {
		return inquiriesStudentExecutionPeriod;
	    }
	}
	final ExecutionPeriod executionPeriod = ExecutionPeriod.readActualExecutionPeriod();
	return new InquiriesStudentExecutionPeriod(student, executionPeriod);
    }

}