package billingserver.billingserverapi;

import billingserver.commons.AccountStatus;
import billingserver.commons.CurrencyValue;
import billingserver.commons.ItemMallCurrency;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import replicationAnnotations.OuterWorldAPI;

/**
 * Результат создания нового аккаунта.
 *
 * @author sergey.kolosov
 */
@OuterWorldAPI
public class AccountInfoResult extends Result {


  @NotNull
  private final String account;
  @NotNull
  private final CurrencyValue[] moneys;
  private final int money;
  @NotNull
  private final AccountStatus accountStatus;

  @SuppressWarnings({"UnusedDeclaration"})
  private AccountInfoResult() {
    this(StringUtils.EMPTY, StringUtils.EMPTY);
  }

  public AccountInfoResult(@NotNull String account, @NotNull String message) {
    super(Status.Error, message);
    this.account = account;
    this.moneys = CurrencyValue.EMPTY_ARRAY;
    this.money = 0;
    this.accountStatus = AccountStatus.LOCKED;
  }

  public AccountInfoResult(@NotNull String account, @NotNull CurrencyValue[] moneys, @NotNull AccountStatus accountStatus) {
    super(Status.Ok, StringUtils.EMPTY);
    this.moneys = moneys;
    final CurrencyValue mainValue = CurrencyValue.find(moneys, ItemMallCurrency.MAIN);
    this.money = mainValue == null ? 0 : mainValue.getValue();
    this.account = account;
    this.accountStatus = accountStatus;
  }

  @NotNull
  public String getAccount() {
    return account;
  }

  @NotNull
  public CurrencyValue[] getMoneys() {
    return moneys;
  }

  public int getMoney() {
    return money;
  }

  @NotNull
  public AccountStatus getAccountStatus() {
    return accountStatus;
  }
}