rails_marketplace 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -20
- data/README.rdoc +2 -2
- data/Rakefile +37 -37
- data/app/assets/javascripts/rails_marketplace/application.js +46 -46
- data/app/assets/javascripts/rails_marketplace/catalog.coffee +3 -3
- data/app/assets/javascripts/rails_marketplace/flash.js +6 -6
- data/app/assets/javascripts/rails_marketplace/footermanifest.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/autocomplete/countries.js +266 -266
- data/app/assets/javascripts/rails_marketplace/js/autocomplete/jquery.autocomplete.js +986 -986
- data/app/assets/javascripts/rails_marketplace/js/bootstrap.min.js +6 -6
- data/app/assets/javascripts/rails_marketplace/js/calendar/fullcalendar.min.js +8 -8
- data/app/assets/javascripts/rails_marketplace/js/chartjs/chart.min.js +13 -13
- data/app/assets/javascripts/rails_marketplace/js/colorpicker/bootstrap-colorpicker.min.js +1087 -1087
- data/app/assets/javascripts/rails_marketplace/js/colorpicker/docs.js +17 -17
- data/app/assets/javascripts/rails_marketplace/js/cropping/cropper.min.js +9 -9
- data/app/assets/javascripts/rails_marketplace/js/cropping/main.js +321 -321
- data/app/assets/javascripts/rails_marketplace/js/cropping/main2.js +160 -160
- data/app/assets/javascripts/rails_marketplace/js/custom.js +379 -379
- data/app/assets/javascripts/rails_marketplace/js/datatables/buttons.bootstrap.min.css +1 -1
- data/app/assets/javascripts/rails_marketplace/js/datatables/buttons.bootstrap.min.js +6 -6
- data/app/assets/javascripts/rails_marketplace/js/datatables/buttons.html5.min.js +22 -22
- data/app/assets/javascripts/rails_marketplace/js/datatables/buttons.print.min.js +4 -4
- data/app/assets/javascripts/rails_marketplace/js/datatables/dataTables.bootstrap.js +8 -8
- data/app/assets/javascripts/rails_marketplace/js/datatables/dataTables.buttons.min.js +36 -36
- data/app/assets/javascripts/rails_marketplace/js/datatables/dataTables.fixedHeader.min.js +17 -17
- data/app/assets/javascripts/rails_marketplace/js/datatables/dataTables.keyTable.min.js +18 -18
- data/app/assets/javascripts/rails_marketplace/js/datatables/dataTables.responsive.min.js +25 -25
- data/app/assets/javascripts/rails_marketplace/js/datatables/dataTables.scroller.min.js +26 -26
- data/app/assets/javascripts/rails_marketplace/js/datatables/fixedHeader.bootstrap.min.css +1 -1
- data/app/assets/javascripts/rails_marketplace/js/datatables/jquery.dataTables.min.css +333 -333
- data/app/assets/javascripts/rails_marketplace/js/datatables/jquery.dataTables.min.js +166 -166
- data/app/assets/javascripts/rails_marketplace/js/datatables/json/scroller-demo.json +2501 -2501
- data/app/assets/javascripts/rails_marketplace/js/datatables/jszip.min.js +14 -14
- data/app/assets/javascripts/rails_marketplace/js/datatables/pdfmake.min.js +21 -21
- data/app/assets/javascripts/rails_marketplace/js/datatables/responsive.bootstrap.min.css +1 -1
- data/app/assets/javascripts/rails_marketplace/js/datatables/responsive.bootstrap.min.js +7 -7
- data/app/assets/javascripts/rails_marketplace/js/datatables/scroller.bootstrap.min.css +1 -1
- data/app/assets/javascripts/rails_marketplace/js/dropzone/dropzone.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/easypie/jquery.easypiechart.min.js +9 -9
- data/app/assets/javascripts/rails_marketplace/js/echart/echarts-all.js +35 -35
- data/app/assets/javascripts/rails_marketplace/js/echart/green.js +212 -212
- data/app/assets/javascripts/rails_marketplace/js/editor/bootstrap-wysiwyg.js +200 -200
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-apollo.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-basic.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-clj.js +18 -18
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-css.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-dart.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-erlang.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-go.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-hs.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-lisp.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-llvm.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-lua.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-matlab.js +6 -6
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-ml.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-mumps.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-n.js +4 -4
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-pascal.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-proto.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-r.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-rd.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-scala.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-sql.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-tcl.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-tex.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-vb.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-vhdl.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-wiki.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-xq.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/lang-yaml.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/prettify.js +30 -30
- data/app/assets/javascripts/rails_marketplace/js/editor/external/google-code-prettify/run_prettify.js +34 -34
- data/app/assets/javascripts/rails_marketplace/js/editor/external/jquery.hotkeys.js +99 -99
- data/app/assets/javascripts/rails_marketplace/js/flot/jquery.flot.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/flot/jquery.flot.orderBars.js +200 -200
- data/app/assets/javascripts/rails_marketplace/js/flot/jquery.flot.pie.js +820 -820
- data/app/assets/javascripts/rails_marketplace/js/flot/jquery.flot.resize.js +57 -57
- data/app/assets/javascripts/rails_marketplace/js/flot/jquery.flot.stack.js +188 -188
- data/app/assets/javascripts/rails_marketplace/js/flot/jquery.flot.tooltip.min.js +11 -11
- data/app/assets/javascripts/rails_marketplace/js/gauge/gauge.min.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/gauge/gauge_demo.js +21 -21
- data/app/assets/javascripts/rails_marketplace/js/icheck/icheck.min.js +11 -11
- data/app/assets/javascripts/rails_marketplace/js/input_mask/jquery.inputmask.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/jquery.min.js +5 -5
- data/app/assets/javascripts/rails_marketplace/js/maps/gdp-data.js +184 -184
- data/app/assets/javascripts/rails_marketplace/js/maps/jquery-jvectormap-2.0.3.min.js +2 -2
- data/app/assets/javascripts/rails_marketplace/js/moment/moment.min.js +6 -6
- data/app/assets/javascripts/rails_marketplace/js/moris/example.js +127 -127
- data/app/assets/javascripts/rails_marketplace/js/moris/morris.min.js +7 -7
- data/app/assets/javascripts/rails_marketplace/js/moris/raphael-min.js +11 -11
- data/app/assets/javascripts/rails_marketplace/js/notify/pnotify.buttons.js +132 -132
- data/app/assets/javascripts/rails_marketplace/js/notify/pnotify.nonblock.js +151 -151
- data/app/assets/javascripts/rails_marketplace/js/nprogress.js +476 -476
- data/app/assets/javascripts/rails_marketplace/js/pace/pace.min.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/parsley/parsley.min.js +8 -8
- data/app/assets/javascripts/rails_marketplace/js/progressbar/bootstrap-progressbar.min.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/select/select2.full.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/sidebar/classie.js +80 -80
- data/app/assets/javascripts/rails_marketplace/js/sidebar/component.css +569 -569
- data/app/assets/javascripts/rails_marketplace/js/sidebar/modernizr.custom.js +3 -3
- data/app/assets/javascripts/rails_marketplace/js/sidebar/sidebarEffects.js +62 -62
- data/app/assets/javascripts/rails_marketplace/js/skycons/skycons.min.js +1 -1
- data/app/assets/javascripts/rails_marketplace/js/sparkline/jquery.sparkline.min.js +4 -4
- data/app/assets/javascripts/rails_marketplace/js/textarea/autosize.min.js +5 -5
- data/app/assets/javascripts/rails_marketplace/less/custom.css +6355 -6355
- data/app/assets/javascripts/rails_marketplace/marketplace.js +17 -17
- data/app/assets/javascripts/rails_marketplace/welcome.coffee +3 -3
- data/app/assets/stylesheets/rails_marketplace/application.scss +30 -30
- data/app/assets/stylesheets/rails_marketplace/catalog.scss +131 -131
- data/app/assets/stylesheets/rails_marketplace/css/animate.min.css +11 -11
- data/app/assets/stylesheets/rails_marketplace/css/bootstrap.min.css +5 -5
- data/app/assets/stylesheets/rails_marketplace/css/calendar/fullcalendar.css +1116 -1116
- data/app/assets/stylesheets/rails_marketplace/css/calendar/fullcalendar.min.css +4 -4
- data/app/assets/stylesheets/rails_marketplace/css/calendar/fullcalendar.print.css +208 -208
- data/app/assets/stylesheets/rails_marketplace/css/colorpicker/bootstrap-colorpicker.min.css +8 -8
- data/app/assets/stylesheets/rails_marketplace/css/custom.css +5347 -5347
- data/app/assets/stylesheets/rails_marketplace/css/datatables/css/demo_page.css +103 -103
- data/app/assets/stylesheets/rails_marketplace/css/datatables/css/demo_table.css +258 -258
- data/app/assets/stylesheets/rails_marketplace/css/datatables/css/demo_table_jui.css +500 -500
- data/app/assets/stylesheets/rails_marketplace/css/datatables/css/jquery.dataTables.css +221 -221
- data/app/assets/stylesheets/rails_marketplace/css/datatables/css/jquery.dataTables_themeroller.css +244 -244
- data/app/assets/stylesheets/rails_marketplace/css/datatables/tools/css/dataTables.tableTools.css +336 -336
- data/app/assets/stylesheets/rails_marketplace/css/editor/index.css +42 -42
- data/app/assets/stylesheets/rails_marketplace/css/floatexamples.css +21 -21
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/_all.css +529 -529
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/aero.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/blue.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/flat.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/green.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/grey.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/orange.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/pink.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/purple.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/red.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/icheck/flat/yellow.css +52 -52
- data/app/assets/stylesheets/rails_marketplace/css/ion.rangeSlider.css +146 -146
- data/app/assets/stylesheets/rails_marketplace/css/ion.rangeSlider.skinFlat.css +106 -106
- data/app/assets/stylesheets/rails_marketplace/css/maps/jquery-jvectormap-2.0.3.css +135 -135
- data/app/assets/stylesheets/rails_marketplace/css/normalize.css +421 -421
- data/app/assets/stylesheets/rails_marketplace/css/nprogress.css +74 -74
- data/app/assets/stylesheets/rails_marketplace/css/progressbar/bootstrap-progressbar-3.3.0.css +161 -161
- data/app/assets/stylesheets/rails_marketplace/css/select/select2.min.css +403 -403
- data/app/assets/stylesheets/rails_marketplace/fonts/css/font-awesome.css +2086 -2086
- data/app/assets/stylesheets/rails_marketplace/fonts/css/font-awesome.min.css +4 -4
- data/app/assets/stylesheets/rails_marketplace/fonts/fonts/FontAwesome.otf +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/fonts/fontawesome-webfont.svg +654 -654
- data/app/assets/stylesheets/rails_marketplace/fonts/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/fonts/fontawesome-webfont.woff2 +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/glyphicons-halflings-regular.svg +287 -287
- data/app/assets/stylesheets/rails_marketplace/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/app/assets/stylesheets/rails_marketplace/fonts/less/animated.less +34 -34
- data/app/assets/stylesheets/rails_marketplace/fonts/less/bordered-pulled.less +25 -25
- data/app/assets/stylesheets/rails_marketplace/fonts/less/core.less +12 -12
- data/app/assets/stylesheets/rails_marketplace/fonts/less/fixed-width.less +6 -6
- data/app/assets/stylesheets/rails_marketplace/fonts/less/font-awesome.less +17 -17
- data/app/assets/stylesheets/rails_marketplace/fonts/less/icons.less +697 -697
- data/app/assets/stylesheets/rails_marketplace/fonts/less/larger.less +13 -13
- data/app/assets/stylesheets/rails_marketplace/fonts/less/list.less +19 -19
- data/app/assets/stylesheets/rails_marketplace/fonts/less/mixins.less +26 -26
- data/app/assets/stylesheets/rails_marketplace/fonts/less/path.less +15 -15
- data/app/assets/stylesheets/rails_marketplace/fonts/less/rotated-flipped.less +20 -20
- data/app/assets/stylesheets/rails_marketplace/fonts/less/spinning.less +29 -29
- data/app/assets/stylesheets/rails_marketplace/fonts/less/stacked.less +20 -20
- data/app/assets/stylesheets/rails_marketplace/fonts/less/variables.less +708 -708
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_animated.scss +34 -34
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_bordered-pulled.scss +25 -25
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_core.scss +12 -12
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_fixed-width.scss +6 -6
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_icons.scss +697 -697
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_larger.scss +13 -13
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_list.scss +19 -19
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_mixins.scss +26 -26
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_path.scss +15 -15
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_rotated-flipped.scss +20 -20
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_spinning.scss +29 -29
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_stacked.scss +20 -20
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/_variables.scss +708 -708
- data/app/assets/stylesheets/rails_marketplace/fonts/scss/font-awesome.scss +17 -17
- data/app/assets/stylesheets/rails_marketplace/images/loading.gif +0 -0
- data/app/assets/stylesheets/rails_marketplace/marketplace.scss +19 -19
- data/app/assets/stylesheets/rails_marketplace/pace.css +76 -76
- data/app/assets/stylesheets/rails_marketplace/welcome.scss +3 -3
- data/app/assets/stylesheets/scaffold.css +56 -56
- data/app/controllers/rails_marketplace/admin_controller.rb +150 -150
- data/app/controllers/rails_marketplace/application_controller.rb +4 -4
- data/app/controllers/rails_marketplace/catalog_controller.rb +171 -171
- data/app/controllers/rails_marketplace/seller_controller.rb +180 -180
- data/app/helpers/rails_marketplace/admin_helper.rb +16 -16
- data/app/helpers/rails_marketplace/application_helper.rb +4 -4
- data/app/helpers/rails_marketplace/catalog_helper.rb +4 -4
- data/app/helpers/rails_marketplace/plainpage_helper.rb +4 -4
- data/app/helpers/rails_marketplace/seller_helper.rb +15 -15
- data/app/models/rails_marketplace/admin.rb +9 -9
- data/app/models/rails_marketplace/admin_setting.rb +13 -13
- data/app/models/rails_marketplace/cart.rb +48 -48
- data/app/models/rails_marketplace/cart_product.rb +6 -6
- data/app/models/rails_marketplace/category.rb +21 -21
- data/app/models/rails_marketplace/category_product.rb +5 -5
- data/app/models/rails_marketplace/customer.rb +5 -5
- data/app/models/rails_marketplace/order.rb +21 -21
- data/app/models/rails_marketplace/order_product.rb +6 -6
- data/app/models/rails_marketplace/product.rb +33 -33
- data/app/models/rails_marketplace/seller.rb +12 -12
- data/app/models/rails_marketplace/seller_setting.rb +5 -5
- data/app/views/layouts/rails_marketplace/application.html.erb +37 -37
- data/app/views/layouts/rails_marketplace/seller_central.html.erb +58 -58
- data/app/views/layouts/rails_marketplace/super_admin.html.erb +58 -58
- data/app/views/rails_marketplace/admin/add_category.html.erb +63 -63
- data/app/views/rails_marketplace/admin/categories.html.erb +50 -50
- data/app/views/rails_marketplace/admin/category_products.html.erb +54 -54
- data/app/views/rails_marketplace/admin/dashboard.html.erb +49 -49
- data/app/views/rails_marketplace/admin/edit_category.html.erb +63 -63
- data/app/views/rails_marketplace/admin/login_form.html.erb +19 -19
- data/app/views/rails_marketplace/admin/products.html.erb +54 -54
- data/app/views/rails_marketplace/admin/seller_products.html.erb +54 -54
- data/app/views/rails_marketplace/admin/sellers.html.erb +48 -48
- data/app/views/rails_marketplace/admin/settings_form.html.erb +38 -38
- data/app/views/rails_marketplace/admin/signup_form.html.erb +24 -24
- data/app/views/rails_marketplace/catalog/cart.html.erb +80 -80
- data/app/views/rails_marketplace/catalog/category_products.html.erb +52 -52
- data/app/views/rails_marketplace/catalog/checkout.html.erb +207 -207
- data/app/views/rails_marketplace/catalog/checkout_success.html.erb +14 -14
- data/app/views/rails_marketplace/catalog/index.html.erb +0 -0
- data/app/views/rails_marketplace/catalog/product_detail.html.erb +87 -87
- data/app/views/rails_marketplace/partials/_admin_sidenav.html.erb +80 -80
- data/app/views/rails_marketplace/partials/_admin_topnav.html.erb +111 -111
- data/app/views/rails_marketplace/partials/_footer.html.erb +19 -19
- data/app/views/rails_marketplace/partials/_menu.html.erb +41 -41
- data/app/views/rails_marketplace/partials/_sidenav.html.erb +77 -77
- data/app/views/rails_marketplace/partials/_topnav.html.erb +105 -105
- data/app/views/rails_marketplace/seller/add_bulk_products.html.erb +0 -0
- data/app/views/rails_marketplace/seller/add_product.html.erb +66 -66
- data/app/views/rails_marketplace/seller/dashboard.html.erb +50 -50
- data/app/views/rails_marketplace/seller/edit_product.html.erb +68 -68
- data/app/views/rails_marketplace/seller/login_form.html.erb +36 -36
- data/app/views/rails_marketplace/seller/order_details.html.erb +69 -69
- data/app/views/rails_marketplace/seller/orders.html.erb +68 -68
- data/app/views/rails_marketplace/seller/products.html.erb +55 -55
- data/app/views/rails_marketplace/seller/settings_general.html.erb +64 -64
- data/app/views/rails_marketplace/seller/settings_payment.html.erb +34 -34
- data/app/views/rails_marketplace/seller/settings_shipping.html.erb +34 -34
- data/app/views/rails_marketplace/seller/settings_tax.html.erb +34 -34
- data/app/views/rails_marketplace/seller/signup_form.html.erb +27 -27
- data/app/views/rails_marketplace/seller/step_two.html.erb +16 -16
- data/app/views/rails_marketplace/shared/_admin_error_messages.html.erb +11 -11
- data/app/views/rails_marketplace/shared/_product_error_messages.html.erb +11 -11
- data/app/views/rails_marketplace/shared/_seller_error_messages.html.erb +11 -11
- data/config/routes.rb +58 -58
- data/db/migrate/20161013194852_create_sellers.rb +13 -13
- data/db/migrate/20161013195006_create_customers.rb +13 -13
- data/db/migrate/20161013195758_create_orders.rb +8 -8
- data/db/migrate/20161014013032_create_category_products.rb +10 -10
- data/db/migrate/20161014013058_create_order_products.rb +13 -13
- data/db/migrate/20161017185755_create_admins.rb +12 -12
- data/db/migrate/20161017232347_create_products.rb +14 -14
- data/db/migrate/20161019012043_add_reference_product_seller.rb +5 -5
- data/db/migrate/20161019013502_change_data_type_images_files.rb +6 -6
- data/db/migrate/20161019022020_add_reference_order_customers.rb +5 -5
- data/db/migrate/20161109191644_create_categories.rb +15 -15
- data/db/migrate/20161110021043_create_friendly_id_slugs.rb +15 -15
- data/db/migrate/20161110021131_add_slug_to_category.rb +6 -6
- data/db/migrate/20161110024118_add_slug_to_product.rb +6 -6
- data/db/migrate/20161111001446_create_carts.rb +8 -8
- data/db/migrate/20161111004451_create_cart_products.rb +12 -12
- data/db/migrate/20161115013956_add_currency_format_to_price.rb +6 -6
- data/db/migrate/20161115015227_monetize_product.rb +5 -5
- data/db/migrate/20161115032905_add_stripe_key_to_admin.rb +6 -6
- data/db/migrate/20161124015608_add_order_fields.rb +16 -16
- data/db/migrate/20161207193917_add_seller_to_orders.rb +6 -6
- data/db/migrate/20161208012601_add_price_to_cart_products.rb +6 -6
- data/db/migrate/20161208013402_add_money_to_cart_products.rb +6 -6
- data/db/migrate/20170217183953_create_seller_settings.rb +29 -29
- data/db/migrate/20170218003202_create_admin_settings.rb +24 -24
- data/db/migrate/20170224230449_create_stripe_managed_accounts.rb +9 -9
- data/db/migrate/20170224233736_add_stripe_to_admin_settings.rb +9 -9
- data/db/migrate/20170224235259_add_id_to_settings.rb +6 -6
- data/db/migrate/20170225002939_delete_stripe_accounts.rb +8 -8
- data/db/migrate/20170225003252_add_stripe_account_id_to_seller_settings.rb +5 -5
- data/lib/rails_marketplace.rb +4 -4
- data/lib/rails_marketplace/engine.rb +9 -9
- data/lib/rails_marketplace/version.rb +3 -3
- data/lib/tasks/rails_marketplace_tasks.rake +4 -4
- data/spec/controllers/rails_marketplace/catalog_controller_spec.rb +75 -75
- data/spec/dummy/README.rdoc +28 -28
- data/spec/dummy/Rakefile +6 -6
- data/spec/dummy/app/assets/javascripts/application.js +13 -13
- data/spec/dummy/app/assets/stylesheets/application.css +15 -15
- data/spec/dummy/app/controllers/application_controller.rb +5 -5
- data/spec/dummy/app/helpers/application_helper.rb +2 -2
- data/spec/dummy/app/views/layouts/application.html.erb +14 -14
- data/spec/dummy/bin/bundle +3 -3
- data/spec/dummy/bin/rails +4 -4
- data/spec/dummy/bin/rake +4 -4
- data/spec/dummy/bin/setup +29 -29
- data/spec/dummy/config.ru +4 -4
- data/spec/dummy/config/application.rb +32 -32
- data/spec/dummy/config/boot.rb +5 -5
- data/spec/dummy/config/database.yml +25 -25
- data/spec/dummy/config/environment.rb +5 -5
- data/spec/dummy/config/environments/development.rb +41 -41
- data/spec/dummy/config/environments/production.rb +79 -79
- data/spec/dummy/config/environments/test.rb +42 -42
- data/spec/dummy/config/initializers/assets.rb +11 -11
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -7
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -3
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -4
- data/spec/dummy/config/initializers/inflections.rb +16 -16
- data/spec/dummy/config/initializers/mime_types.rb +4 -4
- data/spec/dummy/config/initializers/session_store.rb +3 -3
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -14
- data/spec/dummy/config/locales/en.yml +23 -23
- data/spec/dummy/config/routes.rb +4 -4
- data/spec/dummy/config/secrets.yml +22 -22
- data/spec/dummy/db/schema.rb +194 -194
- data/spec/dummy/log/development.log +889 -889
- data/spec/dummy/log/test.log +1229 -1229
- data/spec/dummy/public/404.html +67 -67
- data/spec/dummy/public/422.html +67 -67
- data/spec/dummy/public/500.html +66 -66
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/helpers/rails_marketplace/catalog_helper_spec.rb +17 -17
- data/spec/routing/rails_marketplace/catalog_routing_spec.rb +44 -44
- data/spec/spec_helper.rb +44 -44
- data/spec/views/rails_marketplace/catalog/edit.html.erb_spec.rb +15 -15
- data/spec/views/rails_marketplace/catalog/index.html.erb_spec.rb +15 -15
- data/spec/views/rails_marketplace/catalog/new.html.erb_spec.rb +15 -15
- data/spec/views/rails_marketplace/catalog/show.html.erb_spec.rb +12 -12
- metadata +37 -38
@@ -1,4 +1,4 @@
|
|
1
|
-
module RailsMarketplace
|
2
|
-
class ApplicationController < ActionController::Base
|
3
|
-
end
|
4
|
-
end
|
1
|
+
module RailsMarketplace
|
2
|
+
class ApplicationController < ActionController::Base
|
3
|
+
end
|
4
|
+
end
|
@@ -1,172 +1,172 @@
|
|
1
|
-
require_dependency "rails_marketplace/application_controller"
|
2
|
-
|
3
|
-
module RailsMarketplace
|
4
|
-
class CatalogController < ApplicationController
|
5
|
-
|
6
|
-
before_action :set_current_category, :only => [:category_products, :product_detail]
|
7
|
-
before_action :set_current_cart, :only => [:add_to_cart, :purchase, :cart, :cart_update, :cart_delete, :checkout, :charge]
|
8
|
-
after_action :reset_success_orders, :only => [:checkout_success]
|
9
|
-
|
10
|
-
def index
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def category_products
|
15
|
-
@products = @category.products
|
16
|
-
end
|
17
|
-
|
18
|
-
def product_detail
|
19
|
-
@product = Product.friendly.find(params[:title])
|
20
|
-
end
|
21
|
-
|
22
|
-
def add_to_cart
|
23
|
-
@cart.add_product params[:product_id], params[:quantity]
|
24
|
-
redirect_to cart_path
|
25
|
-
end
|
26
|
-
|
27
|
-
def purchase
|
28
|
-
@cart.add_product params[:product_id], params[:quantity]
|
29
|
-
redirect_to checkout_path
|
30
|
-
end
|
31
|
-
|
32
|
-
def cart
|
33
|
-
@cart_quantity = @cart.cart_quantity
|
34
|
-
@cart_subtotal = @cart.cart_subtotal
|
35
|
-
end
|
36
|
-
|
37
|
-
def cart_update
|
38
|
-
@cart.update_product params[:product_id], params[:quantity]
|
39
|
-
end
|
40
|
-
|
41
|
-
def cart_delete
|
42
|
-
@cart.delete_product params[:product_id]
|
43
|
-
redirect_to cart_path
|
44
|
-
end
|
45
|
-
|
46
|
-
def checkout
|
47
|
-
@total = @cart.cart_subtotal
|
48
|
-
@amount = @cart.cart_subtotal.cents
|
49
|
-
@product_groups = @cart.get_product_groups
|
50
|
-
end
|
51
|
-
|
52
|
-
def charge
|
53
|
-
Stripe.api_key = AdminSetting.stripe_secret_key
|
54
|
-
# Amount in cents
|
55
|
-
@subtotal = @cart.cart_subtotal.cents
|
56
|
-
#@shipping_total =
|
57
|
-
#@tax_total =
|
58
|
-
|
59
|
-
charge_total = @subtotal
|
60
|
-
|
61
|
-
# Get the credit card details submitted by the form
|
62
|
-
token = params[:stripeToken]
|
63
|
-
group_order_id = get_new_group_order_id
|
64
|
-
# Create a charge: this will charge the user's card
|
65
|
-
begin
|
66
|
-
charge = Stripe::Charge.create(
|
67
|
-
:amount => charge_total, # Amount in cents
|
68
|
-
:currency => "usd",
|
69
|
-
:source => token,
|
70
|
-
:transfer_group => group_order_id
|
71
|
-
)
|
72
|
-
rescue Stripe::CardError => e
|
73
|
-
# The card has been declined
|
74
|
-
flash[:error] = e.message
|
75
|
-
redirect_to checkout_path
|
76
|
-
end
|
77
|
-
|
78
|
-
order_params = {
|
79
|
-
email: params[:email],
|
80
|
-
fullname: params[:fullname],
|
81
|
-
address1: params[:address1],
|
82
|
-
address2: params[:address2],
|
83
|
-
city: params[:city],
|
84
|
-
state: params[:state],
|
85
|
-
zip: params[:zip],
|
86
|
-
country: params[:country],
|
87
|
-
phone: params[:phone],
|
88
|
-
is_gift: params[:is_gift],
|
89
|
-
gift_message: params[:gift_message]
|
90
|
-
}
|
91
|
-
# group products by seller
|
92
|
-
product_groups = @cart.get_product_groups
|
93
|
-
i = 0
|
94
|
-
product_groups.each do |seller_id, cart_products|
|
95
|
-
i += 1
|
96
|
-
order_params[:id] = "#{group_order_id}-#{i}"
|
97
|
-
order_params[:seller_id] = seller_id
|
98
|
-
order_params[:shipping_method] = params[:shipping_method][seller_id.to_s]
|
99
|
-
|
100
|
-
# transfer to seller account
|
101
|
-
seller_subtotal = get_seller_subtotal(cart_products).cents
|
102
|
-
# seller_shipping_fee = get_seller_shipping seller_id, params[:shipping_method][seller_id.to_s]
|
103
|
-
seller_total = seller_subtotal
|
104
|
-
|
105
|
-
# assumming 5% marketplace fee, 2% stripe fee
|
106
|
-
seller_transfer_total = (seller_total * 0.93).to_i
|
107
|
-
|
108
|
-
# Create a Transfer to a connected account (later):
|
109
|
-
transfer = Stripe::Transfer.create({
|
110
|
-
:amount => seller_transfer_total,
|
111
|
-
:currency => "usd",
|
112
|
-
:destination => "#{SellerSetting.find_by_seller_id(seller_id).stripe_account_id}",
|
113
|
-
:transfer_group => "#{group_order_id}",
|
114
|
-
})
|
115
|
-
|
116
|
-
# save seller's order
|
117
|
-
order = Order.new(order_params)
|
118
|
-
order.save
|
119
|
-
order.save_products cart_products
|
120
|
-
(session[:order_ids] ||= []) << order.id
|
121
|
-
|
122
|
-
end
|
123
|
-
# todo: send email
|
124
|
-
redirect_to checkout_success_path
|
125
|
-
end
|
126
|
-
|
127
|
-
def checkout_success
|
128
|
-
# todo: only show after checkout success
|
129
|
-
if session[:order_ids]
|
130
|
-
@order_ids = session[:order_ids]
|
131
|
-
else
|
132
|
-
redirect_to cart_path
|
133
|
-
end
|
134
|
-
session.delete(:cart_id)
|
135
|
-
end
|
136
|
-
|
137
|
-
|
138
|
-
private
|
139
|
-
def set_current_category
|
140
|
-
if params[:name]
|
141
|
-
session[:current_category_name] = params[:name]
|
142
|
-
end
|
143
|
-
return unless session[:current_category_name]
|
144
|
-
@category ||= Category.friendly.find(session[:current_category_name])
|
145
|
-
end
|
146
|
-
|
147
|
-
def set_current_cart
|
148
|
-
@cart ||= Cart.find(session[:cart_id])
|
149
|
-
|
150
|
-
rescue ActiveRecord::RecordNotFound
|
151
|
-
@cart = Cart.create
|
152
|
-
session[:cart_id] = @cart.id
|
153
|
-
end
|
154
|
-
|
155
|
-
def reset_success_orders
|
156
|
-
session.delete(:order_ids)
|
157
|
-
end
|
158
|
-
|
159
|
-
# todo: generate unique order id
|
160
|
-
def get_new_group_order_id
|
161
|
-
"20170319"
|
162
|
-
end
|
163
|
-
|
164
|
-
def get_seller_subtotal(cart_products)
|
165
|
-
subtotal = 0
|
166
|
-
cart_products.each do |cart_product|
|
167
|
-
subtotal += cart_product.quantity * cart_product.price
|
168
|
-
end
|
169
|
-
subtotal
|
170
|
-
end
|
171
|
-
end
|
1
|
+
require_dependency "rails_marketplace/application_controller"
|
2
|
+
|
3
|
+
module RailsMarketplace
|
4
|
+
class CatalogController < ApplicationController
|
5
|
+
|
6
|
+
before_action :set_current_category, :only => [:category_products, :product_detail]
|
7
|
+
before_action :set_current_cart, :only => [:add_to_cart, :purchase, :cart, :cart_update, :cart_delete, :checkout, :charge]
|
8
|
+
after_action :reset_success_orders, :only => [:checkout_success]
|
9
|
+
|
10
|
+
def index
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def category_products
|
15
|
+
@products = @category.products
|
16
|
+
end
|
17
|
+
|
18
|
+
def product_detail
|
19
|
+
@product = Product.friendly.find(params[:title])
|
20
|
+
end
|
21
|
+
|
22
|
+
def add_to_cart
|
23
|
+
@cart.add_product params[:product_id], params[:quantity]
|
24
|
+
redirect_to cart_path
|
25
|
+
end
|
26
|
+
|
27
|
+
def purchase
|
28
|
+
@cart.add_product params[:product_id], params[:quantity]
|
29
|
+
redirect_to checkout_path
|
30
|
+
end
|
31
|
+
|
32
|
+
def cart
|
33
|
+
@cart_quantity = @cart.cart_quantity
|
34
|
+
@cart_subtotal = @cart.cart_subtotal
|
35
|
+
end
|
36
|
+
|
37
|
+
def cart_update
|
38
|
+
@cart.update_product params[:product_id], params[:quantity]
|
39
|
+
end
|
40
|
+
|
41
|
+
def cart_delete
|
42
|
+
@cart.delete_product params[:product_id]
|
43
|
+
redirect_to cart_path
|
44
|
+
end
|
45
|
+
|
46
|
+
def checkout
|
47
|
+
@total = @cart.cart_subtotal
|
48
|
+
@amount = @cart.cart_subtotal.cents
|
49
|
+
@product_groups = @cart.get_product_groups
|
50
|
+
end
|
51
|
+
|
52
|
+
def charge
|
53
|
+
Stripe.api_key = AdminSetting.stripe_secret_key
|
54
|
+
# Amount in cents
|
55
|
+
@subtotal = @cart.cart_subtotal.cents
|
56
|
+
#@shipping_total =
|
57
|
+
#@tax_total =
|
58
|
+
|
59
|
+
charge_total = @subtotal
|
60
|
+
|
61
|
+
# Get the credit card details submitted by the form
|
62
|
+
token = params[:stripeToken]
|
63
|
+
group_order_id = get_new_group_order_id
|
64
|
+
# Create a charge: this will charge the user's card
|
65
|
+
begin
|
66
|
+
charge = Stripe::Charge.create(
|
67
|
+
:amount => charge_total, # Amount in cents
|
68
|
+
:currency => "usd",
|
69
|
+
:source => token,
|
70
|
+
:transfer_group => group_order_id
|
71
|
+
)
|
72
|
+
rescue Stripe::CardError => e
|
73
|
+
# The card has been declined
|
74
|
+
flash[:error] = e.message
|
75
|
+
redirect_to checkout_path
|
76
|
+
end
|
77
|
+
|
78
|
+
order_params = {
|
79
|
+
email: params[:email],
|
80
|
+
fullname: params[:fullname],
|
81
|
+
address1: params[:address1],
|
82
|
+
address2: params[:address2],
|
83
|
+
city: params[:city],
|
84
|
+
state: params[:state],
|
85
|
+
zip: params[:zip],
|
86
|
+
country: params[:country],
|
87
|
+
phone: params[:phone],
|
88
|
+
is_gift: params[:is_gift],
|
89
|
+
gift_message: params[:gift_message]
|
90
|
+
}
|
91
|
+
# group products by seller
|
92
|
+
product_groups = @cart.get_product_groups
|
93
|
+
i = 0
|
94
|
+
product_groups.each do |seller_id, cart_products|
|
95
|
+
i += 1
|
96
|
+
order_params[:id] = "#{group_order_id}-#{i}"
|
97
|
+
order_params[:seller_id] = seller_id
|
98
|
+
order_params[:shipping_method] = params[:shipping_method][seller_id.to_s]
|
99
|
+
|
100
|
+
# transfer to seller account
|
101
|
+
seller_subtotal = get_seller_subtotal(cart_products).cents
|
102
|
+
# seller_shipping_fee = get_seller_shipping seller_id, params[:shipping_method][seller_id.to_s]
|
103
|
+
seller_total = seller_subtotal
|
104
|
+
|
105
|
+
# assumming 5% marketplace fee, 2% stripe fee
|
106
|
+
seller_transfer_total = (seller_total * 0.93).to_i
|
107
|
+
|
108
|
+
# Create a Transfer to a connected account (later):
|
109
|
+
transfer = Stripe::Transfer.create({
|
110
|
+
:amount => seller_transfer_total,
|
111
|
+
:currency => "usd",
|
112
|
+
:destination => "#{SellerSetting.find_by_seller_id(seller_id).stripe_account_id}",
|
113
|
+
:transfer_group => "#{group_order_id}",
|
114
|
+
})
|
115
|
+
|
116
|
+
# save seller's order
|
117
|
+
order = Order.new(order_params)
|
118
|
+
order.save
|
119
|
+
order.save_products cart_products
|
120
|
+
(session[:order_ids] ||= []) << order.id
|
121
|
+
|
122
|
+
end
|
123
|
+
# todo: send email
|
124
|
+
redirect_to checkout_success_path
|
125
|
+
end
|
126
|
+
|
127
|
+
def checkout_success
|
128
|
+
# todo: only show after checkout success
|
129
|
+
if session[:order_ids]
|
130
|
+
@order_ids = session[:order_ids]
|
131
|
+
else
|
132
|
+
redirect_to cart_path
|
133
|
+
end
|
134
|
+
session.delete(:cart_id)
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
private
|
139
|
+
def set_current_category
|
140
|
+
if params[:name]
|
141
|
+
session[:current_category_name] = params[:name]
|
142
|
+
end
|
143
|
+
return unless session[:current_category_name]
|
144
|
+
@category ||= Category.friendly.find(session[:current_category_name])
|
145
|
+
end
|
146
|
+
|
147
|
+
def set_current_cart
|
148
|
+
@cart ||= Cart.find(session[:cart_id])
|
149
|
+
|
150
|
+
rescue ActiveRecord::RecordNotFound
|
151
|
+
@cart = Cart.create
|
152
|
+
session[:cart_id] = @cart.id
|
153
|
+
end
|
154
|
+
|
155
|
+
def reset_success_orders
|
156
|
+
session.delete(:order_ids)
|
157
|
+
end
|
158
|
+
|
159
|
+
# todo: generate unique order id
|
160
|
+
def get_new_group_order_id
|
161
|
+
"20170319"
|
162
|
+
end
|
163
|
+
|
164
|
+
def get_seller_subtotal(cart_products)
|
165
|
+
subtotal = 0
|
166
|
+
cart_products.each do |cart_product|
|
167
|
+
subtotal += cart_product.quantity * cart_product.price
|
168
|
+
end
|
169
|
+
subtotal
|
170
|
+
end
|
171
|
+
end
|
172
172
|
end
|
@@ -1,181 +1,181 @@
|
|
1
|
-
require_dependency "rails_marketplace/application_controller"
|
2
|
-
|
3
|
-
module RailsMarketplace
|
4
|
-
class SellerController < ApplicationController
|
5
|
-
layout 'rails_marketplace/seller_central'
|
6
|
-
include SellerHelper
|
7
|
-
|
8
|
-
before_action :require_login, :except => [:login_form, :login, :signup_form, :signup]
|
9
|
-
before_action :set_current_seller
|
10
|
-
before_action :set_current_product, :only => [:edit_product, :update_product, :delete_product]
|
11
|
-
|
12
|
-
def login_form
|
13
|
-
if seller_logged_in?
|
14
|
-
redirect_to seller_dashboard_path
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def login
|
19
|
-
seller = Seller.find_by(email: params[:seller][:email].downcase)
|
20
|
-
if seller && seller.authenticate(params[:seller][:password])
|
21
|
-
seller_log_in seller
|
22
|
-
redirect_to seller_dashboard_path
|
23
|
-
else
|
24
|
-
flash[:error] = 'Invalid email/password combination'
|
25
|
-
render 'login_form'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def signup_form
|
30
|
-
@seller = Seller.new
|
31
|
-
end
|
32
|
-
|
33
|
-
def signup
|
34
|
-
@seller = Seller.new(seller_params)
|
35
|
-
if @seller.save
|
36
|
-
if @seller.seller_setting.nil?
|
37
|
-
SellerSetting.create seller_id: @seller.id
|
38
|
-
|
39
|
-
Stripe.api_key = AdminSetting.stripe_secret_key
|
40
|
-
|
41
|
-
managed_account = Stripe::Account.create(
|
42
|
-
:managed => true,
|
43
|
-
:country => 'US',
|
44
|
-
:email => @seller.email
|
45
|
-
)
|
46
|
-
|
47
|
-
seller_setting = SellerSetting.find_by_seller_id(@seller.id)
|
48
|
-
seller_setting.update_attributes({:stripe_account_id => managed_account.id, :stripe_secret_key => managed_account.keys.secret, :stripe_publishable_key => managed_account.keys.publishable})
|
49
|
-
end
|
50
|
-
seller_log_in @seller
|
51
|
-
redirect_to seller_dashboard_path
|
52
|
-
else
|
53
|
-
render 'signup_form'
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def logout
|
58
|
-
seller_log_out
|
59
|
-
redirect_to seller_login_path
|
60
|
-
end
|
61
|
-
|
62
|
-
def dashboard
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def products
|
67
|
-
@products = Product.where(seller: @current_seller)
|
68
|
-
end
|
69
|
-
|
70
|
-
def add_product
|
71
|
-
@product = Product.new
|
72
|
-
end
|
73
|
-
|
74
|
-
def create_product
|
75
|
-
@product = Product.new(product_params)
|
76
|
-
@product.seller = @current_seller
|
77
|
-
if @product.save
|
78
|
-
flash[:notice] = 'New product was successfully added!'
|
79
|
-
redirect_to seller_products_path
|
80
|
-
else
|
81
|
-
render 'add_product'
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def edit_product
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
def update_product
|
90
|
-
if @product.update_attributes(product_params)
|
91
|
-
flash[:notice] = 'Product was successfully updated!'
|
92
|
-
redirect_to seller_products_path
|
93
|
-
else
|
94
|
-
render 'update_product'
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def delete_product
|
99
|
-
@product.destroy
|
100
|
-
redirect_to seller_products_path
|
101
|
-
end
|
102
|
-
|
103
|
-
def add_bulk_products
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
def orders
|
108
|
-
@orders = Order.where(seller_id: @current_seller.id)
|
109
|
-
# @order_products = OrderProduct.where(seller: @current_seller)
|
110
|
-
end
|
111
|
-
|
112
|
-
def order_details
|
113
|
-
order_id = params[:order_id]
|
114
|
-
@order = Order.find(order_id)
|
115
|
-
if @order.seller_id != @current_seller.id
|
116
|
-
flash[:error] = "The page you’re looking for could not be found. Please make sure the web address is correct."
|
117
|
-
redirect_to seller_orders_path
|
118
|
-
end
|
119
|
-
|
120
|
-
@order_products = @order.order_products
|
121
|
-
end
|
122
|
-
|
123
|
-
def settings_general
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
def settings_general_update
|
128
|
-
@current_seller.update_attributes(seller_params)
|
129
|
-
redirect_to seller_dashboard_path
|
130
|
-
end
|
131
|
-
|
132
|
-
def settings_shipping
|
133
|
-
|
134
|
-
end
|
135
|
-
|
136
|
-
def settings_shipping_update
|
137
|
-
|
138
|
-
end
|
139
|
-
|
140
|
-
def settings_payment
|
141
|
-
|
142
|
-
end
|
143
|
-
|
144
|
-
def settings_payment_update
|
145
|
-
|
146
|
-
end
|
147
|
-
|
148
|
-
def settings_tax
|
149
|
-
|
150
|
-
end
|
151
|
-
|
152
|
-
|
153
|
-
private
|
154
|
-
|
155
|
-
def seller_params
|
156
|
-
params.require(:seller).permit(:first_name, :last_name, :email, :password,
|
157
|
-
:password_confirmation)
|
158
|
-
end
|
159
|
-
|
160
|
-
def set_current_seller
|
161
|
-
return unless session[:seller_id]
|
162
|
-
@current_seller ||= Seller.find(session[:seller_id])
|
163
|
-
end
|
164
|
-
|
165
|
-
def require_login
|
166
|
-
unless seller_logged_in?
|
167
|
-
flash[:error] = "You must be logged in to access this section"
|
168
|
-
redirect_to seller_login_path # halts request cycle
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
def product_params
|
173
|
-
params.require(:product).permit(:title, :description, :price, :quantity, {images: []}, {files: []}, {category_ids: []})
|
174
|
-
end
|
175
|
-
|
176
|
-
def set_current_product
|
177
|
-
return unless params[:id]
|
178
|
-
@product ||= Product.find(params[:id])
|
179
|
-
end
|
180
|
-
end
|
1
|
+
require_dependency "rails_marketplace/application_controller"
|
2
|
+
|
3
|
+
module RailsMarketplace
|
4
|
+
class SellerController < ApplicationController
|
5
|
+
layout 'rails_marketplace/seller_central'
|
6
|
+
include SellerHelper
|
7
|
+
|
8
|
+
before_action :require_login, :except => [:login_form, :login, :signup_form, :signup]
|
9
|
+
before_action :set_current_seller
|
10
|
+
before_action :set_current_product, :only => [:edit_product, :update_product, :delete_product]
|
11
|
+
|
12
|
+
def login_form
|
13
|
+
if seller_logged_in?
|
14
|
+
redirect_to seller_dashboard_path
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def login
|
19
|
+
seller = Seller.find_by(email: params[:seller][:email].downcase)
|
20
|
+
if seller && seller.authenticate(params[:seller][:password])
|
21
|
+
seller_log_in seller
|
22
|
+
redirect_to seller_dashboard_path
|
23
|
+
else
|
24
|
+
flash[:error] = 'Invalid email/password combination'
|
25
|
+
render 'login_form'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def signup_form
|
30
|
+
@seller = Seller.new
|
31
|
+
end
|
32
|
+
|
33
|
+
def signup
|
34
|
+
@seller = Seller.new(seller_params)
|
35
|
+
if @seller.save
|
36
|
+
if @seller.seller_setting.nil?
|
37
|
+
SellerSetting.create seller_id: @seller.id
|
38
|
+
|
39
|
+
Stripe.api_key = AdminSetting.stripe_secret_key
|
40
|
+
|
41
|
+
managed_account = Stripe::Account.create(
|
42
|
+
:managed => true,
|
43
|
+
:country => 'US',
|
44
|
+
:email => @seller.email
|
45
|
+
)
|
46
|
+
|
47
|
+
seller_setting = SellerSetting.find_by_seller_id(@seller.id)
|
48
|
+
seller_setting.update_attributes({:stripe_account_id => managed_account.id, :stripe_secret_key => managed_account.keys.secret, :stripe_publishable_key => managed_account.keys.publishable})
|
49
|
+
end
|
50
|
+
seller_log_in @seller
|
51
|
+
redirect_to seller_dashboard_path
|
52
|
+
else
|
53
|
+
render 'signup_form'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def logout
|
58
|
+
seller_log_out
|
59
|
+
redirect_to seller_login_path
|
60
|
+
end
|
61
|
+
|
62
|
+
def dashboard
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
def products
|
67
|
+
@products = Product.where(seller: @current_seller)
|
68
|
+
end
|
69
|
+
|
70
|
+
def add_product
|
71
|
+
@product = Product.new
|
72
|
+
end
|
73
|
+
|
74
|
+
def create_product
|
75
|
+
@product = Product.new(product_params)
|
76
|
+
@product.seller = @current_seller
|
77
|
+
if @product.save
|
78
|
+
flash[:notice] = 'New product was successfully added!'
|
79
|
+
redirect_to seller_products_path
|
80
|
+
else
|
81
|
+
render 'add_product'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def edit_product
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
def update_product
|
90
|
+
if @product.update_attributes(product_params)
|
91
|
+
flash[:notice] = 'Product was successfully updated!'
|
92
|
+
redirect_to seller_products_path
|
93
|
+
else
|
94
|
+
render 'update_product'
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def delete_product
|
99
|
+
@product.destroy
|
100
|
+
redirect_to seller_products_path
|
101
|
+
end
|
102
|
+
|
103
|
+
def add_bulk_products
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def orders
|
108
|
+
@orders = Order.where(seller_id: @current_seller.id)
|
109
|
+
# @order_products = OrderProduct.where(seller: @current_seller)
|
110
|
+
end
|
111
|
+
|
112
|
+
def order_details
|
113
|
+
order_id = params[:order_id]
|
114
|
+
@order = Order.find(order_id)
|
115
|
+
if @order.seller_id != @current_seller.id
|
116
|
+
flash[:error] = "The page you’re looking for could not be found. Please make sure the web address is correct."
|
117
|
+
redirect_to seller_orders_path
|
118
|
+
end
|
119
|
+
|
120
|
+
@order_products = @order.order_products
|
121
|
+
end
|
122
|
+
|
123
|
+
def settings_general
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
def settings_general_update
|
128
|
+
@current_seller.update_attributes(seller_params)
|
129
|
+
redirect_to seller_dashboard_path
|
130
|
+
end
|
131
|
+
|
132
|
+
def settings_shipping
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
def settings_shipping_update
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
def settings_payment
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
def settings_payment_update
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
def settings_tax
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
private
|
154
|
+
|
155
|
+
def seller_params
|
156
|
+
params.require(:seller).permit(:first_name, :last_name, :email, :password,
|
157
|
+
:password_confirmation)
|
158
|
+
end
|
159
|
+
|
160
|
+
def set_current_seller
|
161
|
+
return unless session[:seller_id]
|
162
|
+
@current_seller ||= Seller.find(session[:seller_id])
|
163
|
+
end
|
164
|
+
|
165
|
+
def require_login
|
166
|
+
unless seller_logged_in?
|
167
|
+
flash[:error] = "You must be logged in to access this section"
|
168
|
+
redirect_to seller_login_path # halts request cycle
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def product_params
|
173
|
+
params.require(:product).permit(:title, :description, :price, :quantity, {images: []}, {files: []}, {category_ids: []})
|
174
|
+
end
|
175
|
+
|
176
|
+
def set_current_product
|
177
|
+
return unless params[:id]
|
178
|
+
@product ||= Product.find(params[:id])
|
179
|
+
end
|
180
|
+
end
|
181
181
|
end
|