package billingserver.billingserverapi;

import org.jetbrains.annotations.NotNull;

import java.io.Serializable;

/**
 * Результат обработки запросов.
 *
 * @author sergey.kolosov
 */
public class Result implements Serializable {


  @NotNull
  private final Status status;
  @NotNull
  private final String message;

  protected Result(@NotNull String status, @NotNull String message) {
    this.status = Status.valueOf(status);
    this.message = message;
  }

  protected Result(@NotNull Status status, @NotNull String message) {
    this.status = status;
    this.message = message;
  }

  @NotNull
  public Status getStatus() {
    return status;
  }

  @NotNull
  public String getMessage() {
    return message;
  }

  /**
   * All possible statuses for any results.
   */
  public enum Status {
    @SuppressWarnings({"EnumeratedConstantNamingConvention"})
    Ok,
    Error,
    AccountNotFound,
    NotEnoughMoney,
    TransactionExists,
    AccountLocked,
    MethodDeprecated
  }
}