workarea-api-admin 4.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/README.md +82 -0
- data/Rakefile +10 -0
- data/app/assets/images/workarea/api/admin/icons/api.svg +1 -0
- data/app/controllers/workarea/api/admin/application_controller.rb +73 -0
- data/app/controllers/workarea/api/admin/categories_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/category_product_rules_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/content_assets_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/content_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/discounts_controller.rb +271 -0
- data/app/controllers/workarea/api/admin/email_signups_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/fulfillments_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/inventory_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/navigation_menus_controller.rb +267 -0
- data/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/orders_controller.rb +160 -0
- data/app/controllers/workarea/api/admin/pages_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_profiles_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_transactions_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/payments_controller.rb +115 -0
- data/app/controllers/workarea/api/admin/prices_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/pricing_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/product_images_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/products_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +122 -0
- data/app/controllers/workarea/api/admin/redirects_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/releases_controller.rb +304 -0
- data/app/controllers/workarea/api/admin/saved_addresses_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/saved_credit_cards_controller.rb +256 -0
- data/app/controllers/workarea/api/admin/shipping_rates_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/shipping_services_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/shippings_controller.rb +105 -0
- data/app/controllers/workarea/api/admin/swagger_controller.rb +41 -0
- data/app/controllers/workarea/api/admin/tax_categories_controller.rb +242 -0
- data/app/controllers/workarea/api/admin/tax_rates_controller.rb +292 -0
- data/app/controllers/workarea/api/admin/users_controller.rb +296 -0
- data/app/controllers/workarea/api/admin/variants_controller.rb +232 -0
- data/app/models/workarea/api/admin/bulk_upsert.rb +74 -0
- data/app/models/workarea/user.decorator +7 -0
- data/app/views/workarea/admin/users/_api_permissions.html.haml +6 -0
- data/app/workers/workarea/perform_api_bulk_upsert.rb +15 -0
- data/bin/rails +18 -0
- data/config/initializers/append_points.rb +4 -0
- data/config/initializers/config.rb +15 -0
- data/config/locales/en.yml +9 -0
- data/config/routes.rb +81 -0
- data/lib/workarea/api/admin.rb +21 -0
- data/lib/workarea/api/admin/engine.rb +14 -0
- data/lib/workarea/api/admin/swagger.rb +106 -0
- data/test/documentation/workarea/api/admin/categories_documentation_test.rb +106 -0
- data/test/documentation/workarea/api/admin/category_product_rules_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/content_assets_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/content_documentation_test.rb +87 -0
- data/test/documentation/workarea/api/admin/discounts_documentation_test.rb +85 -0
- data/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/fulfillment_documentation_test.rb +84 -0
- data/test/documentation/workarea/api/admin/inventory_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/navigation_menus_documentation_test.rb +81 -0
- data/test/documentation/workarea/api/admin/navigation_taxons_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/orders_documentation_test.rb +65 -0
- data/test/documentation/workarea/api/admin/pages_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/payment_profiles_documentation_test.rb +98 -0
- data/test/documentation/workarea/api/admin/payment_transactions_documentation_test.rb +43 -0
- data/test/documentation/workarea/api/admin/payments_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/prices_documentation_test.rb +82 -0
- data/test/documentation/workarea/api/admin/pricing_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/product_images_documentation_test.rb +101 -0
- data/test/documentation/workarea/api/admin/products_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/promo_code_lists_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/recommendation_settings_documentation_test.rb +37 -0
- data/test/documentation/workarea/api/admin/redirects_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/release_changes_documentation_test.rb +32 -0
- data/test/documentation/workarea/api/admin/releases_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/saved_addresses_documentation_test.rb +92 -0
- data/test/documentation/workarea/api/admin/saved_credit_cards_documentation_test.rb +86 -0
- data/test/documentation/workarea/api/admin/shipping_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/shipping_services_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/shippings_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/tax_categories_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/tax_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/users_documentation_test.rb +99 -0
- data/test/documentation/workarea/api/admin/variants_documentation_test.rb +80 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +55 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/workarea.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +1 -0
- data/test/integration/workarea/api/admin/audit_log_integration_test.rb +20 -0
- data/test/integration/workarea/api/admin/authentication_integration_test.rb +61 -0
- data/test/integration/workarea/api/admin/categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/category_product_rules_integration_test.rb +58 -0
- data/test/integration/workarea/api/admin/content_assets_integration_test.rb +65 -0
- data/test/integration/workarea/api/admin/content_integration_test.rb +59 -0
- data/test/integration/workarea/api/admin/discounts_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/email_signups_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/error_handling_integration_test.rb +16 -0
- data/test/integration/workarea/api/admin/fulfillments_integration_test.rb +62 -0
- data/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +63 -0
- data/test/integration/workarea/api/admin/orders_integration_test.rb +53 -0
- data/test/integration/workarea/api/admin/pages_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +75 -0
- data/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +45 -0
- data/test/integration/workarea/api/admin/payments_integration_test.rb +29 -0
- data/test/integration/workarea/api/admin/prices_integration_test.rb +55 -0
- data/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +72 -0
- data/test/integration/workarea/api/admin/product_images_integration_test.rb +56 -0
- data/test/integration/workarea/api/admin/products_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +41 -0
- data/test/integration/workarea/api/admin/redirects_integration_test.rb +69 -0
- data/test/integration/workarea/api/admin/release_changes_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/releases_integration_test.rb +60 -0
- data/test/integration/workarea/api/admin/saved_addresses_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/saved_credit_cards_integration_test.rb +76 -0
- data/test/integration/workarea/api/admin/shipping_rates_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/shipping_services_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/shippings_integration_test.rb +34 -0
- data/test/integration/workarea/api/admin/tax_categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/tax_rates_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/users_integration_test.rb +67 -0
- data/test/integration/workarea/api/admin/variants_integration_test.rb +59 -0
- data/test/models/workarea/api/admin/bulk_upsert_test.rb +79 -0
- data/test/test_helper.rb +10 -0
- data/test/vcr_cassettes/product_image_from_url.yml +43 -0
- data/workarea-api-admin.gemspec +18 -0
- metadata +252 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class ContentController < Admin::ApplicationController
|
|
5
|
+
before_action :find_content, except: [:index, :create, :bulk]
|
|
6
|
+
|
|
7
|
+
swagger_path '/content' do
|
|
8
|
+
operation :get do
|
|
9
|
+
key :summary, 'All Content'
|
|
10
|
+
key :description, 'Returns all content from the system'
|
|
11
|
+
key :operationId, 'listContent'
|
|
12
|
+
key :produces, ['application/json']
|
|
13
|
+
|
|
14
|
+
parameter do
|
|
15
|
+
key :name, :page
|
|
16
|
+
key :in, :query
|
|
17
|
+
key :description, 'Current page'
|
|
18
|
+
key :required, false
|
|
19
|
+
key :type, :integer
|
|
20
|
+
key :default, 1
|
|
21
|
+
end
|
|
22
|
+
parameter do
|
|
23
|
+
key :name, :sort_by
|
|
24
|
+
key :in, :query
|
|
25
|
+
key :description, 'Field on which to sort (see responses for possible values)'
|
|
26
|
+
key :required, false
|
|
27
|
+
key :type, :string
|
|
28
|
+
key :default, 'created_at'
|
|
29
|
+
end
|
|
30
|
+
parameter do
|
|
31
|
+
key :name, :sort_direction
|
|
32
|
+
key :in, :query
|
|
33
|
+
key :description, 'Direction for sort by'
|
|
34
|
+
key :type, :string
|
|
35
|
+
key :enum, %w(asc desc)
|
|
36
|
+
key :default, 'desc'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
response 200 do
|
|
40
|
+
key :description, 'Content'
|
|
41
|
+
schema do
|
|
42
|
+
key :type, :object
|
|
43
|
+
property :content do
|
|
44
|
+
key :type, :array
|
|
45
|
+
items do
|
|
46
|
+
key :'$ref', 'Workarea::Content'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
operation :post do
|
|
54
|
+
key :summary, 'Create Content'
|
|
55
|
+
key :description, 'Creates a new content.'
|
|
56
|
+
key :operationId, 'addContent'
|
|
57
|
+
key :produces, ['application/json']
|
|
58
|
+
|
|
59
|
+
parameter do
|
|
60
|
+
key :name, :body
|
|
61
|
+
key :in, :body
|
|
62
|
+
key :description, 'Content to add'
|
|
63
|
+
key :required, true
|
|
64
|
+
schema do
|
|
65
|
+
key :type, :object
|
|
66
|
+
property :content do
|
|
67
|
+
key :'$ref', 'Workarea::Content'
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
response 201 do
|
|
73
|
+
key :description, 'Content created'
|
|
74
|
+
schema do
|
|
75
|
+
key :type, :object
|
|
76
|
+
property :content do
|
|
77
|
+
key :'$ref', 'Workarea::Content'
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
response 422 do
|
|
83
|
+
key :description, 'Validation failure'
|
|
84
|
+
schema do
|
|
85
|
+
key :type, :object
|
|
86
|
+
property :problem do
|
|
87
|
+
key :type, :string
|
|
88
|
+
end
|
|
89
|
+
property :document do
|
|
90
|
+
key :'$ref', 'Workarea::Content'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def index
|
|
98
|
+
@content = Content
|
|
99
|
+
.all
|
|
100
|
+
.order_by(sort_field => sort_direction)
|
|
101
|
+
.page(params[:page])
|
|
102
|
+
|
|
103
|
+
respond_with content: @content
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def create
|
|
107
|
+
@content = Content.create!(params[:content])
|
|
108
|
+
respond_with(
|
|
109
|
+
{ content: @content },
|
|
110
|
+
{ status: :created,
|
|
111
|
+
location: content_path(@content) }
|
|
112
|
+
)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
swagger_path '/content/{id}' do
|
|
116
|
+
operation :get do
|
|
117
|
+
key :summary, 'Find Content by ID'
|
|
118
|
+
key :description, 'Returns one content'
|
|
119
|
+
key :operationId, 'showContent'
|
|
120
|
+
|
|
121
|
+
parameter do
|
|
122
|
+
key :name, :id
|
|
123
|
+
key :in, :path
|
|
124
|
+
key :description, 'ID of content to fetch'
|
|
125
|
+
key :required, true
|
|
126
|
+
key :type, :string
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
response 200 do
|
|
130
|
+
key :description, 'Content details'
|
|
131
|
+
schema do
|
|
132
|
+
key :type, :object
|
|
133
|
+
property :content do
|
|
134
|
+
key :'$ref', 'Workarea::Content'
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
response 404 do
|
|
140
|
+
key :description, 'Content not found'
|
|
141
|
+
schema do
|
|
142
|
+
key :type, :object
|
|
143
|
+
property :problem do
|
|
144
|
+
key :type, :string
|
|
145
|
+
end
|
|
146
|
+
property :params do
|
|
147
|
+
key :type, :object
|
|
148
|
+
key :additionalProperties, true
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
operation :patch do
|
|
155
|
+
key :summary, 'Update Content'
|
|
156
|
+
key :description, 'Updates attributes on content'
|
|
157
|
+
key :operationId, 'updateContent'
|
|
158
|
+
|
|
159
|
+
parameter do
|
|
160
|
+
key :name, :id
|
|
161
|
+
key :in, :path
|
|
162
|
+
key :description, 'ID of content to update'
|
|
163
|
+
key :required, true
|
|
164
|
+
key :type, :string
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
parameter do
|
|
168
|
+
key :name, :body
|
|
169
|
+
key :in, :body
|
|
170
|
+
key :description, 'New attributes'
|
|
171
|
+
key :required, true
|
|
172
|
+
schema do
|
|
173
|
+
key :type, :object
|
|
174
|
+
property :content do
|
|
175
|
+
key :'$ref', 'Workarea::Content'
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
response 204 do
|
|
181
|
+
key :description, 'Content updated successfully'
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
response 422 do
|
|
185
|
+
key :description, 'Validation failure'
|
|
186
|
+
schema do
|
|
187
|
+
key :type, :object
|
|
188
|
+
property :problem do
|
|
189
|
+
key :type, :string
|
|
190
|
+
end
|
|
191
|
+
property :document do
|
|
192
|
+
key :'$ref', 'Workarea::Content'
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
response 404 do
|
|
198
|
+
key :description, 'Content not found'
|
|
199
|
+
schema do
|
|
200
|
+
key :type, :object
|
|
201
|
+
property :problem do
|
|
202
|
+
key :type, :string
|
|
203
|
+
end
|
|
204
|
+
property :params do
|
|
205
|
+
key :type, :object
|
|
206
|
+
key :additionalProperties, true
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def show
|
|
214
|
+
respond_with content: @content
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def update
|
|
218
|
+
@content.update_attributes!(params[:content])
|
|
219
|
+
respond_with content: @content
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
swagger_path '/content/bulk' do
|
|
223
|
+
operation :patch do
|
|
224
|
+
key :summary, 'Bulk Upsert Content'
|
|
225
|
+
key :description, 'Creates new content or updates existing ones in bulk.'
|
|
226
|
+
key :operationId, 'upsertContent'
|
|
227
|
+
key :produces, ['application/json']
|
|
228
|
+
|
|
229
|
+
parameter do
|
|
230
|
+
key :name, :body
|
|
231
|
+
key :in, :body
|
|
232
|
+
key :description, 'Array of content to upsert'
|
|
233
|
+
key :required, true
|
|
234
|
+
schema do
|
|
235
|
+
key :type, :object
|
|
236
|
+
property :content do
|
|
237
|
+
key :type, :array
|
|
238
|
+
items do
|
|
239
|
+
key :'$ref', 'Workarea::Content'
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
response 204 do
|
|
246
|
+
key :description, 'Upsert received'
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def bulk
|
|
252
|
+
@bulk = Api::Admin::BulkUpsert.create!(
|
|
253
|
+
klass: Content,
|
|
254
|
+
data: params[:content].map(&:to_h)
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
head :no_content
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
private
|
|
261
|
+
|
|
262
|
+
def find_content
|
|
263
|
+
@content = Content.find(params[:id])
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
end
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class DiscountsController < Admin::ApplicationController
|
|
5
|
+
before_action :find_discount, except: [:index, :create, :bulk]
|
|
6
|
+
|
|
7
|
+
swagger_path '/discounts' do
|
|
8
|
+
operation :get do
|
|
9
|
+
key :summary, 'All Discounts'
|
|
10
|
+
key :description, 'Returns all discounts from the system'
|
|
11
|
+
key :operationId, 'listDiscounts'
|
|
12
|
+
key :produces, ['application/json']
|
|
13
|
+
|
|
14
|
+
parameter do
|
|
15
|
+
key :name, :page
|
|
16
|
+
key :in, :query
|
|
17
|
+
key :description, 'Current page'
|
|
18
|
+
key :required, false
|
|
19
|
+
key :type, :integer
|
|
20
|
+
key :default, 1
|
|
21
|
+
end
|
|
22
|
+
parameter do
|
|
23
|
+
key :name, :sort_by
|
|
24
|
+
key :in, :query
|
|
25
|
+
key :description, 'Field on which to sort (see responses for possible values)'
|
|
26
|
+
key :required, false
|
|
27
|
+
key :type, :string
|
|
28
|
+
key :default, 'created_at'
|
|
29
|
+
end
|
|
30
|
+
parameter do
|
|
31
|
+
key :name, :sort_direction
|
|
32
|
+
key :in, :query
|
|
33
|
+
key :description, 'Direction for sort by'
|
|
34
|
+
key :type, :string
|
|
35
|
+
key :enum, %w(asc desc)
|
|
36
|
+
key :default, 'desc'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
response 200 do
|
|
40
|
+
key :description, 'Discounts'
|
|
41
|
+
schema do
|
|
42
|
+
key :type, :object
|
|
43
|
+
property :discounts do
|
|
44
|
+
key :type, :array
|
|
45
|
+
items do
|
|
46
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
operation :post do
|
|
54
|
+
key :summary, 'Create Discount'
|
|
55
|
+
key :description, 'Creates a new discount.'
|
|
56
|
+
key :operationId, 'addDiscount'
|
|
57
|
+
key :produces, ['application/json']
|
|
58
|
+
|
|
59
|
+
parameter do
|
|
60
|
+
key :name, :body
|
|
61
|
+
key :in, :body
|
|
62
|
+
key :description, 'Discount to add'
|
|
63
|
+
key :required, true
|
|
64
|
+
schema do
|
|
65
|
+
key :type, :object
|
|
66
|
+
property :discount do
|
|
67
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
response 201 do
|
|
73
|
+
key :description, 'Discount created'
|
|
74
|
+
schema do
|
|
75
|
+
key :type, :object
|
|
76
|
+
property :discount do
|
|
77
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
response 422 do
|
|
83
|
+
key :description, 'Validation failure'
|
|
84
|
+
schema do
|
|
85
|
+
key :type, :object
|
|
86
|
+
property :problem do
|
|
87
|
+
key :type, :string
|
|
88
|
+
end
|
|
89
|
+
property :document do
|
|
90
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def index
|
|
98
|
+
@discounts = Pricing::Discount
|
|
99
|
+
.all
|
|
100
|
+
.order_by(sort_field => sort_direction)
|
|
101
|
+
.page(params[:page])
|
|
102
|
+
|
|
103
|
+
respond_with discounts: @discounts
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def create
|
|
107
|
+
attrs = params[:discount].presence || {}
|
|
108
|
+
|
|
109
|
+
@discount = NewDiscount.new_discount(attrs[:type], attrs.except(:type))
|
|
110
|
+
@discount.save!
|
|
111
|
+
|
|
112
|
+
respond_with(
|
|
113
|
+
{ discount: @discount },
|
|
114
|
+
{ status: :created,
|
|
115
|
+
location: discount_path(@discount) }
|
|
116
|
+
)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
swagger_path '/discounts/{id}' do
|
|
120
|
+
operation :get do
|
|
121
|
+
key :summary, 'Find Discount by ID'
|
|
122
|
+
key :description, 'Returns a single discount'
|
|
123
|
+
key :operationId, 'showDiscount'
|
|
124
|
+
|
|
125
|
+
parameter do
|
|
126
|
+
key :name, :id
|
|
127
|
+
key :in, :path
|
|
128
|
+
key :description, 'ID of discount to fetch'
|
|
129
|
+
key :required, true
|
|
130
|
+
key :type, :string
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
response 200 do
|
|
134
|
+
key :description, 'Discount details'
|
|
135
|
+
schema do
|
|
136
|
+
key :type, :object
|
|
137
|
+
property :discount do
|
|
138
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
response 404 do
|
|
144
|
+
key :description, 'Discount not found'
|
|
145
|
+
schema do
|
|
146
|
+
key :type, :object
|
|
147
|
+
property :problem do
|
|
148
|
+
key :type, :string
|
|
149
|
+
end
|
|
150
|
+
property :params do
|
|
151
|
+
key :type, :object
|
|
152
|
+
key :additionalProperties, true
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
operation :patch do
|
|
159
|
+
key :summary, 'Update a Discount'
|
|
160
|
+
key :description, 'Updates attributes on a discount'
|
|
161
|
+
key :operationId, 'updateDiscount'
|
|
162
|
+
|
|
163
|
+
parameter do
|
|
164
|
+
key :name, :id
|
|
165
|
+
key :in, :path
|
|
166
|
+
key :description, 'ID of discount to update'
|
|
167
|
+
key :required, true
|
|
168
|
+
key :type, :string
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
parameter do
|
|
172
|
+
key :name, :body
|
|
173
|
+
key :in, :body
|
|
174
|
+
key :description, 'New attributes'
|
|
175
|
+
key :required, true
|
|
176
|
+
schema do
|
|
177
|
+
key :type, :object
|
|
178
|
+
property :discount do
|
|
179
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
response 204 do
|
|
185
|
+
key :description, 'Discount updated successfully'
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
response 422 do
|
|
189
|
+
key :description, 'Validation failure'
|
|
190
|
+
schema do
|
|
191
|
+
key :type, :object
|
|
192
|
+
property :problem do
|
|
193
|
+
key :type, :string
|
|
194
|
+
end
|
|
195
|
+
property :document do
|
|
196
|
+
key :'$ref', 'Workarea::Pricing::Discount'
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
response 404 do
|
|
202
|
+
key :description, 'Discount not found'
|
|
203
|
+
schema do
|
|
204
|
+
key :type, :object
|
|
205
|
+
property :problem do
|
|
206
|
+
key :type, :string
|
|
207
|
+
end
|
|
208
|
+
property :params do
|
|
209
|
+
key :type, :object
|
|
210
|
+
key :additionalProperties, true
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
operation :delete do
|
|
217
|
+
key :summary, 'Remove a Discount'
|
|
218
|
+
key :description, 'Remove a discount'
|
|
219
|
+
key :operationId, 'removeDiscount'
|
|
220
|
+
|
|
221
|
+
parameter do
|
|
222
|
+
key :name, :id
|
|
223
|
+
key :in, :path
|
|
224
|
+
key :description, 'ID of discount to remove'
|
|
225
|
+
key :required, true
|
|
226
|
+
key :type, :string
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
response 204 do
|
|
230
|
+
key :description, 'Discount removed successfully'
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
response 404 do
|
|
234
|
+
key :description, 'Discount not found'
|
|
235
|
+
schema do
|
|
236
|
+
key :type, :object
|
|
237
|
+
property :problem do
|
|
238
|
+
key :type, :string
|
|
239
|
+
end
|
|
240
|
+
property :params do
|
|
241
|
+
key :type, :object
|
|
242
|
+
key :additionalProperties, true
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
def show
|
|
250
|
+
respond_with discount: @discount
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
def update
|
|
254
|
+
@discount.update_attributes!(params[:discount])
|
|
255
|
+
respond_with discount: @discount
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def destroy
|
|
259
|
+
@discount.destroy
|
|
260
|
+
head :no_content
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
private
|
|
264
|
+
|
|
265
|
+
def find_discount
|
|
266
|
+
@discount = Pricing::Discount.find(params[:id])
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
end
|