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

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

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.jee.presentation.menu.MenuEntry;
import de.ivu.elect.presentation.ergebnis.menu.Eml510bEmptyErgebnisExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.Eml510cEmptyErgebnisExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.Eml510dEmptyErgebnisExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasErgebnisArtefaktNachGebietAbschlussBulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelE2BulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelIBulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelIIBulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelN10BulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelN11BulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelO3BulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelP221BijlageBulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelP221BulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelP222BijlageBulkExportMenuItemEntry;
import de.ivu.elect.presentation.ergebnis.menu.NlWasModelP222BulkExportMenuItemEntry;

@Specializes
public class NlWasExportArtefaktNachSystemExportstatusMainMenuEntry extends NlExportArtefaktNachSystemExportstatusMainMenuEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient NlWasModelIBulkExportMenuItemEntry nlWasModelIBulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelN10BulkExportMenuItemEntry nlWasModelN10BulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelE2BulkExportMenuItemEntry nlWasModelE2BulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelIIBulkExportMenuItemEntry nlWasModelIIBulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelN11BulkExportMenuItemEntry nlWasModelN11BulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelO3BulkExportMenuItemEntry nlWasModelO3BulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelP221BulkExportMenuItemEntry nlWasModelP221BulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelP221BijlageBulkExportMenuItemEntry nlWasModelP221BijlageBulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelP222BulkExportMenuItemEntry nlWasModelP222BulkExportMenuItemEntry;

  @Inject
  private transient NlWasModelP222BijlageBulkExportMenuItemEntry nlWasModelP222BijlageBulkExportMenuItemEntry;

  @Inject
  private transient NlWasErgebnisArtefaktNachGebietAbschlussBulkExportMenuItemEntry nlWasErgebnisArtefaktNachGebietAbschlussBulkExportMenuItemEntry;

  @Inject
  private transient NlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry nlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry;

  @Inject
  private transient Eml510bEmptyErgebnisExportMenuItemEntry eml510bEmptyErgebnisExportMenuItemEntry;

  @Inject
  private transient Eml510cEmptyErgebnisExportMenuItemEntry eml510cEmptyErgebnisExportMenuItemEntry;

  @Inject
  private transient Eml510dEmptyErgebnisExportMenuItemEntry eml510dEmptyErgebnisExportMenuItemEntry;

  public NlWasExportArtefaktNachSystemExportstatusMainMenuEntry() {
    super();
  }

  @Override
  protected List<MenuEntry> getSubMenuEntriesEinzeldokument() {
    List<MenuEntry> result = new ArrayList<>(super.getSubMenuEntriesEinzeldokument());

    result.add(nlWasModelIBulkExportMenuItemEntry);
    result.add(nlWasModelN10BulkExportMenuItemEntry);
    result.add(nlWasModelE2BulkExportMenuItemEntry); // ELECT-11755

    // ELECT-10393 result.add(nlWasModelIIBulkExportMenuItemEntry);
    // ELECT-10393 result.add(nlWasModelN11BulkExportMenuItemEntry);

    // ELECT-10393 result.add(nlWasModelO3BulkExportMenuItemEntry);

    // ELECT-10377, ELECT-10393 result.add(nlWasModelP221BulkExportMenuItemEntry);
    result.add(nlWasModelP221BijlageBulkExportMenuItemEntry);

    // ELECT-10377, ELECT-10393 result.add(nlWasModelP222BulkExportMenuItemEntry);
    result.add(nlWasModelP222BijlageBulkExportMenuItemEntry);

    return result;
  }

  @Override // ELECT-10319
  protected List<MenuEntry> getSubMenuEntriesEml() {
    List<MenuEntry> result = new ArrayList<>(super.getSubMenuEntriesEml());

    result.add(eml510bEmptyErgebnisExportMenuItemEntry);
    result.add(eml510cEmptyErgebnisExportMenuItemEntry);
    result.add(eml510dEmptyErgebnisExportMenuItemEntry);

    return result;
  }

  @Override
  protected List<MenuEntry> getSubMenuEntriesDokumentPakete() {
    List<MenuEntry> result = new ArrayList<>(super.getSubMenuEntriesDokumentPakete());

    result.add(nlWasErgebnisArtefaktNachGebietAbschlussBulkExportMenuItemEntry);
    result.add(nlWasErgebnisArtefaktNachGebietFreigabeBulkExportMenuItemEntry);

    return result;
  }
}
