
package de.ivu.elect.presentation.entschaedigung.table;

import static org.apache.commons.lang3.StringUtils.trimToEmpty;

import java.math.BigDecimal;

import de.ivu.elect.business.entschaedigung.boundary.AbstractEntschaedigungDAO;
import de.ivu.elect.business.entschaedigung.control.EntschaedigungAggregator;
import de.ivu.elect.business.entschaedigung.entity.AbstractEntschaedigungsart;
import de.ivu.elect.business.entschaedigung.entity.EntschaedigungConstants;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.faces.UserLocale;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public class AuszahlungEntschaedigungenGesamtbetragMitWaehrungColumn extends AbstractAuszahlungEntschaedigungenColumn {

  private static final long serialVersionUID = 1L;

  private final UserLocale userLocale;

  public AuszahlungEntschaedigungenGesamtbetragMitWaehrungColumn(UserLocale userLocale, Messages messages, AbstractEntschaedigungDAO entschaedigungDAO) {
    super("Auszahlung-Entschaedigungen-Gesamtbetrag-Mit-Waehrung", messages, entschaedigungDAO, EntschaedigungConstants.MESSAGE_KEY_GESAMTBETRAG_EINZAHL, ColumnType.STRING);

    this.userLocale = userLocale;
  }

  @Override
  protected Object getValue(EntschaedigungAggregator entschaedigungenInAuszahlungAggregator) {
    if (entschaedigungenInAuszahlungAggregator.isNotEmpty()) {
      return formatBetrag(entschaedigungenInAuszahlungAggregator.calculateGesamtbetrag(), entschaedigungenInAuszahlungAggregator.getWaehrungAlsIsoCode());
    }

    return null;
  }

  @Override
  public String getStyleClass() {
    return trimToEmpty(super.getStyleClass()) + " ui-dt-c-numeric";
  }

  private String formatBetrag(BigDecimal betrag, String waehrungAlsIsoCode) {
    return AbstractEntschaedigungsart.formatBetragMitWaehrung(userLocale.getLocale(), betrag, waehrungAlsIsoCode);
  }
}
