spree_suppliers 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. metadata +14 -182
  2. data/README.markdown +0 -84
  3. data/Rakefile +0 -137
  4. data/app/controllers/admin/pickup_locations_controller.rb +0 -52
  5. data/app/controllers/admin/pickups_controller.rb +0 -84
  6. data/app/controllers/admin/shipping_options_controller.rb +0 -32
  7. data/app/controllers/admin/supplier_taxons_controller.rb +0 -65
  8. data/app/controllers/admin/suppliers_controller.rb +0 -203
  9. data/app/controllers/admin/vendor_overview_controller.rb +0 -18
  10. data/app/controllers/dash/base_controller.rb +0 -10
  11. data/app/controllers/dash/overview_controller.rb +0 -6
  12. data/app/controllers/dash/pickup_locations_controller.rb +0 -27
  13. data/app/controllers/dash/pickups_controller.rb +0 -40
  14. data/app/controllers/dash/products_controller.rb +0 -15
  15. data/app/controllers/messages_controller.rb +0 -17
  16. data/app/controllers/suppliers_controller.rb +0 -19
  17. data/app/controllers/user_sessions_decorator.rb +0 -39
  18. data/app/helpers/admin/suppliers_helper.rb +0 -21
  19. data/app/helpers/cities_helper.rb +0 -2
  20. data/app/helpers/dragonfly_helper.rb +0 -16
  21. data/app/helpers/messages_helper.rb +0 -2
  22. data/app/helpers/suppliers_helper.rb +0 -16
  23. data/app/mailers/supplier_mailer.rb +0 -11
  24. data/app/models/ability_decorator.rb +0 -19
  25. data/app/models/delivery.rb +0 -6
  26. data/app/models/hour.rb +0 -4
  27. data/app/models/item.rb +0 -5
  28. data/app/models/message.rb +0 -3
  29. data/app/models/pickup.rb +0 -10
  30. data/app/models/pickup_date.rb +0 -3
  31. data/app/models/pickup_location.rb +0 -7
  32. data/app/models/supplier.rb +0 -33
  33. data/app/models/supplier_invoice.rb +0 -5
  34. data/app/views/admin/orders/index.html.erb +0 -107
  35. data/app/views/admin/orders/show.html.erb +0 -35
  36. data/app/views/admin/orders/user.html.erb +0 -19
  37. data/app/views/admin/pickup_locations/_pickup_location.html.erb +0 -10
  38. data/app/views/admin/pickup_locations/edit.html.erb +0 -44
  39. data/app/views/admin/pickup_locations/new.html.erb +0 -48
  40. data/app/views/admin/pickup_locations/show.html.erb +0 -1
  41. data/app/views/admin/pickups/_pickup.erb +0 -0
  42. data/app/views/admin/pickups/index.html.erb +0 -44
  43. data/app/views/admin/pickups/new.html.erb +0 -33
  44. data/app/views/admin/pickups/show.html.erb +0 -42
  45. data/app/views/admin/products/_suppliers_form.html.erb +0 -5
  46. data/app/views/admin/shared/_order_tabs_decide.html.erb +0 -5
  47. data/app/views/admin/shared/_vendor_order_tabs.html.erb +0 -39
  48. data/app/views/admin/shipping_options/edit.html.erb +0 -38
  49. data/app/views/admin/supplier_taxons/_form.html.erb +0 -23
  50. data/app/views/admin/supplier_taxons/_taxon_table.html.erb +0 -23
  51. data/app/views/admin/supplier_taxons/available.js.erb +0 -33
  52. data/app/views/admin/supplier_taxons/edit.html.erb +0 -11
  53. data/app/views/admin/supplier_taxons/remove.html.erb +0 -1
  54. data/app/views/admin/supplier_taxons/select.js.erb +0 -2
  55. data/app/views/admin/supplier_taxons/selected.html.erb +0 -51
  56. data/app/views/admin/suppliers/_edit_form.html.erb +0 -75
  57. data/app/views/admin/suppliers/_edit_hours_form.html.erb +0 -18
  58. data/app/views/admin/suppliers/_form.html.erb +0 -72
  59. data/app/views/admin/suppliers/_hours_form.html.erb +0 -11
  60. data/app/views/admin/suppliers/_image_form.html.erb +0 -40
  61. data/app/views/admin/suppliers/_supplier.html.erb +0 -37
  62. data/app/views/admin/suppliers/_supplier_tabs.html.erb +0 -18
  63. data/app/views/admin/suppliers/_suppliers_table.html.erb +0 -25
  64. data/app/views/admin/suppliers/_upload_image.html.erb +0 -14
  65. data/app/views/admin/suppliers/available.js.erb +0 -34
  66. data/app/views/admin/suppliers/edit.html.erb +0 -20
  67. data/app/views/admin/suppliers/index.html.erb +0 -102
  68. data/app/views/admin/suppliers/line_items.html.erb +0 -20
  69. data/app/views/admin/suppliers/new.html.erb +0 -22
  70. data/app/views/admin/suppliers/remove.html.erb +0 -1
  71. data/app/views/admin/suppliers/select.html.erb +0 -1
  72. data/app/views/admin/suppliers/selected.html.erb +0 -40
  73. data/app/views/admin/suppliers/show.html.erb +0 -2
  74. data/app/views/admin/users/_form.html.erb +0 -40
  75. data/app/views/admin/vendor_overview/index.html.erb +0 -1
  76. data/app/views/checkout/_delivery.html.erb +0 -5
  77. data/app/views/dash/overview/index.html.erb +0 -58
  78. data/app/views/dash/pickup_locations/_pickup_location.html.erb +0 -3
  79. data/app/views/dash/pickup_locations/new.html.erb +0 -47
  80. data/app/views/dash/pickups/_pickup.erb +0 -3
  81. data/app/views/dash/pickups/new.html.erb +0 -24
  82. data/app/views/dash/products/new.html.erb +0 -38
  83. data/app/views/layouts/admin.html.erb +0 -81
  84. data/app/views/messages/_message_form.html.erb +0 -17
  85. data/app/views/messages/create.html.erb +0 -2
  86. data/app/views/messages/destroy.html.erb +0 -2
  87. data/app/views/messages/new.html.erb +0 -2
  88. data/app/views/shared/_deliveries.html.erb +0 -113
  89. data/app/views/shared/_hours.html.erb +0 -21
  90. data/app/views/shared/_products_vendor.html.erb +0 -49
  91. data/app/views/shared/_supplier_invoices.html.erb +0 -67
  92. data/app/views/supplier_mailer/invoice_email.html.erb +0 -72
  93. data/app/views/suppliers/_supplier.html.erb +0 -7
  94. data/app/views/suppliers/_supplier_list.erb +0 -20
  95. data/app/views/suppliers/index.html.erb +0 -17
  96. data/app/views/suppliers/show.html.erb +0 -106
  97. data/app/views/suppliers/supplier_list.erb +0 -14
  98. data/config/initializers/dragonfly.rb +0 -8
  99. data/config/initializers/supplier_invoice_mailer.rb +0 -10
  100. data/config/locales/en-US.yml +0 -13
  101. data/config/routes.rb +0 -48
  102. data/db/migrate/20091209201716_supplier_setup.rb +0 -36
  103. data/db/migrate/20110922213437_create_messages.rb +0 -18
  104. data/db/migrate/20110928203155_create_hours.rb +0 -21
  105. data/db/migrate/20111006185052_create_pickups.rb +0 -17
  106. data/db/migrate/20111010191125_add_location_to_addresses.rb +0 -9
  107. data/db/migrate/20111010214313_create_pickup_dates.rb +0 -14
  108. data/db/migrate/20111011180211_add_supplier_id_to_user.rb +0 -9
  109. data/db/migrate/20111012211422_create_pickup_locations.rb +0 -21
  110. data/db/migrate/20111013155257_create_supplier_invoices.rb +0 -16
  111. data/db/migrate/20111013161225_create_items.rb +0 -18
  112. data/db/migrate/20111018133543_add_attributes_to_products.rb +0 -17
  113. data/db/migrate/20111028190454_add_attributes_to_assets.rb +0 -11
  114. data/db/migrate/20111029230805_create_suppliers_taxons.rb +0 -16
  115. data/db/migrate/20111101165933_create_deliveries.rb +0 -17
  116. data/db/migrate/20111108213108_create_shipping_methods_suppliers.rb +0 -16
  117. data/db/seeds.rb +0 -14
  118. data/lib/spree_suppliers.rb +0 -411
  119. data/lib/spree_suppliers_hooks.rb +0 -40
  120. data/lib/tasks/spree_suppliers.rake +0 -27
  121. data/public/javascripts/jquery-ui.js +0 -312
  122. data/public/javascripts/jquery-ui.multidatespicker.js +0 -398
  123. data/public/javascripts/jquery.ui.datepicker.js +0 -1791
  124. data/public/stylesheets/suppliers.css +0 -676
  125. data/spec/controllers/cities_controller_spec.rb +0 -157
  126. data/spec/controllers/shipping_options_controller_spec.rb +0 -12
  127. data/spec/helpers/cities_helper_spec.rb +0 -15
  128. data/spec/models/city_spec.rb +0 -5
  129. data/spec/models/comment_spec.rb +0 -64
  130. data/spec/models/item_spec.rb +0 -5
  131. data/spec/models/message_spec.rb +0 -5
  132. data/spec/models/pickup_date_spec.rb +0 -5
  133. data/spec/models/pickup_location_spec.rb +0 -5
  134. data/spec/models/pickup_spec.rb +0 -5
  135. data/spec/models/rating_spec.rb +0 -24
  136. data/spec/models/supplier_invoice_spec.rb +0 -5
  137. data/spec/models/supplier_spec.rb +0 -11
  138. data/spec/requests/cities_spec.rb +0 -11
  139. data/spec/routing/cities_routing_spec.rb +0 -35
  140. data/spec/spec.opts +0 -6
  141. data/spec/spec_helper.rb +0 -37
  142. data/spec/views/cities/edit.html.erb_spec.rb +0 -22
  143. data/spec/views/cities/index.html.erb_spec.rb +0 -28
  144. data/spec/views/cities/new.html.erb_spec.rb +0 -22
  145. data/spec/views/cities/show.html.erb_spec.rb +0 -21
  146. data/spec/views/shipping_options/edit.html.erb_spec.rb +0 -5
  147. data/spree_suppliers-0.60.3.gem +0 -0
  148. data/spree_suppliers.gemspec +0 -24
@@ -1,52 +0,0 @@
1
- class Admin::PickupLocationsController < Admin::BaseController
2
-
3
- def new
4
- @pickup_location = PickupLocation.new()
5
- end
6
-
7
- def show
8
- @location = PickupLocation.find(params[:id])
9
- end
10
-
11
- def create
12
- @pickup_location = PickupLocation.create(params[:pickup_location])
13
- # @pickup_location = current_user.supplier.pickup_locations.build(params[:pickup_location])
14
- if @pickup_location.save
15
- @pickup_location.hours.create(business_hours)
16
- redirect_to admin_pickups_path, :notice => "New location added"
17
- else
18
- render "new", :notice => "Failed to create location"
19
- end
20
- end
21
-
22
-
23
- def edit
24
- @pickup_location = PickupLocation.find(params[:id])
25
- @locations = [PickupLocation.first]
26
- end
27
-
28
- def update
29
- @pickup_location = PickupLocation.find(params[:id])
30
- if @pickup_location.update_attributes(params[:pickup_location])
31
- if @pickup_location.hours.first.update_attributes(business_hours)
32
- redirect_to edit_admin_pickup_location_path, :notice => "Pickup Location and Hours updated"
33
- else
34
- redirect_to edit_admin_pickup_location_path, :notice => "Pickup Location updated"
35
- end
36
- else
37
- render "edit"
38
- end
39
- end
40
-
41
- def business_hours
42
- days = {}
43
- ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"].each do |day|
44
- days.merge!({day.downcase.to_sym => params["#{day}_begin"] + ":" + params["#{day}_begin_mins"] + " " + params["#{day}_begin_type"].upcase + " to " + params["#{day}_end"] + ":" + params["#{day}_end_mins"] + " " + params["#{day}_end_type"].upcase} )
45
- if params["#{day}_closed"] == "Closed"
46
- days.merge!({day.downcase.to_sym => "Closed"})
47
- end
48
- end
49
- days
50
- end
51
-
52
- end
@@ -1,84 +0,0 @@
1
- class Admin::PickupsController < Admin::BaseController
2
-
3
- def index
4
- if current_user.has_role?("vendor")
5
- @suppliers = [current_user.supplier]
6
- else
7
- @suppliers = Supplier.all.select{|r| !r.pickups.empty?}
8
- end
9
- end
10
-
11
- def show
12
- @supplier = Supplier.find(params[:id])
13
- end
14
-
15
- def new
16
- if current_user.has_role?("vendor")
17
- @pickups = current_user.supplier.pickups
18
- @locations = (current_user.supplier.pickup_locations + PickupLocation.locate).uniq
19
- else
20
- @pickups = Pickup.all
21
- @locations = PickupLocation.all
22
- end
23
- @pickup_location = PickupLocation.new()
24
- @pickup = Pickup.new
25
- @suppliers = Supplier.all
26
- end
27
-
28
- def create
29
- pickup_location_id = params[:pickup_location_id]
30
- supplier_id = params[:supplier_id]
31
- @pickup = Pickup.create(:supplier_id => supplier_id, :pickup_location_id => pickup_location_id, :name => PickupLocation.find_by_id(pickup_location_id).location_name)
32
- pickup_dates = create_dates(params[:dates])
33
- if pickup_dates != false
34
- @pickup.pickup_dates = pickup_dates
35
- else
36
- flash[:error] = "Errors in creating dates"
37
- redirect_to admin_pickups_path and return
38
- end
39
- if @pickup.save
40
- redirect_to admin_pickups_path, :message => "Successful creation"
41
- else
42
- redirect_to admin_pickups_path, :error => "Errors in creating dates"
43
- end
44
- end
45
-
46
- def edit
47
- @pickups = Pickup.all
48
- @locations = [PickupLocation.first]
49
- end
50
-
51
- def update
52
- @pickup = Pickup.find(params[:id])
53
- if @pickup.update_attributes(params[:pickup])
54
- redirect_to edit_admin_pickup_path, :notice => "Pickup updated"
55
- else
56
- render "edit"
57
- end
58
- end
59
-
60
- def destroy
61
- @pickup = Pickup.find(params[:id])
62
- @pickup.destroy
63
- flash[:notice] = "Pickup Successfully deleted."
64
- redirect_to admin_pickups_url
65
- end
66
-
67
- def create_dates dates
68
- dates = dates[0].split(',')
69
- new_dates = []
70
- dates.each do |d|
71
- begin
72
- new_dates.push(Date.strptime(d, "%m/%d/%Y"))
73
- rescue
74
- return false
75
- end
76
- end
77
- pickups = []
78
- new_dates.each do |day|
79
- pickups.push(PickupDate.new({:day => day}))
80
- end
81
- pickups
82
- end
83
-
84
- end
@@ -1,32 +0,0 @@
1
- class Admin::ShippingOptionsController < Admin::BaseController
2
-
3
- def edit
4
- @shipping_methods = ShippingMethod.all
5
- @supplier = Supplier.find(params[:id])
6
- end
7
-
8
- def create
9
- @supplier = Supplier.find(params[:supplier_id])
10
- if !params[:shipping_options].nil?
11
- method = ShippingMethod.find_by_id(params[:shipping_options])
12
- @update = true
13
- @supplier.shipping_methods.each do |t|
14
- if t.id == method.id
15
- @update = false
16
- end
17
- end
18
- if @update == true
19
- @supplier.shipping_methods << method
20
- flash[:notice] = "New shipping method added successfully."
21
- else
22
- flash[:error] = "You already offer this shipping method, nothing added."
23
- end
24
- elsif !params[:remove].nil?
25
- method = ShippingMethod.find_by_id(params[:remove][:id])
26
- @supplier.shipping_methods.delete(method)
27
- flash[:notice] = "Shipping method removed successfully"
28
- end
29
- redirect_to :back
30
- end
31
-
32
- end
@@ -1,65 +0,0 @@
1
- class Admin::SupplierTaxonsController < Admin::BaseController
2
- include Railslove::Plugins::FindByParam::SingletonMethods
3
- helper "admin/taxons"
4
-
5
- respond_to :html, :json, :js
6
-
7
- def selected
8
- @supplier = load_supplier
9
- @taxons = @supplier.taxons
10
- @options = Taxon.all
11
- respond_with(:admin, @taxons)
12
- end
13
-
14
- def available
15
- @supplier = load_supplier
16
- @taxons = params[:q].blank? ? [] : Taxon.where('lower(name) LIKE ?', "%#{params[:q].mb_chars.downcase}%")
17
- @taxons.delete_if { |taxon| @supplier.taxons.include?(taxon) }
18
-
19
- respond_with(:admin, @taxons)
20
- end
21
-
22
- def remove
23
- @supplier = load_supplier
24
- @taxon = Taxon.find(params[:id])
25
- @supplier.taxons.delete(@taxon)
26
- @supplier.save
27
- @taxons = @supplier.taxons
28
-
29
- respond_with(@taxon) { |format| format.js { render_js_for_destroy } }
30
- end
31
-
32
- def select
33
- @supplier = load_supplier
34
- @taxon = Taxon.find(params[:id])
35
- @supplier.taxons << @taxon
36
- @supplier.save
37
- @taxons = @supplier.taxons
38
-
39
- respond_with(:admin, @taxons)
40
- end
41
-
42
- def batch_select
43
- @supplier = load_supplier
44
- @taxons = params[:taxon_ids].map{|id| Taxon.find(id)}.compact
45
- @supplier.taxons = @taxons
46
- @supplier.save
47
- redirect_to selected_admin_supplier_taxons_url(@supplier)
48
- end
49
-
50
- def update_taxons
51
- @supplier = Supplier.find params[:supplier_id]
52
- @supplier.taxons = []
53
- Taxon.all.map {|m| @supplier.taxons.push(Taxon.find_by_id(params[m.name])) if params.member?(m.name) }
54
- @supplier.taxons.push(Taxon.find_by_name("vendors"))
55
- @supplier.save
56
- redirect_to(:back)
57
- end
58
-
59
- private
60
-
61
- def load_supplier
62
- Supplier.find params[:supplier_id]
63
- end
64
-
65
- end
@@ -1,203 +0,0 @@
1
- class Admin::SuppliersController < Admin::BaseController
2
- resource_controller
3
- helper :dragonfly
4
- before_filter :load_edit, :only => [:edit]
5
- before_filter :load_data, :only => [:selected, :available, :remove, :new, :edit, :select]
6
- respond_to :html, :js
7
-
8
- def index
9
- if current_user.has_role?("admin")
10
- @suppliers = Supplier.all
11
- else
12
- @supplier = current_user.supplier
13
- end
14
- end
15
-
16
- def new
17
- @supplier = Supplier.new()
18
- @status = true
19
- end
20
-
21
- def business_hours
22
- days = {}
23
- ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"].each do |day|
24
- if params["#{day}_closed"] == "Closed"
25
- days.merge!({day.downcase.to_sym => "Closed"})
26
- elsif params["#{day}_closed"] == "Unavailable"
27
- days.merge!({day.downcase.to_sym => "Information Unavailable"})
28
- else
29
- days.merge!({day.downcase.to_sym => params["#{day}_begin"] + ":" + params["#{day}_begin_mins"] + " " + params["#{day}_begin_type"].upcase + " to " + params["#{day}_end"] + ":" + params["#{day}_end_mins"] + " " + params["#{day}_end_type"].upcase} )
30
- end
31
- end
32
- days
33
- end
34
-
35
- def create
36
- @supplier = Supplier.new(params[:supplier])
37
- if @supplier.save
38
- @supplier.hours.create(business_hours)
39
- redirect_to admin_suppliers_path, :notice => "New supplier created"
40
- else
41
- render "new"
42
- end
43
- end
44
-
45
- def show
46
- @supplier = Supplier.find(params[:id])
47
- end
48
-
49
- def destroy
50
- @supplier = Supplier.find(params[:id])
51
- @supplier.destroy
52
- flash[:notice] = "Supplier Successfully deleted."
53
- respond_with(@product) do |format|
54
- format.html { redirect_to collection_url }
55
- format.js do
56
- render :update do |page|
57
- page.redirect_to collection_url
58
- end
59
- end
60
- end
61
- end
62
-
63
- def update
64
- @supplier = Supplier.find(params[:id])
65
- @status = false
66
- if @supplier.update_attributes(params[:supplier])
67
- @supplier.hours.first.update_attributes(business_hours)
68
- redirect_to edit_admin_supplier_path, :notice => "Supplier updated"
69
- else
70
- render "edit"
71
- end
72
- end
73
-
74
-
75
-
76
- def upload_image
77
- @supplier = Supplier.find(params[:image][:viewable_id])
78
- @supplier.images.create(params[:image])
79
- if @supplier.save
80
- redirect_to edit_admin_supplier_path(@supplier), :notice => "New supplier image uploaded successfully"
81
- else
82
- render "new"
83
- end
84
- end
85
-
86
- def feature
87
- @supplier = Supplier.find(params[:supplier_id])
88
- if @supplier.featured == true
89
- @supplier.featured = false
90
- else
91
- @supplier.featured = true
92
- end
93
- @supplier.save
94
- flash[:notice] = "Change #{@supplier.title}'s feature status to #{@supplier.featured}"
95
- redirect_to admin_suppliers_path
96
- end
97
-
98
- def make_logo
99
- @image = Image.find(params[:id])
100
- @supplier = Supplier.find(@image.viewable_id)
101
- @supplier.images.each do |image|
102
- image.logo = false
103
- image.save
104
- end
105
- @image.logo = true
106
- @image.save
107
- redirect_to :back, :notice => "Change which image is considered a logo."
108
- end
109
-
110
- def feature_image
111
- @image = Image.find(params[:id])
112
- @supplier = Supplier.find(@image.viewable_id)
113
- @supplier.images.each do |image|
114
- image.featured = false
115
- image.save
116
- end
117
- @image.featured = true
118
- @image.save
119
- redirect_to :back, :notice => "Change which image is featured."
120
- end
121
-
122
-
123
- def destroy_image
124
- @image = Image.find(params[:id])
125
-
126
- if @image.destroy
127
- redirect_to :back, :notice => "Image destroyed."
128
- else
129
- render "new"
130
- end
131
- end
132
-
133
- def line_items
134
- @order = Order.find_by_number(params[:order_id])
135
- end
136
-
137
- def selected
138
- @supplier = @product.supplier
139
- end
140
-
141
- def available
142
- if params[:q].blank?
143
- @available_suppliers = []
144
- else
145
- @available_suppliers = Supplier.find(:all, :conditions => ['lower(name) LIKE ?', "%#{params[:q].downcase}%"])
146
- end
147
- @available_suppliers.delete_if { |supplier| @product.supplier == supplier }
148
- respond_to do |format|
149
- format.html
150
- format.js {render :layout => false}
151
- end
152
-
153
- end
154
-
155
- def remove
156
- @product.supplier = nil
157
- @product.save
158
- @supplier = @product.supplier
159
- render :layout => false
160
- end
161
-
162
- def select
163
- @supplier = Supplier.find_by_param!(params[:id])
164
- @product.supplier = @supplier
165
- @product.save
166
- @supplier = @product.supplier
167
- render :layout => false
168
- end
169
-
170
-
171
- update.response do |wants|
172
- wants.html { redirect_to collection_url }
173
- end
174
-
175
- update.after do
176
- Rails.cache.delete('suppliers')
177
- end
178
-
179
- create.response do |wants|
180
- wants.html { redirect_to collection_url }
181
- end
182
-
183
- create.after do
184
- Rails.cache.delete('suppliers')
185
- end
186
-
187
- private
188
-
189
- def load_data
190
- if !Country.first.nil?
191
- default_country = Country.find_by_name("United States")
192
- @states = default_country.states.sort
193
- end
194
- @product = Product.find_by_permalink(params[:product_id])
195
- end
196
-
197
- def load_edit
198
- @closed = ["Unavailable", "Closed", "Open"]
199
- @hours = (1..12).to_a
200
- @minutes = ["00", "15", "30", "45"]
201
- @periods = ["AM","PM"]
202
- end
203
- end
@@ -1,18 +0,0 @@
1
- class Admin::VendorOverviewController < Spree::BaseController
2
- ssl_required
3
-
4
- helper :search
5
- helper 'admin/navigation'
6
- layout 'admin'
7
-
8
- before_filter :vendor
9
-
10
- def vendor
11
- if !current_user.has_role?("vendor")
12
- unauthorized
13
- end
14
- end
15
- def index
16
-
17
- end
18
- end