@startuml 'maybe for mathis kral since he did videoshop:order-limit' 'maybe for eren since he did videoshop:clickable-cart-item' 'maybe for erik since he did videoshop:cart-remove' skinparam linetype ortho skinparam groupInheritance 2 package Spring { interface Model } package Salespoint { interface OrderManager <<"T > Order">> class Cart class Cash class Order class Quantity class UserAccount class Product enum OrderStatus note "Uses Rentable and Consumable from package Catalog" as N2 Product .. N2 } package catering.order { class CustomOrder { - start : LocalDateTime - finish : LocalDateTime } enum OrderType { EVENT_CATERIN RENT_A_COOK BREAKFAST_SERVICE SOMETHING_ELSE } note "This could be extended, too" as N1 class OrderController { + OrderController() + initializeCart() : Cart + addProductToCart(product : Product, amount : int, cart: Cart) + addProductToOrder(product : Product, order : Order, amount : int) + removeProductFromOrder(product : Product, order : Order, amount : int) + complete(cart : Cart, userAccount : UserAccount) : String + getOrders(model : Model) : String + cancelOrder(order : Order) : boolean + getWorkingHours(employee : Employee) : Map + getRents(rentable : Rentable) : List> + TODOOO() } OrderController ---> OrderManager : "-orderManager" OrderController ..> Model OrderController ...> UserAccount OrderController ...> Order OrderController ...> OrderStatus OrderController ...> Cash OrderController ...> Quantity OrderController ...> Cart OrderController ...> CustomOrder CustomOrder o--- "1" OrderType : -orderType N1 ..> OrderType } OrderController ...> Salespoint.Product CustomOrder ---|> Salespoint.Order CustomOrder ...> time.LocalDateTime CustomOrder ...> time.DateTimeFormatter package time { class LocalDateTime class DateTimeFormatter } @enduml