Having the following shopping cart process:
- The customer may add a product to the shopping cart only after opening it.
- When selecting and adding a product to the basket customer needs to provide the quantity chosen. The product price is calculated by the system based on the current price list.
- The customer may remove a product with a given price from the cart.
- The customer can confirm the shopping cart and start the order fulfilment process.
- The customer may also cancel the shopping cart and reject all selected products.
- After shopping cart confirmation or cancellation, the product can no longer be added or removed from the cart.
Write the code that fulfils this logic. Remember that in Event Sourcing each business operation has to result with a new business fact (so event). Use events and entities defined in previous exercises.
There are two variations:
- using mutable entities: Mutable/BusinessLogicTests.cs,
- using fully immutable structures: Immutable/BusinessLogicTests.cs.
Select your preferred approach (or both) to solve this use case.
Note: If needed update entities, events or test setup structure