package de.ivu.elect.presentation.dashboard.entries;

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

import javax.inject.Inject;

import de.ivu.elect.business.wahl.boundary.WahlterminSessionSelect;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.menu.AbstractMenuModelBuilder;
import de.ivu.elect.presentation.menu.AbstractMenuItemEntry;
import de.ivu.elect.presentation.wahl.menu.WahlterminCreateMenuItemEntry;

public class WahlterminDashboardEntry extends AbstractWahlOderWahlterminDashboardEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlterminSessionSelect wahlterminSessionSelect;

  @Inject
  private transient WahlterminDashboardSplitModelBuilder wahlterminDashboardSplitModelBuilder;

  @Inject
  protected transient WahlterminCreateMenuItemEntry wahlterminCreateMenuItemEntry;

  @Override
  protected void addProperties(FormBuilder formBuilder) {
    if (wahlterminSessionSelect.isSelected()) {
      Wahltermin wahltermin = wahlterminSessionSelect.getEntity();
      formBuilder.addProperty(wahltermin.getProperties().getNameProperty()).readonly();
      formBuilder.addProperty(wahltermin.getProperties().getWahldatumProperty()).readonly();
    }
  }

  @Override
  protected String getAuswaehlenKey() {
    return "dashboard.wahltermin.ausgewaehlen.action.label";
  }

  @Override
  protected String getWechselnKey() {
    return "dashboard.wahltermin.ausgewaehlen.wechseln.action.label";
  }

  @Override
  protected String getAusgewaehltKey() {
    return "dashboard.wahltermin.ausgewaehlte.wahl";
  }

  @Override
  protected String getNichtAusgewaehltKey() {
    return "dashboard.wahltermin.ausgewaehlte.keine";
  }

  @Override
  protected boolean isSelected() {
    return wahlterminSessionSelect.isSelected();
  }

  @Override
  protected AbstractMenuModelBuilder getSplitButtonModelBuilder() {
    return wahlterminDashboardSplitModelBuilder;
  }


  @Override
  public List<AbstractMenuItemEntry> getMenuItemsLast() {
    List<AbstractMenuItemEntry> result = new ArrayList<>();

    // ELECT-6886
    result.add(wahlterminCreateMenuItemEntry);

    return result;
  }

}

