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,5 @@
1
+ module Shoppy
2
+ class SessionsController < Devise::SessionsController
3
+
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ module Shoppy
2
+ class SettingsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def show
6
+ @setting = Setting.first
7
+ end
8
+
9
+ def edit
10
+ def edit
11
+ @setting = Setting.first
12
+ if @setting.update_attributes(setting_params)
13
+ Log.newEvent("Settings", "Settings were updated", current_admin.name)
14
+ flash[:notice] = "Settings have been updated."
15
+ else
16
+ flash[:errors] = @setting.errors.messages
17
+ end
18
+ redirect_to "/settings"
19
+ end
20
+
21
+ def setting_params
22
+ params.require(:setting).permit(:app_name, :hostname, :base_url, :accounts_email_sender, :notification_email_sender, :currency_unit, :license_key)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,125 @@
1
+ module Shoppy
2
+ class ShipmentsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+
5
+ def index
6
+ if params[:order_id]
7
+ @order = Order.find_by(id: params[:order_id])
8
+ if @order
9
+ @shipments = Shipment.where(order_id: params[:order_id])
10
+ else
11
+ page_not_found
12
+ end
13
+ else
14
+ @shipments = Shipment.all
15
+ end
16
+ end
17
+
18
+ def show
19
+ s = Shipment.find_by(id: params[:shipment_id])
20
+ if s
21
+ @shipment = s
22
+ else
23
+ page_not_found
24
+ end
25
+ end
26
+
27
+ def edit
28
+ @shipment = Shipment.find_by(id: params[:shipment_id])
29
+ (order = Order.find_by(id: params[:order_id])) if params[:order_id]
30
+ if @shipment
31
+ if params[:status] == "cancelled"
32
+ if @shipment.status == "Processing"
33
+ @shipment.status = "Cancelled"
34
+ @shipment.save
35
+ Log.newEvent("Shipments", "shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was cancelled", current_admin.name)
36
+ flash[:notice] = "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was cancelled"
37
+ elsif @shipment.status == "Cancelled"
38
+ flash[:warning] = "Shipment is already not cancelled"
39
+ elsif @shipment.status == "Shipped" || @shipment.status == "Delivered"
40
+ flash[:warning] = "Shipment is already shipped, so it can't be cancelled"
41
+ else
42
+ flash[:warning] = "Something went wrong. please try again later"
43
+ end
44
+ elsif params[:status] == "processing"
45
+ if @shipment.status == "Cancelled"
46
+ @shipment.status = "Processing"
47
+ @shipment.save
48
+ Log.newEvent("Shipment", "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was marked processing.", current_admin.name)
49
+ flash[:notice] = "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was marked processing."
50
+ elsif @shipment.status == "Processing"
51
+ flash[:warning] = "Shipment is already marked processing."
52
+ elsif @shipment.status == "Shipped"
53
+ flash[:warning] = "Shipment is already shipped, so it can't be edited"
54
+ else
55
+ flash[:warning] = "Something went wrong. please try again later"
56
+ end
57
+ elsif params[:status] == "shipped"
58
+ if @shipment.status == "Processing"
59
+ @shipment.status = "Shipped"
60
+ @shipment.save
61
+ Log.newEvent("Shipment", "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was marked shipped.", current_admin.name)
62
+ flash[:notice] = "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was marked shipped."
63
+ elsif @shipment.status == "Cancelled"
64
+ flash[:warning] = "Order is cancelled, hence can't be marked as shipped"
65
+ elsif @shipment.status = "Shipped"
66
+ flash[:notice] = "Shipment is already marked shipped."
67
+ else
68
+ flash[:warning] = "Something went wrong. please try again later"
69
+ end
70
+ elsif params[:status] == "delivered"
71
+ if @shipment.status == "Shipped"
72
+ @shipment.status = "Delivered"
73
+ @shipment.delivery_date = Date.today
74
+ @shipment.save
75
+ Log.newEvent("Shipment", "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was marked Delivered.", current_admin.name)
76
+ flash[:notice] = "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was marked Delivered."
77
+ else
78
+ flash[:warning] = "Order has to be shipped first, before you mark it delivered"
79
+ end
80
+ else
81
+ flash[:warning] = "Something went wrong. please try again later"
82
+ end
83
+ if params[:view] == "show"
84
+ redirect_to "/shipments/#{@shipment.id}"
85
+ else
86
+ if order
87
+ redirect_to "/orders/#{order.id}/shipments"
88
+ else
89
+ redirect_to "/shipments"
90
+ end
91
+ end
92
+ else
93
+ page_not_found
94
+ end
95
+ end
96
+
97
+ def delete
98
+ shipment = Shipment.find_by(id: params[:shipment_id])
99
+ (order = Order.find_by(id: params[:order_id])) if params[:order_id]
100
+ if shipment
101
+ if shipment.status == "Cancelled" || shipment.status == "Processing"
102
+ shipment.destroy
103
+ Log.newEvent("Shipment", "Shipment no. #{@shipment.id} for order no. '#{@shipment.order.id}' was deleted.", current_admin.name)
104
+ elsif shipment.status == "Shipped" || shipment.status == "Delivered"
105
+ flash[:warning] = "Shipment has already been shipped, so it can't be deleted."
106
+ else
107
+ flash[:warning] = "Something went wrong. please try again later"
108
+ end
109
+ if params[:view] == "show"
110
+ redirect_to '/orders/#{order.id}/shipments/#{@shioment.id}'
111
+ else
112
+ if order
113
+ redirect_to "/orders/#{order.id}/shipments"
114
+ else
115
+ redirect_to "/shipments"
116
+ end
117
+ end
118
+ else
119
+ page_not_found
120
+ end
121
+ end
122
+
123
+
124
+ end
125
+ end
@@ -0,0 +1,104 @@
1
+ module Shoppy
2
+ class VariantsController < ApplicationController
3
+ before_action :authenticate_admin!
4
+ def index
5
+ product = Product.find_by(id: params[:product_id])
6
+ if product
7
+ @product = product
8
+ @variants = product.variants
9
+ else
10
+ page_not_found
11
+ end
12
+ end
13
+
14
+ def new
15
+ product = Product.find_by(id: params[:product_id])
16
+ if product
17
+ variant = Variant.new
18
+ variant.product = product
19
+ variant.name = params[:name]
20
+ variant.reg_price = params[:reg_price]
21
+ variant.promo_price = params[:promo_price]
22
+ variant.promo_price_starts_on = params[:promo_price_starts_on]
23
+ variant.promo_price_ends_on = params[:promo_price_ends_on]
24
+ variant.points = params[:points]
25
+ if params[:options]
26
+ params[:options].each do |pok, poi|
27
+ variant.put_option(pok, OptionsItem.find(poi.to_i).name)
28
+ end
29
+ end
30
+ if variant.save
31
+ Log.newEvent("Variant", "Variant named '#{variant.name}' for product '#{product.name}' was created", current_admin.name)
32
+ flash[:notice] = "Variant Added successfully"
33
+ else
34
+ flash[:error] = variant.errors.messages
35
+ end
36
+ redirect_to "/products/items/#{product.id}/variants"
37
+ else
38
+ page_not_found
39
+ end
40
+ end
41
+
42
+ def show
43
+ product = Product.find_by(id: params[:product_id])
44
+ variant = Variant.find_by(id: params[:variant_id])
45
+ if product && variant && (variant.product == product)
46
+ @variant = variant
47
+ else
48
+ page_not_found
49
+ end
50
+ end
51
+
52
+ def edit
53
+ product = Product.find_by(id: params[:product_id])
54
+ variant = Variant.find_by(id: params[:variant_id])
55
+ if product && variant && (variant.product == product)
56
+ variant.name = params[:name]
57
+ variant.reg_price = params[:reg_price]
58
+ variant.promo_price = params[:promo_price]
59
+ variant.promo_price_starts_on = params[:promo_price_starts_on]
60
+ variant.promo_price_ends_on = params[:promo_price_ends_on]
61
+ variant.points = params[:points]
62
+ if params[:options]
63
+ params[:options].each do |pok, poi|
64
+ variant.put_option(pok, OptionsItem.find(poi.to_i).name)
65
+ end
66
+ end
67
+ variant.hash_data = {}
68
+ hash = params[:hash]
69
+ hash.each do |h_index, h_data|
70
+ variant.put_hash(h_data["k"], h_data["v"])
71
+ end
72
+ if variant.save
73
+ Log.newEvent("Variant", "Variant named '#{variant.name}' for product '#{product.name}' was updated", current_admin.name)
74
+ flash[:notice] = "Variant updated successfully"
75
+ else
76
+ flash[:error] = variant.errors.messages
77
+ end
78
+ redirect_to "/products/items/#{product.id}/variants/#{variant.id}"
79
+ else
80
+ page_not_found
81
+ end
82
+ end
83
+
84
+ def delete
85
+ product = Product.find_by(id: params[:product_id])
86
+ variant = Variant.find_by(id: params[:variant_id])
87
+ if product && variant && (variant.product == product)
88
+ if variant.destroy
89
+ Log.newEvent("Variant", "Variant named '#{variant.name}' for product '#{product.name}' was deleted", current_admin.name)
90
+ flash[:notice] = "Variant deleted successfully."
91
+ else
92
+ flash[:warning] = "Something went wrong. please try again later."
93
+ end
94
+ if params[:viw] == "show"
95
+ redirect_to "/products/items/#{product.id}/variants#{variant.id}"
96
+ else
97
+ redirect_to "/products/items/#{product.id}/variants"
98
+ end
99
+ else
100
+ page_not_found
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,5 @@
1
+ module Shoppy
2
+ module AccountsHelper
3
+
4
+ end
5
+ end
@@ -0,0 +1,19 @@
1
+ module Shoppy
2
+ module ApplicationHelper
3
+
4
+
5
+ def self.test
6
+ return "ok!"
7
+ end
8
+
9
+ def self.is_product_page(controller)
10
+ case controller
11
+ when "manufacturers", "brands", "products", "categories", "options", "reviews"
12
+ return true
13
+ else
14
+ return false
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,4 @@
1
+ module Shoppy
2
+ module BrandsHelper
3
+ end
4
+ end
@@ -0,0 +1,66 @@
1
+ module Shoppy
2
+ module CartHelper
3
+ def self.empty_cart_for_customer(customer)
4
+ CartItem.transaction do
5
+ cis = CartItem.where(customer_id: customer.id)
6
+ cis.each do |ci|
7
+ ci.destroy
8
+ end
9
+ return true
10
+ end
11
+ end
12
+
13
+ def self.add_variant_to_customer_cart(customer, variant, quantity)
14
+ ci = CartItem.find_by(customer_id: customer.id, variant_id: variant.od)
15
+ if !ci
16
+ ci = CartItem.new
17
+ ci.customer = customer
18
+ ci.variant = variant
19
+ end
20
+ ci.quantity += quantity
21
+ return ci.save
22
+ end
23
+
24
+ def self.remove_variant_from_customer_cart(customer, variant)
25
+ ci = CartItem.find_by(customer_id: customer.id, variant_id: variant.od)
26
+ ci.destroy if ci
27
+ end
28
+
29
+ def self.update_variant_quantity_in_customer_cart(customer, variant, quantity)
30
+ ci = CartItem.find_by(customer_id: customer.id, variant_id: variant.od)
31
+ if ci
32
+ ci.quantity = quantity
33
+ ci.save
34
+ end
35
+ return ci
36
+ end
37
+
38
+ def self.convert_cart_to_order(customer)
39
+ uc = customer.cart_items
40
+ order = nil
41
+ Order.transaction do
42
+ o = Order.new
43
+ o.customer = customer
44
+ o.save
45
+ order_total_price = 0.0
46
+ uc.each do |cl|
47
+ ol = OrderLine.new
48
+ ol.order = o
49
+ ol.variant = cl.variant
50
+ ol.quantity = cl.quantity
51
+ ol.price_per_one = cl.variant.price
52
+ line_totalprice = ol.quantity * ol.price_per_one
53
+ order_total_price += line_totalprice
54
+ ol.save
55
+ end
56
+ o.total_price = order_total_price
57
+ o.date = Date.today
58
+ order = o.save
59
+ CartHelper::empty_cart_for_customer(customer)
60
+ OrdersHelper::calculate_points(o)
61
+ return true
62
+ end
63
+ end
64
+
65
+ end
66
+ end
@@ -0,0 +1,4 @@
1
+ module Shoppy
2
+ module CategoriesHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Shoppy
2
+ module CustomerAddressesHelper
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module Shoppy
2
+ module HomeHelper
3
+
4
+ end
5
+ end
@@ -0,0 +1,53 @@
1
+ module Shoppy
2
+ module InventoriesHelper
3
+
4
+ def self.get_inventory_for_variant(variant)
5
+ Inventory.where(variant_id: variant.id).all.order("quantity DESC")
6
+ end
7
+
8
+
9
+ def self.add_variant_to_stock_location(variant, quantity, stock_location)
10
+ i = Inventory.find_by(variant_id: variant.id, stock_location_id: stock_location.id)
11
+ if !i
12
+ i = Inventory.new
13
+ i.variant = variant
14
+ i.stock_location = stock_location
15
+ end
16
+ i.quantity ? i.quantity += quantity : i.quantity = quantity
17
+ if i.save
18
+ return true
19
+ else
20
+ return false
21
+ end
22
+ end
23
+
24
+
25
+ def self.deduct_variant_from_stuck_location(variant, quantity, stock_location)
26
+ i = Inventory.find_by(stock_location_id: stock_location.id, variant_id: variant.id)
27
+ if i && i.quantity > quantity
28
+ i.quantity -= quantity
29
+ i.save
30
+ return true
31
+ elsif i && i.quantity == quantity
32
+ i.destory
33
+ return true
34
+ else
35
+ return false
36
+ end
37
+ end
38
+
39
+
40
+ def self.transfer_inventory(from_stock_location, to_stock_location, variant, quantity)
41
+ Inventory.transaction do
42
+ if deduct_variant_from_stuck_location(variant, quantity, from_stock_location) && add_variant_to_stock_location(variant, quantity, to_stock_location)
43
+ return true
44
+ else
45
+ raise ActiveRecord::Rollback
46
+ return false
47
+ end
48
+ end
49
+ end
50
+
51
+
52
+ end
53
+ end
@@ -0,0 +1,4 @@
1
+ module Shoppy
2
+ module LocationsHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Shoppy
2
+ module LogsHelper
3
+ end
4
+ end