
package de.ivu.elect.presentation.benutzerverwaltung.menu;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.jee.presentation.menu.MenuEntry;
import de.ivu.elect.presentation.ui.AbstractPageMenuModelBuilder;

@Named(BenutzerverwaltungPageMenu.COMPONENT_NAME)
public class BenutzerverwaltungPageMenu extends AbstractPageMenuModelBuilder {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "benutzerverwaltungPageMenu";

  @Inject
  private transient BenutzerSearchMenuItemEntry benutzerSearchMenuItemEntry;

  @Inject
  private transient BenutzerCreateMenuItemEntry benutzerCreateMenuItemEntry;

  @Inject
  private transient BenutzerImportMenuItemEntry benutzerImportMenuItemEntry;

  @Inject
  private transient BenutzerExportMenuItemEntry benutzerExportMenuItemEntry;

  @Inject
  private transient RolleSearchMenuItemEntry rolleSearchMenuItemEntry;

  @Inject
  private transient RolleCreateMenuItemEntry rolleCreateMenuItemEntry;

  @Inject
  private transient RolleImportMenuItemEntry rolleImportMenuItemEntry;

  @Inject
  private transient RolleExportMenuItemEntry rolleExportMenuItemEntry;

  @Inject
  private transient AngemeldeteBenutzerMenuItemEntry angemeldeteBenutzerMenuItemEntry;

  @Inject
  private transient BenutzerEinsatzortSearchMenuItemEntry benutzerEinsatzortSearchMenuItemEntry;

  @Inject
  private transient BenutzerEinsatzortCreateMenuItemEntry benutzerEinsatzortCreateMenuItemEntry;

  @Inject
  private transient BenutzerEinsatzortImportMenuItemEntry benutzerEinsatzortImportMenuItemEntry;

  @Inject
  private transient BenutzerEinsatzortExportMenuItemEntry benutzerEinsatzortExportMenuItemEntry;

  @Inject
  private transient RechteKonfigurationImportMenuItemEntry rechteKonfigurationImportMenuItemEntry;

  @Inject
  private transient RechteKonfigurationExportMenuItemEntry rechteKonfigurationExportMenuItemEntry;

  @Inject
  private transient RechteTestmodusEditMenuItemEntry rechteTestmodusEditMenuItemEntry;

  public BenutzerverwaltungPageMenu() {
    super();
  }

  @Override
  protected List<MenuEntry> getMenuEntriesSorted() {
    List<MenuEntry> result = new ArrayList<>();

    addMenuItemsBenutzer(result);

    result.add(separator);
    result.add(rolleSearchMenuItemEntry);
    result.add(rolleCreateMenuItemEntry);
    result.add(rolleImportMenuItemEntry);
    result.add(rolleExportMenuItemEntry);

    result.add(separator);
    result.add(angemeldeteBenutzerMenuItemEntry);

    result.add(separator);
    result.add(benutzerEinsatzortSearchMenuItemEntry);
    result.add(benutzerEinsatzortCreateMenuItemEntry);
    result.add(benutzerEinsatzortImportMenuItemEntry);
    result.add(benutzerEinsatzortExportMenuItemEntry);

    result.add(separator);
    result.add(rechteTestmodusEditMenuItemEntry);
    result.add(rechteKonfigurationImportMenuItemEntry);
    result.add(rechteKonfigurationExportMenuItemEntry);

    return result;
  }

  protected void addMenuItemsBenutzer(List<MenuEntry> result) {
    result.add(benutzerSearchMenuItemEntry);
    result.add(benutzerCreateMenuItemEntry);
    result.add(benutzerImportMenuItemEntry);
    result.add(benutzerExportMenuItemEntry);
  }
}
