
package de.ivu.elect.presentation.gebietsbaum.tree;

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

import de.ivu.elect.business.gebietsbaum.boundary.GebietsartConversationSelect;
import de.ivu.elect.business.gebietsbaum.entity.GebietsartBezirksart;
import de.ivu.elect.presentation.gebietsbaum.menu.WasBriefwahlbezirkCreateMenuItemEntry;
import de.ivu.elect.presentation.gebietsbaum.menu.WasStimmbezirkCreateMenuItemEntry;

@Specializes
public class WasGebietCreateViewPermissionCheck extends GebietCreateViewPermissionCheck {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient GebietsartConversationSelect gebietsartConversationSelect;

  @Inject
  private transient WasStimmbezirkCreateMenuItemEntry stimmbezirkCreateMenuItemEntry;

  @Inject
  private transient WasBriefwahlbezirkCreateMenuItemEntry briefwahlbezirkCreateMenuItemEntry;

  public WasGebietCreateViewPermissionCheck() {
    super();
  }

  @Override
  public boolean isGebietCreatePossible() {
    return super.isGebietCreatePossible() || isErfassungsgebietCreatePossible();
  }

  private boolean isErfassungsgebietCreatePossible() {
    if (gebietsartConversationSelect.isSelected()) {
      GebietsartBezirksart gebietsartBezirksart = gebietsartConversationSelect.getEntity().getBezirksart();

      return gebietsartBezirksart.isStimmbezirk() && stimmbezirkCreateMenuItemEntry.isPossible() || gebietsartBezirksart.isBriefwahlbezirk() && briefwahlbezirkCreateMenuItemEntry.isPossible();
    }

    return false;
  }
}
