package de.ivu.elect.business.stimmzettel.boundary;

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

import de.ivu.elect.business.protokollierung.entity.LoeschProtokollEvent;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.security.UseCaseSecure;
import de.ivu.elect.business.stimmzettel.entity.StimmzettelKopfdatum;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;

@Stateless
public class StimmzettelKopfdatumEdit extends AbstractStimmzettelKopfdatumEdit {

  @Inject
  private transient LoeschProtokollEvent loeschProtokollEvent;

  @Inject
  private transient GebietNummerFormatter gebietNummerFormatter;

  @Inject
  private transient Messages messages;

  @Override
  public void delete(StimmzettelKopfdatum entity) {
    StimmzettelKopfdatum attachedEntity = getAttachedEntity(entity);
    loeschProtokollEvent.sendeLoeschProtokollEvent(attachedEntity.getWahl(), attachedEntity, "loesch.protokoll.stimmzettel.kopfdatum",
        gebietNummerFormatter.getDarstellung(attachedEntity.getGebiet()), messages.lokalisiere(attachedEntity.getStimmzettelKopfdatumArt()));

    super.delete(entity);
  }

  @UseCaseSecure(UseCasePermission.STIMMZETTEL_KOPFDATUM_DELETE)
  public void deleteSearched(List<StimmzettelKopfdatum> stimmzettelKopfdatumList) {
    for (StimmzettelKopfdatum stimmzettelKopfdatum : dao.attachAll(stimmzettelKopfdatumList)) {
      delete(stimmzettelKopfdatum);
    }
  }



}
