package net.billforward.model;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.billforward.BillForwardClient;
import net.billforward.exception.APIConnectionException;
import net.billforward.exception.APIException;
import net.billforward.exception.AuthenticationException;
import net.billforward.exception.CardException;
import net.billforward.exception.InvalidRequestException;
import com.google.gson.annotations.Expose;
import com.google.gson.reflect.TypeToken;
public class QuoteRequest extends InsertableEntity<QuoteRequest> {
@Expose protected String product;
@Expose protected String productRatePlan;
@Expose protected String accountID;
@Expose protected String productID;
@Expose protected String subscriptionID;
@Expose protected QuoteType quoteFor;
@Expose protected Boolean prorated;
@Expose protected Boolean free;
@Expose protected List<QuoteRequestValue> quantities = new ArrayList<QuoteRequestValue>();
@Expose protected List<String> couponCodes = new ArrayList<String>();
@Expose protected Date periodStart;
@Expose protected Date periodEnd;
public void addQuantity(String pricingComponent, int quantity) {
QuoteRequestValue comp = new QuoteRequestValue();
comp.pricingComponent = pricingComponent;
comp.quantity = quantity;
quantities.add(comp);
}
public void addCoupon(String coupon) {
couponCodes.add(coupon);
}
public static QuoteRequest create(QuoteRequest quoteRequest) throws AuthenticationException, InvalidRequestException, APIConnectionException, CardException, APIException {
return create(quoteRequest, ResourcePath())[0];
}
protected static ResourcePath resourcePath;
public QuoteRequest() {
}
public QuoteRequest(BillForwardClient client_) {
super(client_);
}
@Override
protected ResourcePath getResourcePath() {
return resourcePath;
}
public static ResourcePath ResourcePath() {
return resourcePath;
}
static {
resourcePath = new ResourcePath("quotes", "quotes", new TypeToken<APIResponse<QuoteRequest>>() {}.getType());
}
}