Merge branch 'master' of https://github.com/senaduka/ribica
This commit is contained in:
@@ -23,11 +23,11 @@ ActiveRecord::Schema.define(version: 20150319104317) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "anonymous_id_string"
|
t.string "anonymous_id_string"
|
||||||
t.integer "delivery_destination_id"
|
t.integer "delivery_destination_id"
|
||||||
t.boolean "confirmed", default: false
|
t.boolean "confirmed"
|
||||||
t.boolean "packed", default: false
|
t.boolean "packed"
|
||||||
t.boolean "canceled_on_check", default: false
|
t.boolean "canceled_on_check"
|
||||||
t.boolean "canceled_on_delivery", default: false
|
t.boolean "canceled_on_delivery"
|
||||||
t.boolean "delivered", default: false
|
t.boolean "delivered"
|
||||||
t.text "internal_note"
|
t.text "internal_note"
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -101,6 +101,7 @@ ActiveRecord::Schema.define(version: 20150319104317) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "tags"
|
t.string "tags"
|
||||||
t.json "traits"
|
t.json "traits"
|
||||||
|
t.integer "supplier_id"
|
||||||
t.decimal "weight", precision: 5, scale: 3
|
t.decimal "weight", precision: 5, scale: 3
|
||||||
t.integer "special_offer_id"
|
t.integer "special_offer_id"
|
||||||
t.integer "supplier_id"
|
t.integer "supplier_id"
|
||||||
|
|||||||
@@ -3,12 +3,48 @@ class Cart < ActiveRecord::Base
|
|||||||
belongs_to :delivery_destination
|
belongs_to :delivery_destination
|
||||||
|
|
||||||
def self.find_or_create(anonymous_id, user_id)
|
def self.find_or_create(anonymous_id, user_id)
|
||||||
cart = Cart.where(user_id: user_id).where(ordered: false).first
|
cart = nil
|
||||||
cart ||= Cart.where(anonymous_id_string: anonymous_id).where(ordered: false).first
|
ActiveRecord::Base.transaction do
|
||||||
|
|
||||||
|
logged_in_user_cart = Cart.where(user_id: user_id).where(ordered: false).first
|
||||||
|
anonymous_user_cart = Cart.where(anonymous_id_string: anonymous_id).where(ordered: false).first
|
||||||
|
|
||||||
safe_user_id = (user_id > 0) ? user_id : nil
|
safe_user_id = (user_id > 0) ? user_id : nil
|
||||||
cart ||= Cart.create!(anonymous_id_string: anonymous_id, user_id: safe_user_id, ordered: false )
|
if safe_user_id.nil?
|
||||||
|
cart = anonymous_user_cart || Cart.create!(anonymous_id_string: anonymous_id, user_id: safe_user_id, ordered: false )
|
||||||
|
else
|
||||||
|
cart = logged_in_user_cart || Cart.create!(anonymous_id_string: nil, user_id: safe_user_id, ordered: false )
|
||||||
|
logged_in_user_cart = cart
|
||||||
|
end
|
||||||
|
|
||||||
|
# add the contents of anonymous cart
|
||||||
|
# to the logged in one on login
|
||||||
|
if logged_in_user_cart and anonymous_user_cart
|
||||||
|
logged_in_items = logged_in_user_cart.item_in_carts
|
||||||
|
anonymous_user_cart.item_in_carts.each do |a_item|
|
||||||
|
item_exists = false
|
||||||
|
|
||||||
|
logged_in_items.each do |l_item|
|
||||||
|
if a_item.item_id == l_item.item_id
|
||||||
|
l_item.count += a_item.count
|
||||||
|
l_item.save!
|
||||||
|
a_item.destroy
|
||||||
|
item_exists = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
unless item_exists
|
||||||
|
a_item.cart_id = logged_in_user_cart.id
|
||||||
|
a_item.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
cart.delivery_destination ||= DeliveryDestination.create_from_last(anonymous_id, safe_user_id);
|
cart.delivery_destination ||= DeliveryDestination.create_from_last(anonymous_id, safe_user_id);
|
||||||
cart.save!
|
cart.save!
|
||||||
|
|
||||||
|
end
|
||||||
return cart
|
return cart
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ var AppDispatcher = require('../dispatcher/appDispatcher');
|
|||||||
var EventEmitter = require('events').EventEmitter;
|
var EventEmitter = require('events').EventEmitter;
|
||||||
var UserConstants = require('../constants/userConstants');
|
var UserConstants = require('../constants/userConstants');
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
var NavigationActions = require('../actions/navigationActions');
|
var CartActions = require('../actions/cartActions');
|
||||||
|
var InitializationActions = require('../actions/initializationActions');
|
||||||
var _registrationState = {};
|
var _registrationState = {};
|
||||||
var _loginState = {};
|
var _loginState = {};
|
||||||
|
|
||||||
@@ -29,6 +30,8 @@ var handleLoginSuccess = function(user) {
|
|||||||
user: user
|
user: user
|
||||||
};
|
};
|
||||||
|
|
||||||
|
refreshCart();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var handleLoginFailure = function(error) {
|
var handleLoginFailure = function(error) {
|
||||||
@@ -40,12 +43,12 @@ var handleLoginFailure = function(error) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var handleCheckLoginArrived = function(user, error) {
|
var handleCheckLoginArrived = function(user, error) {
|
||||||
if(user) {
|
if (user) {
|
||||||
_loginState = {
|
_loginState = {
|
||||||
loggedIn: true,
|
loggedIn: true,
|
||||||
user: user
|
user: user
|
||||||
};
|
};
|
||||||
} else{
|
} else {
|
||||||
_loginState = {
|
_loginState = {
|
||||||
loggedIn: false
|
loggedIn: false
|
||||||
};
|
};
|
||||||
@@ -57,8 +60,23 @@ var handleLogoutDone = function() {
|
|||||||
_loginState = {
|
_loginState = {
|
||||||
loggedIn: false
|
loggedIn: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshCart();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var refreshCart = function() {
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
// needed for cart reset
|
||||||
|
InitializationActions.initialize();
|
||||||
|
setTimeout(function() {
|
||||||
|
// reload the items
|
||||||
|
CartActions.load();
|
||||||
|
}, 0);
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Extend SectionStore with EventEmitter to add eventing capabilities
|
// Extend SectionStore with EventEmitter to add eventing capabilities
|
||||||
var UserStore = _.extend({}, EventEmitter.prototype, {
|
var UserStore = _.extend({}, EventEmitter.prototype, {
|
||||||
|
|
||||||
@@ -92,7 +110,7 @@ AppDispatcher.register(function(payload) {
|
|||||||
var action = payload.action;
|
var action = payload.action;
|
||||||
var text;
|
var text;
|
||||||
|
|
||||||
switch(action.actionType) {
|
switch (action.actionType) {
|
||||||
|
|
||||||
|
|
||||||
case UserConstants.REGISTRATION_SUCCESS:
|
case UserConstants.REGISTRATION_SUCCESS:
|
||||||
|
|||||||
Reference in New Issue
Block a user