API v1 order_articles endpoints
This commit is contained in:
parent
127ae83f04
commit
ed9192c47f
14 changed files with 323 additions and 4 deletions
38
app/controllers/api/v1/order_articles_controller.rb
Normal file
38
app/controllers/api/v1/order_articles_controller.rb
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
class Api::V1::OrderArticlesController < Api::V1::BaseController
|
||||
include Concerns::CollectionScope
|
||||
|
||||
before_action ->{ doorkeeper_authorize! 'orders:read', 'orders:write' }
|
||||
|
||||
def index
|
||||
render_collection search_scope
|
||||
end
|
||||
|
||||
def show
|
||||
render json: scope.find(params.require(:id))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def scope
|
||||
OrderArticle.includes(:article_price, article: :supplier)
|
||||
end
|
||||
|
||||
def search_scope
|
||||
merge_ordered_scope(super, params.fetch(:q, {})[:ordered])
|
||||
end
|
||||
|
||||
def merge_ordered_scope(scope, ordered)
|
||||
if ordered.blank?
|
||||
scope
|
||||
elsif ordered == 'member' && current_ordergroup
|
||||
scope.joins(:group_order_articles).merge(current_ordergroup.group_order_articles)
|
||||
elsif ordered == 'all'
|
||||
table = scope.arel_table
|
||||
scope.where(table[:quantity].gt(0).or(table[:tolerance].gt(0)))
|
||||
elsif ordered == 'supplier'
|
||||
scope.ordered
|
||||
else
|
||||
scope.none # as a hint that it's an invalid value
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue