
package de.ivu.elect.presentation.person;

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

import de.ivu.elect.business.person.entity.Beruf;
import de.ivu.elect.business.personenpruefung.boundary.PersonenKonfliktWertenlistenAbgleichBerufConversationSelect;
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.hilfe.KeineOnlineHilfe;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import de.ivu.elect.presentation.person.form.BerufViewFormBuilder;

@OnlineHilfeId(KeineOnlineHilfe.KEINE_ONLINE_HILFE)
@Named(AbstractBerufCreateView.COMPONENT_NAME)
public class BerufCreateView extends AbstractBerufCreateView {

  private static final long serialVersionUID = 1L;

  @Inject
  private BerufViewFormBuilder propertyModel;

  @Inject
  private PersonenKonfliktWertenlistenAbgleichBerufConversationSelect berufConversationSelect;

  public BerufCreateView() {
    super();
  }

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

    // ELECT-2788: Übernehme den ersten Beruf, der nicht in der Datenbank vorkommt.
    if (berufConversationSelect.isSelected()) {
      Beruf beruf = berufConversationSelect.getBeruf();
      getEntity().setName(beruf.getName());
    }
  }

  @Override
  @Redirect
  @UseCaseSecure(UseCasePermission.BERUF_CREATE)
  public String save() {
    String viewId = super.save();

    // ELECT-2788: Mit dem Speichern wird der Konflikt evtl. gelöscht.
    berufConversationSelect.clearEntity();

    return viewId;
  }

  @Override
  public void addProperties(FormBuilder builder, Beruf entity) {
    propertyModel.addProperties(builder, entity);
  }
}
