diff --git a/src/main/asciidoc/models/design/order.puml b/src/main/asciidoc/models/design/order.puml index aa0aa14..df344f6 100644 --- a/src/main/asciidoc/models/design/order.puml +++ b/src/main/asciidoc/models/design/order.puml @@ -9,7 +9,9 @@ package Spring { } package Salespoint { - interface OrderManager + interface OrderManagement + interface Repository + class UniqueInventory class Cart class Cash class Order @@ -22,66 +24,98 @@ package Salespoint { Product .. N2 } +package catalog { + interface CateringCatalog +} -package catering.order { - class CustomOrder { - - start : LocalDateTime - - finish : LocalDateTime - + getDurationInSeconds(start:LocalDateTime,finish:LocalDateTime): long - + getDurationInHours(start:LocalDateTime,finish:LocalDateTime): long - + min(a:LocalDateTime,b:LocalDateTime): LocalDateTime - + max(b:LocalDateTime,b:LocalDateTime): LocalDateTime - + getDurationInSecondsDuringMonth(month:YearMonth): long - } - CustomOrder ..> time.LocalDateTime - CustomOrder ..> time.YearMonth - - enum EventType { - EVENT_CATERING - RENT_A_COOK - BREAKFAST_SERVICE - PARTY_SERVICE - } - - note "This could be extended, too" as N1 - +package order { class OrderController { - + OrderController() - + initializeCart() : Cart - + planEvent(model : Model) : String - + addProduct(productForm : ProductForm, model : Model) : String - + removeProduct(product : Product, model : Model) : String - + checkout(userAccount : UserAccount, model : Model) : String - + getOrders(model : Model) : String - + removeOrder(order : Order) : boolean - + invoice(model : Model, userAccount : UserAccount, order : Order) : String + +OrderController(oM: OrderManagement, cOR: CustomOrderRepository, inv: UniqueInventory, cat: CateringCatalog, stM: StaffManagement) + +orders(model: Model, userAccount: Optional): String + +orders(model: Model): String + +orders(model: Model, String day): String + ~initializeCart(): CustomCart + +event(model: Model, cart: CustomCart): String + +addEmployeeToCart(empId: long, cart: CustomCart): String + +removeEmployeeFromCart(empId: long, cart: CustomCart): String + +removeOrder(orderId: Order.OrderIdentifier, userAccount: Optional): String + +addProduct(product: Product, number: int, cart: CustomCart): String + +removeProduct(itemId: String, cart: CustomCart): String + +changeDate(start: LocalDate, startHour: Optional, finish: LocalDate, finishHour: Optional, cart: CustomCart): String + +checkout(cart: CustomCart, userAccount: Optional): String + +changeOrderType(orderType: String, cart: CustomCart): String + +{static}findFreeAmountInInterval(product: Rentable, start: LocalDatetime, finish: LocalDatetime, inv: UniqueInventory, cOR: CustomOrderRepository): Quantity + +calender(model: Model): String + +invoice(model: Model, userAccount: UserAccount, order: Order): String } - class ProductForm + interface CustomOrderRepository { + +findOrdersByInterval(start: LocalDateTime, finish: LocalDateTime): Streamable + } - OrderController ---> OrderManager : "-orderManager" - OrderController ---> Cart : "-cart" - OrderController ..> Model - OrderController ...> UserAccount - OrderController ...> OrderStatus - OrderController ...> Cash - OrderController ...> Quantity - OrderController ...> CustomOrder - CustomOrder o--- "1" EventType : -eventType - OrderController ...> ProductForm - N1 ..> EventType + class CustomCart { + -formatterPattern: String + +CustomCart(orderType: OrderType, start: LocalDateTime, finish: LocalDateTime) + +addEmployee(employee: Employee): boolean + +removeEmployee(employee: Employee): boolean + +addStaffTo(order: CustomOrder): CustomOrder + +addRentablesTo(order: CustomOrder, inv: UniqueInventory): CustomOrder + +getDurationInHours(): int + +getPrice(): MonetaryAmount + +clear() + } + + class CustomOrder { + -id: Long + -formatterPattern: String + +CustomOrder() + +CustomOrder(identifier: UserAccount.UserAccountIdentifier, cart: CustomCart) + +getDurationInSeconds(): long + -getDurationInHours(start: LocalDateTime, finish: LocalDateTime): long + -{static}min(a: LocalDateTime, b: LocalDateTime): LocalDateTime + -{static}max(a: LocalDateTime, b: LocalDateTime): LocalDateTime + +getDurationInSecondsDuringMonth(month: YearMonth): long + +addEmployee(employee: Employee): boolean + } + + enum OrderType { + +toHumanReadable(): String + } } -OrderController ...> Salespoint.Product -CustomOrder --|> Salespoint.Order -CustomOrder ...> time.LocalDateTime -CustomOrder ...> time.DateTimeFormatter -OrderController .....> catering.orderCatalog.OrderCatalogEntry - -package time { - class LocalDateTime - class DateTimeFormatter - class YearMonth +package javax.money { + interface MonetaryAmount } +OrderController o--------> OrderManagement: -orderManagement +OrderController o--------> CustomOrderRepository: -customOrderRepository +CustomOrderRepository --------|> Repository +OrderController o--------> UniqueInventory: -inventory +OrderController o--------> catalog.CateringCatalog: -catalog +OrderController o--------> staff.StaffManagement: -staffManagement +OrderController ........> Product +OrderController ........> Cash +OrderController ........> OrderStatus + +OrderController ........> UserAccount +OrderController ........> time.LocalDate +OrderController ........> time.LocalDateTime +OrderController ........> Salespoint.Quantity +OrderController ........> Spring.Model + +CustomCart -------|> Cart +CustomCart o-------> staff.Employee: -staff: Set +CustomCart o-------> OrderType: -orderType +CustomCart o-------> time.LocalDateTime: -start +CustomCart o-------> time.LocalDateTime: -finish +CustomCart ........> javax.money.MonetaryAmount + +CustomOrder -------|> Order +CustomOrder o-------> staff.Employee: -staff: Set +CustomOrder o-------> OrderType: -orderType +CustomOrder o-------> time.LocalDateTime: -start +CustomOrder o-------> time.LocalDateTime: -finish +CustomOrder .......> UserAccount +CustomOrder .......> time.YearMonth + @enduml diff --git a/src/main/asciidoc/models/design/order.svg b/src/main/asciidoc/models/design/order.svg index 6cae087..b2a11a4 100644 --- a/src/main/asciidoc/models/design/order.svg +++ b/src/main/asciidoc/models/design/order.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:083508e73bc8b109b9aca6756bcefacfa6aa65b23a92db12ff92e5f0dea2eb5e -size 42670 +oid sha256:54e8e0edf92f429dba26f0caba97b674db609d5e021e8789d2a34feca6b04e47 +size 63245