package pt.ist.fenix.domain.executionCourse; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.fenixedu.academic.domain.ExecutionCourse; import org.fenixedu.academic.domain.ExecutionSemester; import org.fenixedu.academic.domain.Professorship; import org.fenixedu.academic.domain.ShiftType; import org.fenixedu.academic.domain.inquiries.InquiryResult; import org.fenixedu.academic.domain.inquiries.TeacherInquiryTemplate; import org.fenixedu.cms.domain.Page; import org.fenixedu.cms.domain.component.ComponentType; import org.fenixedu.cms.rendering.TemplateContext; import org.fenixedu.learning.domain.executionCourse.ExecutionCourseSite; import org.fenixedu.learning.domain.executionCourse.components.BaseExecutionCourseComponent; import org.joda.time.DateTime; @ComponentType(description = "Shows QUC Results on Public Pages", name = "QUC Results") public class ExecutionCourseQUCComponent extends BaseExecutionCourseComponent { @Override public void handle(Page page, TemplateContext componentContext, TemplateContext globalContext) { ExecutionCourse executionCourse = ((ExecutionCourseSite) page.getSite()).getExecutionCourse(); ExecutionSemester executionPeriod = executionCourse.getExecutionPeriod(); ExecutionSemester oldQucExecutionSemester = ExecutionSemester.readBySemesterAndExecutionYear(2, "2009/2010"); if (executionPeriod.isAfter(oldQucExecutionSemester)) { TeacherInquiryTemplate teacherInquiryTemplate = TeacherInquiryTemplate.getTemplateByExecutionPeriod(executionPeriod); if (teacherInquiryTemplate == null || teacherInquiryTemplate.getResponsePeriodBegin().plusDays(7).isAfter(DateTime.now()) || executionCourse.getInquiryResultsSet().isEmpty()) { return; } Map<Professorship, Set<ShiftType>> professorships = new HashMap<Professorship, Set<ShiftType>>(); for (Professorship professorship : executionCourse.getProfessorshipsSet()) { Collection<InquiryResult> professorshipResults = professorship.getInquiryResultsSet(); if (!professorshipResults.isEmpty()) { professorships.put(professorship, getShiftTypes(professorshipResults)); } } globalContext.put("executionCourse", executionCourse); globalContext.put("professorships", professorships); } } private Set<ShiftType> getShiftTypes(Collection<InquiryResult> professorshipResults) { Set<ShiftType> shiftTypes = new HashSet<ShiftType>(); for (InquiryResult inquiryResult : professorshipResults) { shiftTypes.add(inquiryResult.getShiftType()); } return shiftTypes; } }