package hu.sch.web.kp.svie; import hu.sch.domain.Membership; import hu.sch.domain.enums.SvieMembershipType; import hu.sch.domain.enums.SvieStatus; import hu.sch.domain.user.User; import hu.sch.services.SvieManagerLocal; import hu.sch.web.wicket.behaviors.ConfirmationBehavior; import hu.sch.web.wicket.components.customlinks.SvieRegPdfLink; import hu.sch.web.kp.KorokPage; import java.util.List; import javax.inject.Inject; import org.apache.wicket.RestartResponseAtInterceptPageException; import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.html.form.ListChoice; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author aldaris */ public final class SvieAccount extends KorokPage { @Inject SvieManagerLocal svieManager; private static Logger log = LoggerFactory.getLogger(SvieAccount.class); private final User user = getUser(); public SvieAccount() { createNavbarWithSupportId(34); //ha még nem SVIE tag, akkor továbbítjuk a SVIE regisztrációs oldalra. if (user == null) { getSession().error("A SVIE tagsághoz először létre kell hoznod egy közösségi profilt"); throw new RestartResponseException(getApplication().getHomePage()); } if (user.getSvieMembershipType().equals(SvieMembershipType.NEMTAG)) { throw new RestartResponseAtInterceptPageException(new SvieRegistration(user)); } setHeaderLabelText("SVIE tagság beállításai"); add(new Label("sviestatusLabel", user.getSvieStatus().toString())); OrdinalFragment ordFragment = new OrdinalFragment("ordinalFragment", "ordinalPanel"); AdvocateFragment advFragment = new AdvocateFragment("advocateFragment", "advocatePanel"); ordFragment.setVisible(false); advFragment.setVisible(false); add(ordFragment, advFragment); if (user.getSvieMembershipType().equals(SvieMembershipType.RENDESTAG)) { ordFragment.setVisible(true); } else if (user.getSvieMembershipType().equals(SvieMembershipType.PARTOLOTAG)) { advFragment.setVisible(true); } Fragment reginfoFragment = new Fragment("reginfoFragment", "reginfoPanel", null, null); reginfoFragment.setVisible(true); SvieRegPdfLink regPdfLink = new SvieRegPdfLink("pdfLink", user); if (!user.getSvieStatus().equals(SvieStatus.FELDOLGOZASALATT)) { regPdfLink.setVisible(false); reginfoFragment.setVisible(false); } add(regPdfLink); add(reginfoFragment); Link<Void> deleteSvieMs = new Link<Void>("deleteSvieMembership") { @Override public void onClick() { svieManager.endMembership(user); getSession().info("A SVIE tagságodat sikeresen megszüntetted"); setResponsePage(getApplication().getHomePage()); } }; deleteSvieMs.add(new ConfirmationBehavior("Biztosan meg szeretnéd szüntetni a SVIE tagságod?")); add(deleteSvieMs); } private class OrdinalFragment extends Fragment { public OrdinalFragment(String id, String markupId) { super(id, markupId, null, null); add(new Label("formLabel", "Elsődleges kör kiválasztása")); Form<User> form = new Form<User>("form") { @Override protected void onSubmit() { if (user.getSviePrimaryMembership() != null) { svieManager.updatePrimaryMembership(user); getSession().info("Elsődleges kör sikeresen kiválasztva"); setResponsePage(SvieAccount.class); } } }; form.setModel(new CompoundPropertyModel<User>(user)); IModel<List<Membership>> groupNames = new LoadableDetachableModel<List<Membership>>() { @Override protected List<Membership> load() { return svieManager.getActiveSvieMembershipsForUser(user); } }; ListChoice listChoice = new ListChoice("sviePrimaryMembership", groupNames); listChoice.setChoiceRenderer(new GroupNameChoices()); listChoice.setNullValid(false); listChoice.setRequired(true); form.add(listChoice); add(form); Link<Void> ordinalToAdvocate = new Link<Void>("ordinalToAdvocate") { @Override public void onClick() { svieManager.ordinalToAdvocate(user); getSession().info("Sikeresen pártoló taggá váltál"); setResponsePage(SvieAccount.class); } }; ordinalToAdvocate.add(new ConfirmationBehavior("Biztosan pártoló taggá szeretnél válni?")); add(ordinalToAdvocate); if (!user.getSvieStatus().equals(SvieStatus.ELFOGADVA)) { ordinalToAdvocate.setVisible(false); } } } private class AdvocateFragment extends Fragment { public AdvocateFragment(String id, String markupId) { super(id, markupId, null, null); List<Membership> ms = svieManager.getActiveSvieMembershipsForUser(user); Link<Void> advocateToOrdinal = new Link<Void>("advocateToOrdinal") { @Override public void onClick() { svieManager.advocateToOrdinal(user); getSession().info("Rendes taggá válás kezdeményezése sikeresen megtörtént"); setResponsePage(SvieAccount.class); } }; if (ms.isEmpty()) { advocateToOrdinal.setVisible(false); } add(advocateToOrdinal); } } private static class GroupNameChoices implements IChoiceRenderer<Membership> { @Override public Object getDisplayValue(Membership ms) { return ms.getGroup().getName(); } @Override public String getIdValue(Membership ms, int index) { return ms.getId().toString(); } } }