The shopping cart is an implementation of an IShoppingCart abstraction.
Shopping cart model
Properties:
id
list of line items
decimal Subtotal
TaxAmount Taxes
decimal Total
int ItemCount
Methods:
Add(productId, quantity, attributeValues)
Remove(productId, attributeValues)
Clear()
TBD: how do we interface this with shipping? Nwazet stores country, zip code, and shipping option on the cart.
Note: some missing methods from Nwazet may be added back as needed. Some signatures simplified and some methods changed to properties. This is all subject to revision, of course.
Shopping cart line items
Quantity
Product
attributeValues
Price
OriginalPrice
Implementations
Implementations of the shopping cart abstraction will have pluggable persistence (client storage, database, session, etc.). Details TBD.
Rendering
The cart is rendered through a widget, which has a shopping cart part that is responsible for querying the shopping cart from the active implementation and generate a shape from it.
The checkout page will also interact with the shopping cart (in Nwazet, there's a checkout controller with its own views, we may or may not do things differently to allow for more flexibility; we may also introduce more workflow features).
The shopping cart is an implementation of an
IShoppingCart
abstraction.Shopping cart model
Properties:
Methods:
TBD: how do we interface this with shipping? Nwazet stores country, zip code, and shipping option on the cart.
Note: some missing methods from Nwazet may be added back as needed. Some signatures simplified and some methods changed to properties. This is all subject to revision, of course.
Shopping cart line items
Implementations
Implementations of the shopping cart abstraction will have pluggable persistence (client storage, database, session, etc.). Details TBD.
Rendering
The cart is rendered through a widget, which has a shopping cart part that is responsible for querying the shopping cart from the active implementation and generate a shape from it.
The checkout page will also interact with the shopping cart (in Nwazet, there's a checkout controller with its own views, we may or may not do things differently to allow for more flexibility; we may also introduce more workflow features).