package hu.sch.web.kp.group; import hu.sch.domain.Group; import hu.sch.domain.Semester; import hu.sch.domain.Valuation; import hu.sch.domain.ValuationStatistic; import hu.sch.services.ValuationManagerLocal; import hu.sch.web.kp.KorokPage; import hu.sch.web.kp.valuation.ValuationDetailPanel; import java.util.List; import javax.inject.Inject; import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.string.StringValueConversionException; /** * * @author aldaris * @author messo */ public class GroupHistory extends KorokPage { @Inject private ValuationManagerLocal valuationManager; private final Long id; private final Group group; private Valuation selected = null; public GroupHistory() { getSession().error("Túl kevés paraméter!"); throw new RestartResponseException(getApplication().getHomePage()); } public GroupHistory(PageParameters parameters) { try { id = parameters.get("id").toLong(); } catch (StringValueConversionException ex) { getSession().error("Érvénytelen paraméter!"); throw new RestartResponseException(getApplication().getHomePage()); } group = groupManager.findGroupById(id); if (group == null) { getSession().error("Hibás paraméter, nincs ilyen kör!"); throw new RestartResponseException(getApplication().getHomePage()); } add(new BookmarkablePageLink<ShowGroup>("simpleView", ShowGroup.class, new PageParameters().add("id", id.toString()))); List<Valuation> valuationList = valuationManager.findLatestValuationsForGroup(group); // nézzük meg, hogy van-e kijelölve értékelés Semester semester = new Semester(parameters.get("sid").toString("")); if (semester.isValid()) { for (Valuation valuation : valuationList) { if (valuation.getSemester().equals(semester)) { selected = valuation; break; } } } final boolean showSvieColumn = isCurrentUserJETI() || isUserGroupLeader(group); final ValuationDetailPanel valuationPanel = new ValuationDetailPanel("valuationInfo", showSvieColumn); if (selected != null) { setHeaderLabelText("A kör részletes pontozásai"); ValuationStatistic stat = valuationManager.getStatisticForValuation(selected.getId()); setTitleText(String.format("%s korábbi értékelései (%s); Szumma: %d Átlag: %.2f Belépők: %d ÁB %d KB", group.getName(), semester.toString(), stat.getSummaPoint(), stat.getAveragePoint(), stat.getGivenAB(), stat.getGivenKB())); valuationPanel.updateValuation(selected); } else { setHeaderLabelText("Időszakválasztás"); setTitleText(group.getName() + " korábbi értékelései"); valuationPanel.setVisible(false); } add(valuationPanel); add(new Label("name", group.getName())); add(new DropDownChoice<Valuation>("valuations", new PropertyModel(this, "selected"), valuationList, new ChoiceRenderer<Valuation>("semester")) { @Override protected boolean wantOnSelectionChangedNotifications() { return true; } @Override protected void onSelectionChanged(final Valuation selected) { if(selected == null){ return; } PageParameters pp = new PageParameters(); pp.add("id", id.toString()); pp.add("sid", selected.getSemester().getId()); setResponsePage(GroupHistory.class, pp); } }); } }