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

import javax.enterprise.inject.Specializes;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.security.Customer;
import de.ivu.elect.business.wahl.entity.NlWahlart;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahlart;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.faces.UserLocale;

@Specializes
public class NlStimmeLabelMessages extends StimmeLabelMessages {

  private static final long serialVersionUID = 1L;

  public static final String DEFAULT_LISTENWAHL = "DEFAULT_LISTENWAHL";

  public NlStimmeLabelMessages() {
    super();
  }

  public NlStimmeLabelMessages(UserLocale userLocale, Messages messages) {
    super(userLocale, messages);
  }

  @Override
  public String normalizeWahlartName(Wahlart wahlart) {
    if (NlWahlart.EERSTE_KAMER.equalsWahlart(wahlart)) { // ELECT-9890
      return NlWahlart.EERSTE_KAMER.name();
    }

    if (NlWahlart.isListenwahl(wahlart)) {
      return DEFAULT_LISTENWAHL;
    }

    return super.normalizeWahlartName(wahlart);
  }

  @Override // Cf. https://support.elect-it.com/ticket/browse/ELECT-9630?focusedCommentId=1029965&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1029965
  public String normalizeWahlebene(Gebiet gebiet) {
    if (gebiet != null) {
      Wahl wahl = gebiet.getWahl();

      if (wahl != null) {
        return normalizeWahlebene(wahl.getWahlart());
      }
    }

    return super.normalizeWahlebene(gebiet);
  }

  @Override
  public String normalizeWahlebene(Wahlart wahlart) {

    /*
     * NOTE, dass PSB vor HSB vor CSB gilt!
     */

    if (NlWahlart.isWasPSB(wahlart, Customer.NL_WAS)) {
      return NlWahlart.KUERZEL_WAHLEBENE_PSB;
    }

    if (NlWahlart.isWasHSB(wahlart, Customer.NL_WAS)) {
      return NlWahlart.KUERZEL_WAHLEBENE_HSB;
    }

    if (NlWahlart.isWasCSB(wahlart, Customer.NL_WAS)) {
      return NlWahlart.KUERZEL_WAHLEBENE_CSB;
    }

    return super.normalizeWahlebene(wahlart);
  }
}
