package de.ivu.elect.business.internet.control;

import java.io.Serializable;

import javax.annotation.Nullable;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.inject.Inject;

import org.apache.commons.lang3.StringUtils;

import de.ivu.elect.business.wahl.boundary.WahlParameterDAO;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlParameter;

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
/**
 * Um den Zeitpunkt zwischen lesen und aktualisieren möglichst gering zu halten => neue, eigene Transaktion
 */
public class PraesentationAsynchronBereitstellenHelper implements Serializable {

  @Inject
  private transient WahlParameterDAO wahlParameterDAO;

  @Inject
  private transient PraesentationUploadServiceControl praesentationUploadServiceControl;

  @Nullable
  public String readAnResetWahlparameter(WahlParameter wahlParameterNotAttached) {

    if (wahlParameterNotAttached == null) {
      return null;
    }
    WahlParameter wahlParameter = wahlParameterDAO.findByPrimaryKey(wahlParameterNotAttached.getPk());
    if (wahlParameter != null && StringUtils.isNotBlank(wahlParameter.getWert())) {
      String result = wahlParameter.getWert();
      wahlParameter.setWert(null);
      return result;
    }
    return null;
  }


  public void disableUploadService(Wahl wahl) {
    praesentationUploadServiceControl.disableUploadServiceError(wahl);
  }

}
