package hu.sch.web.kp.user; import hu.sch.domain.user.User; import hu.sch.domain.*; import hu.sch.services.ValuationManagerLocal; import hu.sch.web.kp.KorokPage; import hu.sch.web.kp.group.GroupHierarchy; import hu.sch.web.profile.show.ShowPersonPage; import hu.sch.web.wicket.components.tables.ValuationTableForUser; import java.util.ArrayList; 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.DropDownChoice; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author Adam Lantos * @author messo */ public class UserHistory extends KorokPage { private static final Logger logger = LoggerFactory.getLogger(UserHistory.class); private Long id; private Long selectedGroupId = null; private final String EVERY_GROUP = "Összes kör"; // DropDownChoiceban használjuk protected String selected_text = EVERY_GROUP; private boolean own_profile = false; @Inject private ValuationManagerLocal valuationManager; public UserHistory() { own_profile = true; initComponents(); } public UserHistory(PageParameters parameters) { try { id = parameters.get("id").toLong(); selectedGroupId = parameters.get("group").toLong(0l); if (selectedGroupId != 0l) { Group g = groupManager.findGroupById(selectedGroupId); if (g != null) { selected_text = g.getName(); } else { logger.warn("Group not found with id: {}", id); selected_text = "NOT FOUND"; } } else { selectedGroupId = null; } } catch (Throwable t) { logger.warn("Error while loading parameters.", t); } initComponents(); } private void initComponents() { User user; if (id == null) { id = getSession().getUserId(); } user = userManager.findUserById(id, true); if (user == null) { logger.warn("Not founded user for UserHistory page with id: " + id); error("A megadott felhasználóhoz nem tartozik közösségi történet!"); throw new RestartResponseException(GroupHierarchy.class); } setHeaderLabelText(user.getFullName() + " közösségi története"); setTitleText(user.getFullName() + " közösségi története"); if (own_profile) { add(new BookmarkablePageLink<ShowUser>("simpleView", ShowUser.class)); } else { add(new BookmarkablePageLink<ShowUser>("simpleView", ShowUser.class, new PageParameters().add("id", user.getId()))); } add(new BookmarkablePageLink("profilelink", ShowPersonPage.class, new PageParameters().add("virid", id.toString()))); setDefaultModel(new CompoundPropertyModel<User>(user)); final List<String> groups = new ArrayList<String>(); groups.add(EVERY_GROUP); List<Membership> ms = user.getMemberships(); for (Membership csoporttagsag : ms) { groups.add(csoporttagsag.getGroup().getName()); } DropDownChoice<String> ddc = new DropDownChoice<String>("group", new PropertyModel<String>(this, "selected_text"), groups) { @Override protected boolean wantOnSelectionChangedNotifications() { return true; } @Override protected void onSelectionChanged(final String newSelection) { PageParameters pp = new PageParameters(); // Ez van a legördülő menüben kiválasztva String Lselected = groups.get(Integer.valueOf(this.getInput())); if (Lselected.equals(EVERY_GROUP)) { // minden kört megjelenítek } else { // csak a kiválasztott kört jelenítem meg Group group = groupManager.findGroupByName(Lselected); pp.add("group", group.getId().toString()); } pp.add("id", String.valueOf(id)); setResponsePage(UserHistory.class, pp); } }; add(ddc); //Gets semesters and points List<PointHistory> semesterPoints = userManager.getCommunityPointsForUser(user); // megjelenítés... ListView<PointHistory> splv = new ListView<PointHistory>("semesterPointList", semesterPoints) { @Override protected void populateItem(ListItem<PointHistory> item) { PointHistory p = item.getModelObject(); item.add(new Label("semesterPoint.semester", Model.of(p.getSemester()))); item.add(new Label("semesterPoint.point", Model.of(p.getPoint()))); } }; add(splv); List<ValuationData> list = valuationManager.findRequestsForUser(user, selectedGroupId); add(new ValuationTableForUser("table", list).getDataTable()); } }