package hu.sch.web.kp.group.admin;
import hu.sch.domain.Membership;
import hu.sch.services.MembershipManagerLocal;
import hu.sch.web.kp.group.ShowGroup;
import hu.sch.web.session.VirSession;
import hu.sch.web.wicket.components.SelectableMembership;
import hu.sch.web.wicket.components.SvieMembershipDetailsIcon;
import hu.sch.web.wicket.components.customlinks.ChangePostLink;
import hu.sch.web.wicket.components.tables.MembershipTable;
import hu.sch.web.wicket.components.tables.PanelColumn;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Ezt a panelt látja a user akkor, ha jogosult arra, hogy valakit öregtaggá
* avasson, vagy töröljön valakit a listáról.
*
* @author aldaris
* @author messo
* @see MembershipTable
*/
public final class AdminMembershipsPanel extends Panel {
private static Logger log = LoggerFactory.getLogger(AdminMembershipsPanel.class);
@Inject
private MembershipManagerLocal membershipManager;
public AdminMembershipsPanel(String id, final List<Membership> activeMembers) {
super(id);
final List<SelectableMembership> lines =
new ArrayList<SelectableMembership>(activeMembers.size());
for (Membership ms : activeMembers) {
lines.add(new SelectableMembership(ms));
}
Form entForm = new Form("form");
add(entForm);
entForm.add(new MembershipTable<SelectableMembership>("table", lines, SelectableMembership.class) {
@Override
public void onPopulateColumns(List<IColumn<SelectableMembership, String>> columns) {
columns.add(new PanelColumn<SelectableMembership>("SVIE",
MembershipTable.SORT_BY_SVIE) {
@Override
protected Panel getPanel(String componentId, SelectableMembership obj) {
return new SvieMembershipDetailsIcon(componentId, obj.getMembership());
}
});
columns.add(new PanelColumn<SelectableMembership>("Jogok") {
@Override
protected Panel getPanel(String id, SelectableMembership obj) {
return new ChangePostLink(id, obj.getMembership());
}
});
}
}.getDataTable());
entForm.add(new Button("oldBoyButton") {
@Override
public void onSubmit() {
try {
long myId = ((VirSession) getSession()).getUserId();
for (SelectableMembership extendedGroup : lines) {
Membership ms = extendedGroup.getMembership();
if (extendedGroup.getSelected()) {
if (!ms.getUser().getId().equals(myId)) {
membershipManager.inactivateMembership(ms);
}
}
}
getSession().info("A változások sikeresen mentésre kerültek");
} catch (Exception ex) {
getSession().error("Hiba történt a feldolgozás közben");
log.warn("Hiba történt az öregtaggá avatás közben", ex);
}
setResponsePage(ShowGroup.class, new PageParameters().add("id", activeMembers.get(0).getGroup().getId()));
}
});
entForm.add(new Button("eraseButton") {
@Override
protected String getOnClickScript() {
return "return confirm('Ezzel a művelettel végérvényesen eltűnnek az emberek a körből.\\nBiztosan szeretnéd törölni ezeket a tagokat?')";
}
@Override
public void onSubmit() {
try {
long myId = ((VirSession) getSession()).getUserId();
for (SelectableMembership extendedGroup : lines) {
Membership ms = extendedGroup.getMembership();
if (extendedGroup.getSelected()) {
if (!ms.getUser().getId().equals(myId)) {
membershipManager.deleteMembership(ms);
}
}
}
getSession().info("A változások sikeresen mentésre kerültek");
} catch (Exception ex) {
getSession().error("Hiba történt a tag törlése közben");
log.warn("Hiba történt a tag törlése közben", ex);
}
setResponsePage(ShowGroup.class, new PageParameters().add("id", activeMembers.get(0).getGroup().getId()));
}
});
if (activeMembers.isEmpty()) {
setVisible(false);
}
}
}