From e4d23d8e818d6d3ad149496d52febf6e98e69cc8 Mon Sep 17 00:00:00 2001 From: Paul Heimer Date: Tue, 28 Nov 2023 20:40:43 +0100 Subject: [PATCH] Add invoice for customer --- src/main/asciidoc/models/design/order.puml | 1 + .../java/catering/order/OrderController.java | 17 +++++++ .../resources/static/resources/css/style.css | 6 +++ src/main/resources/templates/invoice.html | 49 +++++++++++++++++++ src/main/resources/templates/navigation.html | 4 +- src/main/resources/templates/orders.html | 7 +-- 6 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/templates/invoice.html diff --git a/src/main/asciidoc/models/design/order.puml b/src/main/asciidoc/models/design/order.puml index 7107790..814ada1 100644 --- a/src/main/asciidoc/models/design/order.puml +++ b/src/main/asciidoc/models/design/order.puml @@ -45,6 +45,7 @@ package catering.order { + checkout(userAccount : UserAccount, model : Model) : String + getOrders(model : Model) : String + removeOrder(order : Order) : boolean + + invoice(model : Model, userAccount : UserAccount, order : Order) : String } class ProductForm diff --git a/src/main/java/catering/order/OrderController.java b/src/main/java/catering/order/OrderController.java index ea07c6e..5874253 100644 --- a/src/main/java/catering/order/OrderController.java +++ b/src/main/java/catering/order/OrderController.java @@ -24,6 +24,7 @@ import java.time.LocalDate; import java.time.LocalTime; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @@ -316,4 +317,20 @@ public class OrderController { model.addAttribute("dayNames", dayNames); return "orders_calender"; } + + @GetMapping("/myOrders/{order}/invoice") + @PreAuthorize("isAuthenticated()") + public String invoice(Model model, @LoggedIn UserAccount userAccount, @PathVariable Order order){ + if(!order.getUserAccountIdentifier().equals(userAccount.getId()) && + !userAccount.hasRole(Role.of("ADMIN"))){ + return "redirect:/unauthorized"; + } + + model.addAttribute("order", order); + model.addAttribute("staffCharges", order.getChargeLines().stream() + .collect(Collectors.toMap(Function.identity(), + cl -> staffManagement.findById(Long.parseLong(cl.getDescription())).get()))); + + return "invoice"; + } } diff --git a/src/main/resources/static/resources/css/style.css b/src/main/resources/static/resources/css/style.css index 51d79be..5591bde 100644 --- a/src/main/resources/static/resources/css/style.css +++ b/src/main/resources/static/resources/css/style.css @@ -24,3 +24,9 @@ transition-property: scale; transition-timing-function: ease; } + +@media print { + .container { + max-width: revert; + } +} diff --git a/src/main/resources/templates/invoice.html b/src/main/resources/templates/invoice.html new file mode 100644 index 0000000..918e416 --- /dev/null +++ b/src/main/resources/templates/invoice.html @@ -0,0 +1,49 @@ + + + +
+
+

Eventtyp

+

+
+
+

Dauer

+

+

+
+

Produkte

+ + + + + + + + + + + + + + + + + + + + + + + +
BeschreibungEinzelpreis/BasispreisMengeGesamtpreis
1
+
+

Gesamtpreis

+

+
+ +
+ + diff --git a/src/main/resources/templates/navigation.html b/src/main/resources/templates/navigation.html index 8397d0c..c39a9a1 100644 --- a/src/main/resources/templates/navigation.html +++ b/src/main/resources/templates/navigation.html @@ -7,10 +7,10 @@