package hu.sch.web.kp.user; import hu.sch.domain.user.User; import hu.sch.domain.*; import hu.sch.services.exceptions.MembershipAlreadyExistsException; 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.UsersMembershipTable; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.string.StringValueConversionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author hege */ public class ShowUser extends KorokPage { private static Logger logger = LoggerFactory.getLogger(ShowUser.class); private Long id; private boolean ownProfile = false; private Group addToCsoportSelected; public ShowUser() { initComponents(); } public ShowUser(PageParameters parameters) { try { id = parameters.get("id").toLong(); // ha az adott ID a mi ID-nk, akkor ez a mi profilunk. if (id.equals(getSession().getUserId())) { ownProfile = true; } } catch (StringValueConversionException ex) { logger.warn("Could not interpret pageparameter: " + parameters); } initComponents(); } private void initComponents() { try { if (id == null) { id = getSession().getUserId(); ownProfile = true; } } catch (Exception e) { id = null; } if (id == null) { getSession().info("Egy körben sem vagy tag"); throw new RestartResponseException(getApplication().getHomePage()); } final User user = userManager.findUserById(id, true); if (user == null) { info("A felhasználó nem található"); throw new RestartResponseException(GroupHierarchy.class); } setDefaultModel(new CompoundPropertyModel<User>(user)); setTitleText(user.getFullName()); setHeaderLabelText(user.getFullName() + " felhasználó lapja"); if (ownProfile) { add(new BookmarkablePageLink<UserHistory>("detailView", UserHistory.class)); } else { add(new BookmarkablePageLink<UserHistory>("detailView", UserHistory.class, new PageParameters().add("id", user.getId().toString()))); } add(new BookmarkablePageLink("profilelink", ShowPersonPage.class, new PageParameters().add("virid", id.toString()))); user.sortMemberships(); add(new UsersMembershipTable("csoptagsag", user.getMemberships(), ownProfile, 20) { @Override protected void onWannabeOldBoy(Membership ms) { for (Post post : ms.getPosts()) { if (post.getPostType().getPostName().equals(PostType.KORVEZETO)) { getSession().error("Körvezetőként nem teheted magad öregtaggá!"); return; } } membershipManager.inactivateMembership(ms); getSession().info("Az öregtaggá válás sikeresen megtörtént"); } }.getDataTable()); // Nézzük meg, hogy milyen csoportokba hívhatjuk meg a felhasználót. List<Group> groups; User currentUser = getUser(); if (currentUser == null) { groups = new ArrayList<Group>(); } else { groups = currentUser.getGroups(); } List<Group> korvezetoicsoportok = new ArrayList<Group>(); for (Group cs : groups) { if (isUserGroupLeader(cs) && !user.getGroups().contains(cs)) { korvezetoicsoportok.add(cs); } } Form<User> addToGroupForm = new Form<User>("addToGroupForm") { @Override protected void onSubmit() { try { membershipManager.joinGroup(addToCsoportSelected, user, new Date(), null, isUserGroupLeader(addToCsoportSelected)); getSession().info("A felhasználó a <b>" + addToCsoportSelected + "</b> körbe felvéve"); setResponsePage(ShowUser.class, new PageParameters().add("id", user.getId())); } catch (MembershipAlreadyExistsException ex) { getSession().error("A felhasználó már tagja a körnek!"); } } }; final DropDownChoice<Group> groupDdc = new DropDownChoice<Group>("groupDdc", new PropertyModel<Group>(this, "addToCsoportSelected"), korvezetoicsoportok); addToGroupForm.add(groupDdc); groupDdc.setRequired(true); add(addToGroupForm); addToGroupForm.setVisible(!korvezetoicsoportok.isEmpty() && isUserGroupLeaderInSomeGroup()); } }