package com.linx.lio;

import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;

class CheckoutRequest {
    private final NSU nsu;
    private final long amount;
    private final int installments;
    @PaymentMethod
    private final int paymentMethod;

    CheckoutRequest(@NotNull NSU nsu, final long amount, final int installments,
                    @PaymentMethod final int paymentMethod) {
        this.nsu = nsu;
        this.amount = amount;
        this.installments = installments;
        this.paymentMethod = paymentMethod;
    }

    final NSU getNsu() {
        return nsu;
    }

    final long getAmount() {
        return amount;
    }

    final int getInstallments() {
        return installments;
    }

    @PaymentMethod
    final int getPaymentMethod() {
        return paymentMethod;
    }

    static CheckoutRequest fromJSONObject(@NotNull final JSONObject jsonObject) throws JSONException {
        final NSU nsu = NSU.fromJSONObject(jsonObject);
        final long amount = jsonObject.getLong("amount");
        final int installments = jsonObject.getInt("installments");
        final int paymentMethod = jsonObject.getInt("paymentMethod");

        return new CheckoutRequest(nsu, amount, installments, paymentMethod);
    }
}
