package com.twocheckout.model;
import java.math.BigDecimal;
import java.util.HashMap;
import com.google.gson.Gson;
import com.twocheckout.TwocheckoutApi;
import com.twocheckout.TwocheckoutProduct;
import com.twocheckout.TwocheckoutResponse;
import com.twocheckout.TwocheckoutException;
public class Product {
private long product_id;
private int assigned_product_id;
private String approved_url;
private String commission;
private String commission_type;
private String description;
private String duration;
private String handling;
private String long_description;
private String name;
private String pending_url;
private BigDecimal price;
private String recurrence;
private String startup_fee;
private String tangible;
private long vendor_id;
private String vendor_product_id;
private String weight;
private Categories[] categories;
private Image[] images;
private ProductOption[] options;
public long getProductId() {
return product_id;
}
public void setProductId(long product_id) {
this.product_id = product_id;
}
public int getAssignedProductId() {
return assigned_product_id;
}
public void setAssignedProductId(int assigned_product_id) {
this.assigned_product_id = assigned_product_id;
}
public String getApprovedUrl() {
return approved_url;
}
public void setApprovedUrl(String approved_url) {
this.approved_url = approved_url;
}
public String getCommission() {
return commission;
}
public void setCommission(String commission) {
this.commission = commission;
}
public String getCommissionType() {
return commission_type;
}
public void setCommissionType(String commission_type) {
this.commission_type = commission_type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getHandling() {
return handling;
}
public void setHandling(String handling) {
this.handling = handling;
}
public String getLongDescription() {
return long_description;
}
public void setLongDescription(String long_description) {
this.long_description = long_description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPendingUrl() {
return pending_url;
}
public void setPendingUrl(String pending_url) {
this.pending_url = pending_url;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public String getRecurrence() {
return recurrence;
}
public void setRecurrence(String recurrence) {
this.recurrence = recurrence;
}
public String getStartupFee() {
return startup_fee;
}
public void setStartupFee(String startup_fee) {
this.startup_fee = startup_fee;
}
public String getTangible() {
return tangible;
}
public void setTangible(String tangible) {
this.tangible = tangible;
}
public long getVendorId() {
return vendor_id;
}
public void setVendorId(long vendor_id) {
this.vendor_id = vendor_id;
}
public String getVendorProductId() {
return vendor_product_id;
}
public void setVendorProductId(String vendor_product_id) {
this.vendor_product_id = vendor_product_id;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
public Categories[] getCategories() {
return categories;
}
public void setCategories(Categories[] categories) {
this.categories = categories;
}
public Image[] getImages() {
return images;
}
public void setImages(Image[] images) {
this.images = images;
}
public ProductOption[] getOptions() {
return options;
}
public void setOptions(ProductOption[] options) {
this.options = options;
}
public TwocheckoutResponse update() throws TwocheckoutException {
HashMap<String, String> args = new HashMap<String, String>();
args.put("approved_url", approved_url);
args.put("commission", commission);
args.put("commission_type", commission_type);
args.put("description", description);
args.put("duration", duration);
args.put("handling", handling);
args.put("long_description", long_description);
args.put("name", name);
args.put("pending_url", pending_url);
args.put("price", String.valueOf(price));
args.put("product_id", String.valueOf(product_id));
args.put("recurrence", recurrence);
args.put("startup_fee", startup_fee);
args.put("tangible", tangible);
args.put("vendor_product_id", vendor_product_id);
args.put("weight", weight);
for(int i = 0;i< options.length; i++){
args.put("option_id", String.valueOf(options[i].getOptionId()));
}
for(int i = 0;i< categories.length; i++){
args.put("category_id", String.valueOf(categories[i].getCategoryId()));
}
String urlSuffix = "/api/products/update_product";
String response = TwocheckoutApi.post(urlSuffix, args);
TwocheckoutResponse responseObj = new Gson().fromJson(response, TwocheckoutResponse.class);
return responseObj;
}
public TwocheckoutResponse delete() throws TwocheckoutException {
HashMap<String, String> args = new HashMap<String, String>();
args.put("product_id", String.valueOf(product_id));
String urlSuffix = "/api/products/delete_product";
String response = TwocheckoutApi.post(urlSuffix, args);
TwocheckoutResponse responseObj = new Gson().fromJson(response, TwocheckoutResponse.class);
return responseObj;
}
public Product refresh() throws TwocheckoutException {
HashMap<String, String> args = new HashMap<String, String>();
args.put("product_id", String.valueOf(product_id));
String urlSuffix = "/api/products/detail_product";
String response = TwocheckoutApi.get(urlSuffix, args);
TwocheckoutProduct responseObj = new Gson().fromJson(response, TwocheckoutProduct.class);
response = new Gson().toJson(responseObj.product);
Product resultObj = new Gson().fromJson(response, Product.class);
return resultObj;
}
}