package de.ivu.elect.business.auffaelligkeit.entity;

import java.util.Collections;
import java.util.List;
import java.util.Locale;

import de.ivu.elect.business.ergebnis.entity.Stimmenart;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.jee.faces.Messages;

public class AuffaelligkeitBermerkungAusreissenBeiEinerStimmenart extends AuffaelligkeitBemerkung {
  private PolitischeGruppe politischeGruppe;

  private Stimmenart ersteStimmenart;

  private Stimmenart zweiteStimmenart;

  private double anteilAktuellErsterStimmenart;

  private double anteilAktuellZweiterStimmenart;

  public AuffaelligkeitBermerkungAusreissenBeiEinerStimmenart(double auffaelligkeitsskala, PolitischeGruppe politischeGruppe, Stimmenart ersteStimmenart, Stimmenart zweiteStimmenart, double anteilAktuellErsterStimmenart, double anteilAktuellZweiterStimmenart) {
    super(auffaelligkeitsskala);
    this.politischeGruppe = politischeGruppe;
    this.ersteStimmenart = ersteStimmenart;
    this.zweiteStimmenart = zweiteStimmenart;
    this.anteilAktuellErsterStimmenart = anteilAktuellErsterStimmenart;
    this.anteilAktuellZweiterStimmenart = anteilAktuellZweiterStimmenart;
  }

  @Override
  public String getAuffaelligkeitBemerkungAlsString(Locale locale, Messages messages) {

    return messages.getMessageForMessageKey("stimmen.auffaelligkeit.suche.bemerkungen.ausreissen.einer.stimmenart",
        messages.getMessageForMessageKey("stimmen.auffaelligkeit.suche.bemerkungen.stimmenart." + ersteStimmenart.toString().toLowerCase()),
        getNumberInAbsoluteValueFormattedInDecimalTwoFractionDigitsPercentageForm(anteilAktuellErsterStimmenart, locale, messages),
        messages.getMessageForMessageKey("stimmen.auffaelligkeit.suche.bemerkungen.stimmenart." + zweiteStimmenart.toString().toLowerCase()),
        getNumberInAbsoluteValueFormattedInDecimalTwoFractionDigitsPercentageForm(anteilAktuellZweiterStimmenart, locale, messages),
        getKurzNameWennVorhanden(politischeGruppe));
  }

  @Override
  public List<PolitischeGruppe> getInvolvedPartys() {
    return Collections.singletonList(politischeGruppe);
  }

  private String getKurzNameWennVorhanden(PolitischeGruppe politischeGruppe) {
    if (politischeGruppe.getKurzname() != null) {
      return politischeGruppe.getKurzname();
    }
    return politischeGruppe.getName();
  }
}
