module Ecommerce
module Resources
#
# A wrapper to Ecommerce adjusments orders API
#
# [API]
# Documentation: http://myfreecomm.github.io/passaporte-web/ecommerce/api/index.html
#
class AdjustmentOrder < Base
attr_reader :url, :amount, :description, :valid_until, :valid_from
#
# Adjustment order API does not return the ID field
#
def id
url.split('/')[8].to_i
end
#
# Creates an Adjustment order
#
# [API]
# Method: POST /api/orders/:slug/:id/adjustments/
#
# Documentation: http://myfreecomm.github.io/passaporte-web/ecommerce/api/orders.html#criacao-de-alteracao-de-valor-para-uma-ordem-de-compra
#
def self.create(slug, order_id, params)
client.post("/api/orders/#{slug}/#{order_id}/adjustments/", body: params) do |response|
build(response)
end
end
#
# Lists all Adjustments orders of an order and return a collection
# and pagination information (represented by Ecommerce::Resources::AdjustmentOrderCollection)
#
# [API]
# Method: GET /api/orders/:slug/adjustments/
#
# Documentation: http://myfreecomm.github.io/passaporte-web/ecommerce/api/orders.html#listagem-das-alteracoes-de-valor-associadas-a-uma-ordem-de-compra
#
def self.find_all(slug, order_id, page = 1, limit = 20)
body = { page: page, limit: limit }
client.get("/api/orders/#{slug}/#{order_id}/adjustments/", body: body) do |response|
Ecommerce::Resources::AdjustmentOrderCollection.build(response)
end
end
#
# Finds an Adjustment order
#
# [API]
# Method: GET /api/orders/:slug/:order_id/adjustments/:id/
#
# Documentation: http://myfreecomm.github.io/passaporte-web/ecommerce/api/orders.html#obtencao-dos-dados-de-uma-alteracao-de-valor
#
def self.find(slug, order_id, id)
client.get("/api/orders/#{slug}/#{order_id}/adjustments/#{id}/") do |response|
build(response)
end
end
#
# Destroys an Adjustment order
#
# [API]
# Method: DELETE /api/orders/:slug/:order_id/adjustments/:id/
#
# Documentation: http://myfreecomm.github.io/passaporte-web/ecommerce/api/orders.html#remocao-de-uma-alteracao-de-valor
#
def self.destroy(order_id, slug, id)
client.delete("/api/orders/#{slug}/#{order_id}/adjustments/#{id}/") do |response|
build(response)
end
end
def self.build(response)
attributes = parsed_body(response)
attributes.empty? ? {} : new(attributes)
end
end
end
end