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