@startuml participant Customer participant OrderController participant Cart participant OrderManagement participant Spring participant "order1:CustomOrder" as order1 == Add products to an event == Customer --> OrderController : event(Model model) activate Customer activate OrderController OrderController --> Cart : iterator() activate Cart OrderController <-- Cart : Iterator deactivate Cart OrderController --> Spring : model.addAttribute() activate Spring OrderController <-- Spring : Model deactivate Spring Customer <-- OrderController : "event.html" deactivate OrderController Customer --> OrderController : addProduct() activate OrderController OrderController --> Cart : addOrUpdateItem() activate Cart OrderController <-- Cart deactivate Cart OrderController --> Spring : model.addAttribute() activate Spring OrderController <-- Spring : Model deactivate Spring Customer <-- OrderController : "redirect:/event.html" deactivate OrderController deactivate Customer == Checkout (finish event planning) == Customer --> OrderController : checkout() activate Customer activate OrderController create order1 OrderController --> order1 : new Order() activate order1 OrderController <-- order1 : Order deactivate order1 OrderController --> Cart : addItemsTo(order1) activate Cart OrderController <-- Cart deactivate Cart OrderController --> OrderManagement : payOrder(order1) activate OrderManagement OrderController <-- OrderManagement OrderController --> OrderManagement : completeOrder(order1) OrderController <-- OrderManagement deactivate OrderManagement OrderController --> Cart : clear() activate Cart OrderController <-- Cart deactivate Cart Customer <-- OrderController : "redirect:/cart.html" deactivate Customer deactivate OrderController == List orders == Customer --> OrderController : orders() activate Customer activate OrderController OrderController --> OrderManagement : findAll() activate OrderManagement OrderController <-- OrderManagement : Page deactivate OrderManagement OrderController --> Spring : model.addAttribute() activate Spring OrderController <-- Spring : Model deactivate Spring Customer <-- OrderController : "orders.html" @enduml