shoppy 0.9.0

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.
Files changed (352) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +34 -0
  5. data/app/.DS_Store +0 -0
  6. data/app/api/apihelpers/api_auth.rb +50 -0
  7. data/app/api/base.rb +7 -0
  8. data/app/api/v1/auth.rb +57 -0
  9. data/app/api/v1/test.rb +15 -0
  10. data/app/api/v1/users.rb +50 -0
  11. data/app/api/v1/v1_api.rb +15 -0
  12. data/app/api/vo/user_vo.rb +7 -0
  13. data/app/assets/fonts/.DS_Store +0 -0
  14. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  15. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  16. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  17. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  18. data/app/assets/images/.DS_Store +0 -0
  19. data/app/assets/images/Sorting icons.psd +0 -0
  20. data/app/assets/images/back_disabled.png +0 -0
  21. data/app/assets/images/back_enabled.png +0 -0
  22. data/app/assets/images/back_enabled_hover.png +0 -0
  23. data/app/assets/images/favicon.ico +0 -0
  24. data/app/assets/images/forward_disabled.png +0 -0
  25. data/app/assets/images/forward_enabled.png +0 -0
  26. data/app/assets/images/forward_enabled_hover.png +0 -0
  27. data/app/assets/images/shoppy.svg +34 -0
  28. data/app/assets/images/sort_asc.png +0 -0
  29. data/app/assets/images/sort_asc_disabled.png +0 -0
  30. data/app/assets/images/sort_both.png +0 -0
  31. data/app/assets/images/sort_desc.png +0 -0
  32. data/app/assets/images/sort_desc_disabled.png +0 -0
  33. data/app/assets/images/spritemap.png +0 -0
  34. data/app/assets/images/spritemap@2x.png +0 -0
  35. data/app/assets/javascripts/.DS_Store +0 -0
  36. data/app/assets/javascripts/bootstrap.js +2114 -0
  37. data/app/assets/javascripts/bootstrap.min.js +6 -0
  38. data/app/assets/javascripts/jasny-bootstrap.min.js +6 -0
  39. data/app/assets/javascripts/jquery.dataTables.min.js +155 -0
  40. data/app/assets/javascripts/main.js +29 -0
  41. data/app/assets/javascripts/shoppy.js +31 -0
  42. data/app/assets/stylesheets/.DS_Store +0 -0
  43. data/app/assets/stylesheets/bootstrap.css +6203 -0
  44. data/app/assets/stylesheets/jasny-bootstrap.css +621 -0
  45. data/app/assets/stylesheets/jquery.dataTables.min.css +1 -0
  46. data/app/assets/stylesheets/jquery.dataTables_themeroller.css +330 -0
  47. data/app/assets/stylesheets/shoppy.css +23 -0
  48. data/app/assets/stylesheets/style.sass +79 -0
  49. data/app/controllers/.DS_Store +0 -0
  50. data/app/controllers/shoppy/accounts_controller.rb +102 -0
  51. data/app/controllers/shoppy/application_controller.rb +23 -0
  52. data/app/controllers/shoppy/brands_controller.rb +60 -0
  53. data/app/controllers/shoppy/cart_controller.rb +46 -0
  54. data/app/controllers/shoppy/categories_controller.rb +72 -0
  55. data/app/controllers/shoppy/concerns/.keep +0 -0
  56. data/app/controllers/shoppy/customer_addresses_controller.rb +90 -0
  57. data/app/controllers/shoppy/home_controller.rb +9 -0
  58. data/app/controllers/shoppy/inventories_controller.rb +62 -0
  59. data/app/controllers/shoppy/locations_controller.rb +80 -0
  60. data/app/controllers/shoppy/logs_controller.rb +9 -0
  61. data/app/controllers/shoppy/manufacturers_controller.rb +77 -0
  62. data/app/controllers/shoppy/options_controller.rb +63 -0
  63. data/app/controllers/shoppy/orders_controller.rb +130 -0
  64. data/app/controllers/shoppy/products_controller.rb +98 -0
  65. data/app/controllers/shoppy/reviews_controller.rb +70 -0
  66. data/app/controllers/shoppy/sessions_controller.rb +5 -0
  67. data/app/controllers/shoppy/settings_controller.rb +26 -0
  68. data/app/controllers/shoppy/shipments_controller.rb +125 -0
  69. data/app/controllers/shoppy/variants_controller.rb +104 -0
  70. data/app/helpers/shoppy/accounts_helper.rb +5 -0
  71. data/app/helpers/shoppy/application_helper.rb +19 -0
  72. data/app/helpers/shoppy/brands_helper.rb +4 -0
  73. data/app/helpers/shoppy/cart_helper.rb +66 -0
  74. data/app/helpers/shoppy/categories_helper.rb +4 -0
  75. data/app/helpers/shoppy/customer_addresses_helper.rb +4 -0
  76. data/app/helpers/shoppy/home_helper.rb +5 -0
  77. data/app/helpers/shoppy/inventories_helper.rb +53 -0
  78. data/app/helpers/shoppy/locations_helper.rb +4 -0
  79. data/app/helpers/shoppy/logs_helper.rb +4 -0
  80. data/app/helpers/shoppy/manufacturers_helper.rb +4 -0
  81. data/app/helpers/shoppy/options_helper.rb +43 -0
  82. data/app/helpers/shoppy/orders_helper.rb +61 -0
  83. data/app/helpers/shoppy/products_helper.rb +65 -0
  84. data/app/helpers/shoppy/reviews_helper.rb +4 -0
  85. data/app/helpers/shoppy/settings_helper.rb +5 -0
  86. data/app/helpers/shoppy/shipments_helper.rb +43 -0
  87. data/app/helpers/shoppy/variants_helper.rb +4 -0
  88. data/app/models/shoppy/.DS_Store +0 -0
  89. data/app/models/shoppy/admin.rb +5 -0
  90. data/app/models/shoppy/brand.rb +23 -0
  91. data/app/models/shoppy/cart_item.rb +13 -0
  92. data/app/models/shoppy/category.rb +50 -0
  93. data/app/models/shoppy/concerns/.DS_Store +0 -0
  94. data/app/models/shoppy/concerns/models/api_token_authenticatable.rb +36 -0
  95. data/app/models/shoppy/concerns/models/hashable.rb +60 -0
  96. data/app/models/shoppy/concerns/models/optionable.rb +60 -0
  97. data/app/models/shoppy/concerns/models/promotional.rb +36 -0
  98. data/app/models/shoppy/concerns/models/taggable.rb +44 -0
  99. data/app/models/shoppy/customer.rb +10 -0
  100. data/app/models/shoppy/customer_address.rb +44 -0
  101. data/app/models/shoppy/inventory.rb +18 -0
  102. data/app/models/shoppy/log.rb +8 -0
  103. data/app/models/shoppy/manufacturer.rb +35 -0
  104. data/app/models/shoppy/options_group.rb +57 -0
  105. data/app/models/shoppy/options_item.rb +18 -0
  106. data/app/models/shoppy/order.rb +15 -0
  107. data/app/models/shoppy/order_line.rb +16 -0
  108. data/app/models/shoppy/payment_method.rb +19 -0
  109. data/app/models/shoppy/product.rb +43 -0
  110. data/app/models/shoppy/review.rb +12 -0
  111. data/app/models/shoppy/setting.rb +11 -0
  112. data/app/models/shoppy/shipment.rb +11 -0
  113. data/app/models/shoppy/stock_location.rb +47 -0
  114. data/app/models/shoppy/user.rb +37 -0
  115. data/app/models/shoppy/variant.rb +48 -0
  116. data/app/views/.DS_Store +0 -0
  117. data/app/views/accounts/admins.html.erb +104 -0
  118. data/app/views/accounts/customers.html.erb +106 -0
  119. data/app/views/accounts/show.html.erb +50 -0
  120. data/app/views/brands/index.html.erb +85 -0
  121. data/app/views/brands/show.html.erb +31 -0
  122. data/app/views/cart/index.html.erb +52 -0
  123. data/app/views/categories/index.html.erb +84 -0
  124. data/app/views/categories/show.html.erb +29 -0
  125. data/app/views/customer_addresses/index.html.erb +112 -0
  126. data/app/views/customer_addresses/show.html.erb +50 -0
  127. data/app/views/devise/confirmations/new.html.erb +12 -0
  128. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  129. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  130. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  131. data/app/views/devise/passwords/edit.html.erb +16 -0
  132. data/app/views/devise/passwords/new.html.erb +12 -0
  133. data/app/views/devise/registrations/edit.html.erb +29 -0
  134. data/app/views/devise/registrations/new.html.erb +23 -0
  135. data/app/views/devise/sessions/new.html.erb +33 -0
  136. data/app/views/devise/shared/_links.erb +25 -0
  137. data/app/views/devise/unlocks/new.html.erb +12 -0
  138. data/app/views/home/index.html.erb +4 -0
  139. data/app/views/inventories/.DS_Store +0 -0
  140. data/app/views/inventories/index.html.erb +119 -0
  141. data/app/views/layouts/.DS_Store +0 -0
  142. data/app/views/layouts/shoppy.html.erb +27 -0
  143. data/app/views/locations/index.html.erb +120 -0
  144. data/app/views/locations/show.html.erb +58 -0
  145. data/app/views/logs/index.html.erb +49 -0
  146. data/app/views/manufacturers/index.html.erb +119 -0
  147. data/app/views/manufacturers/show.html.erb +62 -0
  148. data/app/views/options/index.html.erb +90 -0
  149. data/app/views/options/show.html.erb +32 -0
  150. data/app/views/orders/index.html.erb +174 -0
  151. data/app/views/orders/show.html.erb +74 -0
  152. data/app/views/products/index.html.erb +102 -0
  153. data/app/views/products/show.html.erb +112 -0
  154. data/app/views/reviews/index.html.erb +58 -0
  155. data/app/views/reviews/show.html.erb +46 -0
  156. data/app/views/settings/show.html.erb +50 -0
  157. data/app/views/shared/_custom_file_input.html.erb +12 -0
  158. data/app/views/shared/_flashes.html.erb +21 -0
  159. data/app/views/shared/_navigation.html.erb +66 -0
  160. data/app/views/shipments/index.html.erb +97 -0
  161. data/app/views/shipments/show.html.erb +84 -0
  162. data/app/views/variants/index.html.erb +119 -0
  163. data/app/views/variants/show.html.erb +114 -0
  164. data/bin/shoppy +183 -0
  165. data/config/routes.rb +124 -0
  166. data/db/.DS_Store +0 -0
  167. data/db/migrate/001__setup_hstore.rb +9 -0
  168. data/db/migrate/002__create_logs.rb +11 -0
  169. data/db/migrate/003__devise_create_users.rb +49 -0
  170. data/db/migrate/004__add_personal_info_to_user.rb +8 -0
  171. data/db/migrate/005__create_user_addresses.rb +16 -0
  172. data/db/migrate/006__create_categories.rb +11 -0
  173. data/db/migrate/007__create_brands.rb +10 -0
  174. data/db/migrate/008__create_manufacturers.rb +19 -0
  175. data/db/migrate/009__create_options_groups.rb +10 -0
  176. data/db/migrate/010__create_options_items.rb +10 -0
  177. data/db/migrate/011__create_products.rb +14 -0
  178. data/db/migrate/012__create_product_options_joint_table.rb +9 -0
  179. data/db/migrate/013__create_stock_locations.rb +18 -0
  180. data/db/migrate/014__create_variants.rb +12 -0
  181. data/db/migrate/015__add_promotional_to_variant.rb +8 -0
  182. data/db/migrate/016__create_inventories.rb +12 -0
  183. data/db/migrate/017__create_payment_methods.rb +9 -0
  184. data/db/migrate/018__create_cart_items.rb +12 -0
  185. data/db/migrate/019__create_orders.rb +11 -0
  186. data/db/migrate/020__create_order_lines.rb +14 -0
  187. data/db/migrate/021__add_type_to_user.rb +5 -0
  188. data/db/migrate/022__rename_user_address_to_customer_address.rb +5 -0
  189. data/db/migrate/023__create_shipments.rb +12 -0
  190. data/db/migrate/024__add_shipment_id_to_order_line.rb +5 -0
  191. data/db/migrate/025__change_user_gender_to_not_nullable.rb +5 -0
  192. data/db/migrate/026__add_category_id_to_product.rb +5 -0
  193. data/db/migrate/027__add_attachment_brand_image_to_brands.rb +11 -0
  194. data/db/migrate/028__add_delivery_date_to_shipment.rb +5 -0
  195. data/db/migrate/029__add_customer_info_to_order.rb +13 -0
  196. data/db/migrate/030__add_status_to_order.rb +5 -0
  197. data/db/migrate/031__add_default_address_to_user.rb +5 -0
  198. data/db/migrate/032__add_options_to_variant.rb +5 -0
  199. data/db/migrate/033__add_display_to_options_groups.rb +5 -0
  200. data/db/migrate/034__add_points_to_variant.rb +5 -0
  201. data/db/migrate/035__add_points_to_user.rb +5 -0
  202. data/db/migrate/036__define_ids.rb +25 -0
  203. data/db/migrate/037__create_seed_users.rb +13 -0
  204. data/db/migrate/038__add_name_to_customer_address.rb +5 -0
  205. data/db/migrate/039__create_reviews.rb +14 -0
  206. data/db/migrate/040__alter_table_customer_address.rb +5 -0
  207. data/db/migrate/041__create_settings.rb +23 -0
  208. data/lib/.DS_Store +0 -0
  209. data/lib/shoppy.rb +13 -0
  210. data/lib/shoppy/client.rb +53 -0
  211. data/lib/shoppy/engine.rb +4 -0
  212. data/lib/shoppy/version.rb +3 -0
  213. data/lib/tasks/shoppy_tasks.rake +4 -0
  214. data/lib/template/.gitignore +20 -0
  215. data/lib/template/Gemfile +46 -0
  216. data/lib/template/Gemfile.lock +218 -0
  217. data/lib/template/Rakefile +6 -0
  218. data/lib/template/app/assets/images/.keep +0 -0
  219. data/lib/template/app/assets/javascripts/application.js +13 -0
  220. data/lib/template/app/assets/stylesheets/application.css +15 -0
  221. data/lib/template/app/controllers/accounts_controller.rb +3 -0
  222. data/lib/template/app/controllers/application_controller.rb +3 -0
  223. data/lib/template/app/controllers/brands_controller.rb +3 -0
  224. data/lib/template/app/controllers/cart_controller.rb +3 -0
  225. data/lib/template/app/controllers/categories_controller.rb +3 -0
  226. data/lib/template/app/controllers/concerns/.keep +0 -0
  227. data/lib/template/app/controllers/customer_addresses_controller.rb +3 -0
  228. data/lib/template/app/controllers/home_controller.rb +3 -0
  229. data/lib/template/app/controllers/inventories_controller.rb +3 -0
  230. data/lib/template/app/controllers/locations_controller.rb +3 -0
  231. data/lib/template/app/controllers/logs_controller.rb +3 -0
  232. data/lib/template/app/controllers/manufacturers_controller.rb +3 -0
  233. data/lib/template/app/controllers/options_controller.rb +3 -0
  234. data/lib/template/app/controllers/orders_controller.rb +3 -0
  235. data/lib/template/app/controllers/products_controller.rb +3 -0
  236. data/lib/template/app/controllers/reviews_controller.rb +3 -0
  237. data/lib/template/app/controllers/sessions_controller.rb +3 -0
  238. data/lib/template/app/controllers/settings_controller.rb +3 -0
  239. data/lib/template/app/controllers/shipments_controller.rb +3 -0
  240. data/lib/template/app/controllers/variants_controller.rb +3 -0
  241. data/lib/template/app/helpers/.keep +0 -0
  242. data/lib/template/app/helpers/orders_helper.rb +4 -0
  243. data/lib/template/app/mailers/.keep +0 -0
  244. data/lib/template/app/models/.keep +0 -0
  245. data/lib/template/app/models/account.rb +4 -0
  246. data/lib/template/app/models/admin.rb +4 -0
  247. data/lib/template/app/models/brand.rb +3 -0
  248. data/lib/template/app/models/cart_item.rb +3 -0
  249. data/lib/template/app/models/category.rb +3 -0
  250. data/lib/template/app/models/concerns/.keep +0 -0
  251. data/lib/template/app/models/concerns/hashable.rb +4 -0
  252. data/lib/template/app/models/customer.rb +4 -0
  253. data/lib/template/app/models/customer_address.rb +3 -0
  254. data/lib/template/app/models/inventory.rb +3 -0
  255. data/lib/template/app/models/log.rb +3 -0
  256. data/lib/template/app/models/manufacturer.rb +3 -0
  257. data/lib/template/app/models/option_item.rb +3 -0
  258. data/lib/template/app/models/options_group.rb +3 -0
  259. data/lib/template/app/models/order.rb +3 -0
  260. data/lib/template/app/models/order_line.rb +3 -0
  261. data/lib/template/app/models/payment_method.rb +3 -0
  262. data/lib/template/app/models/product.rb +3 -0
  263. data/lib/template/app/models/review.rb +3 -0
  264. data/lib/template/app/models/setting.rb +3 -0
  265. data/lib/template/app/models/shipment.rb +3 -0
  266. data/lib/template/app/models/stock_location.rb +3 -0
  267. data/lib/template/app/models/variant.rb +3 -0
  268. data/lib/template/app/views/layouts/.keep +0 -0
  269. data/lib/template/bin/bundle +3 -0
  270. data/lib/template/bin/rails +8 -0
  271. data/lib/template/bin/rake +8 -0
  272. data/lib/template/bin/spring +18 -0
  273. data/lib/template/config.ru +4 -0
  274. data/lib/template/config/application.rb +23 -0
  275. data/lib/template/config/boot.rb +4 -0
  276. data/lib/template/config/database.yml +86 -0
  277. data/lib/template/config/environment.rb +5 -0
  278. data/lib/template/config/environments/development.rb +37 -0
  279. data/lib/template/config/environments/production.rb +78 -0
  280. data/lib/template/config/environments/test.rb +39 -0
  281. data/lib/template/config/initializers/assets.rb +8 -0
  282. data/lib/template/config/initializers/backtrace_silencers.rb +7 -0
  283. data/lib/template/config/initializers/cookies_serializer.rb +3 -0
  284. data/lib/template/config/initializers/devise.rb +256 -0
  285. data/lib/template/config/initializers/filter_parameter_logging.rb +4 -0
  286. data/lib/template/config/initializers/inflections.rb +16 -0
  287. data/lib/template/config/initializers/mime_types.rb +4 -0
  288. data/lib/template/config/initializers/session_store.rb +3 -0
  289. data/lib/template/config/initializers/wrap_parameters.rb +14 -0
  290. data/lib/template/config/locales/devise.en.yml +59 -0
  291. data/lib/template/config/locales/en.yml +23 -0
  292. data/lib/template/config/routes.rb +3 -0
  293. data/lib/template/config/secrets.yml +22 -0
  294. data/lib/template/db/migrate/.keep +0 -0
  295. data/lib/template/db/seeds.rb +7 -0
  296. data/lib/template/lib/assets/.keep +0 -0
  297. data/lib/template/lib/tasks/.keep +0 -0
  298. data/lib/template/log/.keep +0 -0
  299. data/lib/template/public/404.html +67 -0
  300. data/lib/template/public/422.html +67 -0
  301. data/lib/template/public/500.html +66 -0
  302. data/lib/template/public/favicon.ico +0 -0
  303. data/lib/template/public/robots.txt +5 -0
  304. data/lib/template/test/controllers/.keep +0 -0
  305. data/lib/template/test/fixtures/.keep +0 -0
  306. data/lib/template/test/helpers/.keep +0 -0
  307. data/lib/template/test/integration/.keep +0 -0
  308. data/lib/template/test/mailers/.keep +0 -0
  309. data/lib/template/test/models/.keep +0 -0
  310. data/lib/template/test/test_helper.rb +10 -0
  311. data/lib/template/vendor/assets/javascripts/.keep +0 -0
  312. data/lib/template/vendor/assets/stylesheets/.keep +0 -0
  313. data/test/dummy/README.rdoc +28 -0
  314. data/test/dummy/Rakefile +6 -0
  315. data/test/dummy/app/assets/javascripts/application.js +13 -0
  316. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  317. data/test/dummy/app/controllers/application_controller.rb +5 -0
  318. data/test/dummy/app/helpers/application_helper.rb +2 -0
  319. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  320. data/test/dummy/bin/bundle +3 -0
  321. data/test/dummy/bin/rails +4 -0
  322. data/test/dummy/bin/rake +4 -0
  323. data/test/dummy/config.ru +4 -0
  324. data/test/dummy/config/application.rb +23 -0
  325. data/test/dummy/config/boot.rb +5 -0
  326. data/test/dummy/config/database.yml +25 -0
  327. data/test/dummy/config/environment.rb +5 -0
  328. data/test/dummy/config/environments/development.rb +37 -0
  329. data/test/dummy/config/environments/production.rb +78 -0
  330. data/test/dummy/config/environments/test.rb +39 -0
  331. data/test/dummy/config/initializers/assets.rb +8 -0
  332. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  333. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  334. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  335. data/test/dummy/config/initializers/inflections.rb +16 -0
  336. data/test/dummy/config/initializers/mime_types.rb +4 -0
  337. data/test/dummy/config/initializers/session_store.rb +3 -0
  338. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  339. data/test/dummy/config/locales/en.yml +23 -0
  340. data/test/dummy/config/routes.rb +56 -0
  341. data/test/dummy/config/secrets.yml +22 -0
  342. data/test/dummy/public/404.html +67 -0
  343. data/test/dummy/public/422.html +67 -0
  344. data/test/dummy/public/500.html +66 -0
  345. data/test/dummy/public/favicon.ico +0 -0
  346. data/test/integration/navigation_test.rb +10 -0
  347. data/test/shoppy/Users/alybadawy/exp/shoppy/lib/template/Gemfile.lock +217 -0
  348. data/test/shoppy/Users/alybadawy/exp/shoppy/lib/template/README.rdoc +28 -0
  349. data/test/shoppy/Users/alybadawy/exp/shoppy/lib/template/config.ru +4 -0
  350. data/test/shoppy_test.rb +7 -0
  351. data/test/test_helper.rb +15 -0
  352. metadata +495 -0
@@ -0,0 +1,9 @@
1
+ module Shoppy
2
+ class LogsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ @logs = Log.all.order("created_at DESC")
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,77 @@
1
+ module Shoppy
2
+ class ManufacturersController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ @manufacturers = Manufacturer.all
7
+ end
8
+
9
+ def new
10
+ @manufacturer = Manufacturer.new
11
+ @manufacturer.name = params[:name]
12
+ @manufacturer.phone = params[:phone]
13
+ @manufacturer.email = params[:email]
14
+ @manufacturer.website = params[:website]
15
+ @manufacturer.add_line1 = params[:add_line1]
16
+ @manufacturer.add_line2 = params[:add_line2]
17
+ @manufacturer.city = params[:city]
18
+ @manufacturer.state = params[:state]
19
+ @manufacturer.country = params[:country]
20
+ @manufacturer.zip = params[:zip]
21
+ if @manufacturer.save
22
+ Log.newEvent("Manufacturers", "A new manufacturer named '#{@manufacturer.name}' was created", current_admin.name)
23
+ flash[:notice] = "Manufacturer has been created."
24
+ else
25
+ ## TODO: Handle Errors
26
+ flash[:error] = @manufacturer.errors.messages
27
+ end
28
+ redirect_to '/products/manufacturers'
29
+ end
30
+
31
+ def show
32
+ c = Manufacturer.find_by(id: params[:manufacturer_id])
33
+ if c
34
+ @manufacturer = c
35
+ else
36
+ page_not_found
37
+ end
38
+ end
39
+
40
+
41
+ def edit
42
+ @manufacturer = Manufacturer.find_by(id: params[:manufacturer_id])
43
+ if @manufacturer
44
+ if @manufacturer.update_attributes(category_params)
45
+ Log.newEvent("Manufacturers", "Manufacturer named '#{@manufacturer.name}' was updated", current_admin.name)
46
+ flash[:notice] = "Manufacturer has been updated."
47
+ else
48
+ flash[:error] = @manufacturer.errors.messages
49
+ end
50
+ redirect_to '/products/manufacturers/' + @manufacturer.id.to_s
51
+ else
52
+ page_not_found
53
+ end
54
+ end
55
+
56
+
57
+
58
+ def delete
59
+ @manufacturer = Manufacturer.find_by(id: params[:manufacturer_id])
60
+ if @manufacturer
61
+ @manufacturer.destroy
62
+ Log.newEvent("Manufacturers", "Manufacturer named '#{@manufacturer.name}' was deleted", current_admin.name)
63
+ flash[:notice] = "Manufacturer has been deleted."
64
+ redirect_to '/products/manufacturers'
65
+ else
66
+ page_not_found
67
+ end
68
+ end
69
+
70
+ private
71
+ def category_params
72
+ params.require(:manufacturer).permit(:name, :email, :website, :phone, :add_line1, :add_line2, :city, :state, :zip)
73
+ end
74
+
75
+ end
76
+
77
+ end
@@ -0,0 +1,63 @@
1
+ module Shoppy
2
+ class OptionsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ @options = OptionsGroup.all
7
+ end
8
+
9
+ def new
10
+ if (params[:name]) && (params[:name] != "") && (params[:display]) && (params[:display] != "") && (params[:optionsItems]) && (params[:optionsItems] != "")
11
+ if OptionsHelper::create_options_group(params[:name], params[:display], params[:optionsItems])
12
+ Log.newEvent("Option Groups", "Options group named '#{params[:name]}' was created", current_admin.name)
13
+ flash[:notice] = "Options Group has been created!"
14
+ else
15
+ flash[:warning] = "Something went wrong. Try again later"
16
+ end
17
+ else
18
+ flash[:warning] = "Please make sure you have entered the options' group name, display name, and the options."
19
+ end
20
+ redirect_to "/products/options"
21
+ end
22
+
23
+ def show
24
+ og = OptionsGroup.find_by(id: params[:options_group_id])
25
+ if og
26
+ @options_group = og
27
+ else
28
+ page_not_found
29
+ end
30
+ end
31
+
32
+ def edit
33
+ @options_group = OptionsGroup.find_by(id: params[:options_group_id])
34
+ if @options_group
35
+ @options_group.name = params[:options_group][:name]
36
+ @options_group.display = params[:options_group][:display]
37
+ @options_group.items_string = params[:optionsItems]
38
+ if @options_group.save
39
+ Log.newEvent("Option Groups", "Options group named '#@options_group.name}' was updated", current_admin.name)
40
+ flash[:notice] = "Options Group has been updated."
41
+ else
42
+ flash[:error] = @options_group.errors.messages
43
+ end
44
+ redirect_to '/products/options/' + @options_group.id.to_s
45
+ else
46
+ page_not_found
47
+ end
48
+ end
49
+
50
+ def delete
51
+ options_group = OptionsGroup.find_by(id: params[:options_group_id])
52
+ if options_group
53
+ options_group.destroy
54
+ Log.newEvent("Option Groups", "Options group named '#options_group.name}' was deleted", current_admin.name)
55
+ flash[:notice] = "Options' group has been deleted."
56
+ redirect_to '/products/options'
57
+ else
58
+ page_not_found
59
+ end
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,130 @@
1
+ module Shoppy
2
+ class OrdersController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ if params[:customer_id]
7
+ @customer = Customer.find_by(id: params[:customer_id])
8
+ if @customer
9
+ @orders = Order.where(customer_id: params[:customer_id])
10
+ else
11
+ page_not_found
12
+ end
13
+ else
14
+ @orders = Order.all
15
+ end
16
+ end
17
+
18
+ def new
19
+ customer = Customer.find_by(id: params[:order][:customer_id])
20
+ address = CustomerAddress.find_by(id: params[:address_id])
21
+ if customer
22
+ if address
23
+ order_lines_hash = {}
24
+ order_lines = params[:orderLines]
25
+ order_lines.each do |oli, old|
26
+ new_ols = { old["variant_id"] => old["quantity"].to_i }
27
+ order_lines_hash = order_lines_hash.update(new_ols) { |k, v1, v2| v1 + v2 }
28
+ end
29
+ order = OrdersHelper::new_order(customer, order_lines_hash, address)
30
+ if order
31
+ flash[:notice] = "Order has been created for a total amount #{order.total_price}"
32
+ else
33
+ flash[:warning] = "Something wrong happend. please try again later"
34
+ end
35
+ redirect_to "/accounts/#{customer.id}/orders"
36
+ else
37
+ flash[:warning] = "You didn't select a customer"
38
+ redirect_to "/orders"
39
+ end
40
+ else
41
+ flash[:warning] = "Please select a Customer Address."
42
+ redirect_to "/orders"
43
+ end
44
+ end
45
+
46
+ def show
47
+ r = Order.find_by(id: params[:order_id])
48
+ if r
49
+ @order = r
50
+ else
51
+ page_not_found
52
+ end
53
+ end
54
+
55
+ def edit
56
+ @order = Order.find_by(id: params[:order_id])
57
+ (customer = Customer.find_by(id: params[:customer_id])) if params[:customer_id]
58
+ if @order
59
+ if params[:status] == "disapprove"
60
+ if @order.status == "Approved"
61
+ @order.status = "Cancelled"
62
+ @order.save
63
+ Log.newEvent("Orders", "Order no. #{@order.id} for '#{@order.customer.name}' was cancelled", current_admin.name)
64
+ flash[:notice] = "Order no. #{@order.id} for '#{@order.customer.name}' was cancelled"
65
+ elsif @order.status == "Cancelled" || @order.status == "Pending"
66
+ flash[:warning] = "Order is already not approved"
67
+ elsif @order.status == "Processing" || @order.status == "Shipped"
68
+ flash[:warning] = "Order is fully/partially shipped, so it can't be cancelled"
69
+ else
70
+ flash[:warning] = "Something went wrong. please try again later"
71
+ end
72
+ elsif params[:status] == "approve"
73
+ if @order.status == "Cancelled" || @order.status == "Pending"
74
+ @order.status = "Approved"
75
+ @order.save
76
+ Log.newEvent("Orders", "Order no. #{@order.id} for '#{@order.customer.name}' was approved", current_admin.name)
77
+ flash[:notice] = "Order no. #{@order.id} for '#{@order.customer.name}' was approved"
78
+ else
79
+ flash[:warning] = "Order is already approved"
80
+ end
81
+ else
82
+ flash[:warning] = "Something went wrong. please try again later"
83
+ end
84
+ if params[:view] == "show"
85
+ redirect_to "/orders/#{@order.id}"
86
+ else
87
+ if customer
88
+ redirect_to "/accounts/#{customer.id}/orders"
89
+ else
90
+ redirect_to "/orders"
91
+ end
92
+ end
93
+ else
94
+ page_not_found
95
+ end
96
+ end
97
+
98
+ def delete
99
+ @order = Order.find_by(id: params[:order_id])
100
+ (customer = Customer.find_by(id: params[:customer_id])) if params[:customer_id]
101
+ if @order
102
+ if @order.status == "Cancelled" || @order.status == "Pending"
103
+ @order.destroy
104
+ flash[:notice] = "Order no. #{@order.id} for '#{@order.customer.name}' was deleted"
105
+ Log.newEvent("Orders", "Order no. #{@order.id} for '#{@order.customer.name}' was deleted", current_admin.name)
106
+ elsif @order.status == "Approved"
107
+ flash[:warning] = "Order is currently approved, so it can't be deleted."
108
+ elsif @order.status == "Shipped"
109
+ flash[:warning] = "Order is currently shipped, so it can't be deleted."
110
+ elsif @order.status == "Delivered"
111
+ flash[:warning] = "Order is currently delivered, so it can't be deleted."
112
+ else
113
+ flash[:warning] = "Something wrong happend. Please try again later."
114
+ end
115
+ if params[:view] == "show"
116
+ redirect_to '/accounts/#{@order.id}'
117
+ else
118
+ if customer
119
+ redirect_to "/accounts/#{customer.id}/orders"
120
+ else
121
+ redirect_to "/orders"
122
+ end
123
+ end
124
+ else
125
+ page_not_found
126
+ end
127
+ end
128
+
129
+ end
130
+ end
@@ -0,0 +1,98 @@
1
+ module Shoppy
2
+ class ProductsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ @products = Product.all
7
+ @options = []
8
+
9
+ options = OptionsGroup.all.order("name ASC")
10
+ options.each do |o|
11
+ @options += [o.name]
12
+ end
13
+ end
14
+
15
+ def new
16
+ category = Category.find(params[:category][:id]) if !params[:category][:id].empty?
17
+ brand = Brand.find(params[:brand][:id]) if !params[:brand][:id].empty?
18
+ manufacturer = Manufacturer.find(params[:manufacturer][:id]) if !params[:manufacturer][:id].empty?
19
+ if brand && category && manufacturer
20
+ Product.transaction do
21
+ @product = Product.new
22
+ @product.name = params[:name]
23
+ @product.category = Category.find(params[:category][:id]) if params[:category]
24
+ @product.brand = Brand.find(params[:brand][:id]) if params[:brand]
25
+ @product.manufacturer = Manufacturer.find(params[:manufacturer][:id]) if params[:manufacturer]
26
+ if @product.save
27
+ Log.newEvent("Products", "Product named '#{@product.name}' was created", current_admin.name)
28
+ flash[:notice] = "Product has been created successfully."
29
+ options = ProductsHelper::convert_params_groups_to_objects(params[:options_groups][:ids])
30
+ ProductsHelper::add_options_groups_to_product(@product, options)
31
+ else
32
+ flash[:error] = @product.errors.messages
33
+ end
34
+ end
35
+ else
36
+ flash[:warning] = "Please select a Category, a Brand, and a Manufacturer for the product"
37
+ end
38
+ redirect_to "/products/items"
39
+ end
40
+
41
+ def show
42
+ product = Product.find_by(id: params[:product_id])
43
+ if product
44
+ @product = product
45
+ else
46
+ page_not_found
47
+ end
48
+ end
49
+
50
+
51
+ def edit
52
+ product = Product.find_by(id: params[:product_id])
53
+ category = Category.find(params[:category][:id]) if !params[:category][:id].empty?
54
+ brand = Brand.find(params[:brand][:id]) if !params[:brand][:id].empty?
55
+ manufacturer = Manufacturer.find(params[:manufacturer][:id]) if !params[:manufacturer][:id].empty?
56
+ if product
57
+ if category && brand && manufacturer
58
+ Product.transaction do
59
+ product.name = params[:name]
60
+ product.category = category
61
+ product.brand = brand
62
+ product.manufacturer = manufacturer
63
+ options = ProductsHelper::convert_params_groups_to_objects(params[:options_groups][:ids])
64
+ ProductsHelper::update_options_groups_for_product(product, options)
65
+ product.hash_data = {}
66
+ hash = params[:hash]
67
+ hash.each do |h_index, h_data|
68
+ product.put_hash(h_data["k"], h_data["v"])
69
+ end
70
+ if product.save
71
+ Log.newEvent("Products", "Product named '#{product.name}' was updated", current_admin.name)
72
+ flash[:notice] = "product updated successfully"
73
+ else
74
+ flash[:warning] = "Something went wrong. Try again later"
75
+ end
76
+ end
77
+ else
78
+ flash[:warning] = "Please select a Category, a Brand, and a Manufacturer for the product"
79
+ end
80
+ redirect_to "/products/items/" + product.id.to_s
81
+ else
82
+ page_not_found
83
+ end
84
+ end
85
+
86
+ def delete
87
+ @product = Product.find_by(id: params[:product_id])
88
+ if @product
89
+ @product.destroy
90
+ Log.newEvent("Products", "Product named '#{@product.name}' was updated", current_admin.name)
91
+ flash[:notice] = "product has been deleted."
92
+ redirect_to '/products/items'
93
+ else
94
+ page_not_found
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,70 @@
1
+ module Shoppy
2
+ class ReviewsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ if params[:product_id]
7
+ @product = Product.find_by(id: params[:product_id])
8
+ if @product
9
+ @reviews = Review.where(product_id: params[:product_id])
10
+ else
11
+ page_not_found
12
+ end
13
+ else
14
+ @reviews = Review.all
15
+ end
16
+ end
17
+
18
+ def show
19
+ r = Review.find_by(id: params[:review_id])
20
+ if r
21
+ @review = r
22
+ else
23
+ page_not_found
24
+ end
25
+ end
26
+
27
+ def edit
28
+ review = Review.find_by(id: params[:review_id])
29
+ (product = Product.find_by(id: params[:product_id])) if params[:product_id]
30
+ if review
31
+ if params[:status] == "approve"
32
+ review.accepted = true
33
+ review.save
34
+ flash[:notice] = "Review has been approved."
35
+ Log.newEvent("Review", "Review '#{review.id}' for product '#{review.product.name}' was approved", current_admin.name)
36
+ elsif params[:status] == "disapprove"
37
+ review.accepted = false
38
+ review.save
39
+ flash[:notice] = "Review has been disapproved."
40
+ Log.newEvent("Review", "Review '#{review.id}' for product '#{review.product.name}' was disapproved", current_admin.name)
41
+ else
42
+ flash[:warning] = "Something went wrong. please try again"
43
+ end
44
+ if params[:view] = "show"
45
+ redirect_to "/reviews/#{review.id}"
46
+ else
47
+ if product
48
+ redirect_to "/products/items/#{product.id}/reviews"
49
+ else
50
+ redirect_to "/reviews"
51
+ end
52
+ end
53
+ else
54
+ page_not_found
55
+ end
56
+ end
57
+
58
+ def delete
59
+ review = Review.find_by(id: params[:review_id])
60
+ if review
61
+ review.destroy
62
+ Log.newEvent("Review", "Review '#{review.id}' for product '#{review.product.name}' was deleted", current_admin.name)
63
+ flash[:notice] = "review has been deleted."
64
+ redirect_to '/reviews'
65
+ else
66
+ page_not_found
67
+ end
68
+ end
69
+ end
70
+ end