app/assets/javascripts/rightnow_oms/app/models/cart.js.coffee in rightnow_oms-0.1.4 vs app/assets/javascripts/rightnow_oms/app/models/cart.js.coffee in rightnow_oms-0.1.6

- old
+ new

@@ -1,80 +1,102 @@ RightnowOms.Cart = DS.Model.extend - cartItems: (-> - RightnowOms.CartItem.all() - ).property() + cart_items: DS.hasMany('RightnowOms.CartItem', { embedded: true }) - cartableCount: (-> + # TODO Use cart_items instead + cartItems: Ember.computed(-> + @get('cart_items') + ).property("cart_items") + + cartableCount: Ember.computed(-> count = 0 - @get('cartItems').forEach (item) -> + @get('cart_items').forEach (item) -> count += item.get('quantity') unless item.get('hasParent') count - ).property("cartItems.@each.quantity") + ).property("cart_items.@each.quantity") - total: (-> + total: Ember.computed(-> total = 0 - @get('cartItems').forEach (item) -> + @get('cart_items').forEach (item) -> total += item.get('price') * item.get('quantity') unless item.get('hasParent') round(total, 2) - ).property("cartItems.@each.quantity", "cartItems.@each.price") + ).property("cart_items.@each.quantity", "cart_items.@each.price") addCartItem: (item) -> return @createCartItem(item) if item.mergable == false - cartItem = RightnowOms.CartItem.findByCartableAndParentId(item.cartable_id, item.cartable_type, item.parent_id) + cartItem = @findCartItemByCartable(item.cartable_id, item.cartable_type) - if cartItem? - cartItem.increase() unless cartItem.get('parent')? + if cartItem? && !cartItem.get('hasParent') + cartItem.increase() else cartItem = @createCartItem(item) cartItem createCartItem: (item)-> - cartItem = RightnowOms.store.createRecord(RightnowOms.CartItem, item) + cartItem = RightnowOms.CartItem.createRecord(item) + @get('cart_items').pushObject(cartItem) - if cartItem.get('hasParent') - cartItem.get('parent').set('children', RightnowOms.CartItem.findByParentId(cartItem.get('id'))) + return cartItem if !(item.children && item.children.length > 0) + return cartItem.addChild(c) for c in item.children if cartItem.get('id')? + + afterCartItemCreated = -> + if (!cartItem.get('isDirty')) && (!cartItem.get('isDeleted')) + cartItem.addChild(c) for c in item.children + cartItem.removeObserver('isDirty', afterCartItemCreated) + RightnowOms.commit(true) if RightnowOms.config.get('autoCommit') + + cartItem.addObserver('isDirty', afterCartItemCreated) + cartItem updateCartItem: (id, properties) -> - cartItem = RightnowOms.CartItem.findById(id) + cartItem = @findCartItemById(id) cartItem.setProperties(properties) if cartItem? cleanUp: -> - cartItemIds = @get('cartItems').map (item) -> + cartItemIds = @get('cart_items').map (item) -> return item.get('id') + self = @ cartItemIds.forEach (id) -> - item = RightnowOms.CartItem.findById(id) + self.removeCartItem(id) - # INFO Children will be deleted when the parent is deleted - item.deleteRecord() if item && !item.get('hasParent') - removeCartItem: (id) -> - cartItem = RightnowOms.CartItem.findById(id) - + cartItem = @findCartItemById(id) + @get('cart_items').removeObject(cartItem) cartItem.deleteRecord() if cartItem? cartItem increaseCartItem: (id) -> - cartItem = RightnowOms.CartItem.findById(id) - + cartItem = @findCartItemById(id) cartItem.increase() + cartItem decreaseCartItem: (id) -> - cartItem = RightnowOms.CartItem.findById(id) - + cartItem = @findCartItemById(id) cartItem.decrease() + cartItem + # TODO Rename to findAllCartItemsInGroup() findCartItemsByGroup: (group) -> - @get('cartItems').filter (item) -> + @get('cart_items').filter (item) -> return true if item.get('group') == group + + # @private + findCartItemById: (id) -> + @get('cart_items').filterProperty('id', id)[0] + + # @private + findCartItemByCartable: (cartableId, cartableType) -> + @get('cart_items').filter((item) -> + return true if item.get('cartable_id') == cartableId && item.get('cartable_type') == cartableType + ).get('firstObject') RightnowOms.Cart.reopenClass isSingleton: true