
package de.ivu.elect.presentation.benutzerverwaltung;

import java.util.Date;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;

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

import de.ivu.elect.business.benutzerverwaltung.boundary.NachrichtConversationStore;
import de.ivu.elect.business.benutzerverwaltung.entity.Nachricht;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.security.UseCaseSecure;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.redirect.Redirect;
import de.ivu.elect.presentation.benutzerverwaltung.form.NachrichtViewFormBuilder;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;

@OnlineHilfeId("498")
@Named(NachrichtCreateView.COMPONENT_NAME)
public class NachrichtCreateView extends AbstractNachrichtCreateView {

  private static final long serialVersionUID = 1L;

  @Inject
  @ConversationGroup(NachrichtConversationStore.class)
  private NachrichtConversationStore nachrichtConversationStore;

  @Inject
  private NachrichtViewFormBuilder nachrichtViewFormBuilder;

  public NachrichtCreateView() {
    super();
  }

  @Override
  @PostConstruct
  public void init() {
    super.init();

    if (nachrichtConversationStore.isSelected()) {
      getEntity().setUrspruenglicheNachricht(nachrichtConversationStore.getEntity());
    }
  }

  @Override
  protected void setEntity(Nachricht entity) {
    entity.setMandant(getMandant());
    super.setEntity(entity);
  }

  @Override
  public void addProperties(FormBuilder formBuilder, Nachricht nachricht) {
    nachrichtViewFormBuilder.addProperties(formBuilder, nachricht);
  }

  @Override
  @Redirect
  @UseCaseSecure(UseCasePermission.NACHRICHT_CREATE)
  public String save() {
    Nachricht nachricht = getEntity();
    nachricht.setSenderkennung(getSelectedBenutzerKennung());
    nachricht.setZeitpunkt(new Date());

    return super.save();
  }
}
