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

import javax.annotation.Nullable;
import javax.inject.Inject;

import org.apache.deltaspike.core.api.scope.ConversationGroup;

import de.ivu.elect.business.wahl.boundary.WahlEdit;
import de.ivu.elect.business.wahl.entity.NlWahlCustomData;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.faces.FacesMessageUtil;
import de.ivu.elect.jee.presentation.security.StartViewResolver;
import de.ivu.elect.presentation.exchange.SupportedFileFormatErmittler;
import de.ivu.elect.presentation.stimmeingabe.exchange.StimmeingabeImportSearchView;

public class NlBackupRestoreAction extends AbstractNlBackupRestoreMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlEdit wahlEdit;

  @Inject
  private transient StartViewResolver startViewResolver;

  @Inject
  @ConversationGroup(SupportedFileFormatErmittler.class)
  private transient SupportedFileFormatErmittler supportedFileFormatErmittler;

  @Override
  public String doAction() {
    boolean neuerWert = !nlBackupStatus.isBackupRestoreFreigeschaltet();
    Wahl wahl = wahlSessionSelect.getEntity();
    wahl.getCustomData(NlWahlCustomData.class).setBackupRestoreEnabled(neuerWert);
    wahlEdit.save(wahl);
    String targetViewId = startViewResolver.getStartViewId();
    if (neuerWert) {
      FacesMessageUtil.addInfoMessage("backup.restore.freischalten.success");
      targetViewId = StimmeingabeImportSearchView.VIEW_ID;
    } else {
      FacesMessageUtil.addInfoMessage("backup.restore.freischalten.lock.success");
    }
    supportedFileFormatErmittler.reset(); // ELECTVAPP-1218

    // return FacesContextUtil.getCurrentViewId();
    return targetViewId;
  }

  @Nullable
  @Override
  public String getTargetViewId() {
    return null; // action ausführen
  }

}
