From b7b5c7a6b3d14ca8666485ded75725e5c194e6fb Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 18 May 2020 12:49:37 +0200 Subject: [PATCH 01/90] remove bonuspoints --- .../templates/fragments/customer.html | 2 +- .../templates/user/orders/index.html | 86 ++----------------- 2 files changed, 6 insertions(+), 82 deletions(-) diff --git a/prototype/src/main/resources/templates/fragments/customer.html b/prototype/src/main/resources/templates/fragments/customer.html index d47a06a..a8ef757 100644 --- a/prototype/src/main/resources/templates/fragments/customer.html +++ b/prototype/src/main/resources/templates/fragments/customer.html @@ -12,7 +12,7 @@ diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index a60e623..5e24e4a 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -42,10 +42,10 @@ Deutschland
- + @@ -79,94 +79,18 @@ - + - - - - - - -
Artikel (Netto) 120,00 EUR
Umsatzsteuer (19%) 42,00 EUR
-

Gesammtpreis

-
-

240,79 EUR

-
- -
-

Bestellung vom 01.01.2020

-
- - - - - - - - - - - - - - - - - -
LieferstatusAngekommen
03.01.2020
SendeverfolgungsnummerXE5140684351DE
- Hans Maier
- Hauptstraße 12
- 74880 Musterstadt
- Deutschland
-
Gutgeschriebene Bonuspunkte5
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -180,7 +104,7 @@

Gesammtpreis

BildNameMengePreis pro Artikel (Brutto)
Billige Kamera 140,50 EUR
Apfel 51,00 EUR
PositionPreis
Artikel (Netto) 20,00 EUR
Umsatzsteuer (19%) 5,00 EUR
-

50,79 EUR

+

240,79 EUR

From 471152797193d855fbbf3bb595cddb79ee11997f Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 18 May 2020 14:41:33 +0200 Subject: [PATCH 02/90] show usersettings from db --- .../ecommerce/app/UserRequestController.java | 36 -------------- .../ecommerce/controller/UserController.java | 49 ++++++++++++++++++- .../org/hso/ecommerce/entities/user/User.java | 6 +++ .../resources/templates/user/settings.html | 21 ++++---- 4 files changed, 63 insertions(+), 49 deletions(-) delete mode 100644 prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java diff --git a/prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java b/prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java deleted file mode 100644 index c4f6301..0000000 --- a/prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.hso.ecommerce.app; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -@RequestMapping("user") -public class UserRequestController { - - @GetMapping("/") - public String user() { - return "redirect:/user/settings"; - } - - @GetMapping("/settings") - public String userSettings() { - return "user/settings"; - } - - @GetMapping("/orders/") - public String userOrdeers() { - return "user/orders/index"; - } - - @GetMapping("/bonuspoints") - public String userBonuspoints() { - return "user/bonuspoints"; - } - - @GetMapping("/notifications/") - public String userNotifications() { - return "user/notifications/index"; - } -} - diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 523bf2e..c462bd0 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,8 +1,55 @@ package org.hso.ecommerce.controller; +import org.hso.ecommerce.entities.user.User; +import org.hso.ecommerce.repos.user.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpSession; @Controller -//@RequestMapping("...") +@RequestMapping("/user") public class UserController { + + @Autowired + private final UserRepository userRepository = null; + + @GetMapping("/") + public String user() { + return "redirect:/user/settings"; + } + + @GetMapping("/settings") + public String userSettings(Model model, + HttpSession session + ) { + long userId = (long) session.getAttribute("userId"); + User user = userRepository.findById(userId).get(); + model.addAttribute("user", user); + + //TODO: klären wegen Geschäftskundenunterscheidung + + return "user/settings"; + } + + @GetMapping("/notifications/") + public String userNotifications() { + return "user/notifications/index"; + } + + @GetMapping("/orders/") + public String userOrdeers() { + return "user/orders/index"; + } + +// @GetMapping("/bonuspoints") +// public String userBonuspoints() { +// return "user/bonuspoints"; +// } + + + } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index 784d89a..c36b629 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -24,10 +24,16 @@ public class User { @Column(unique = true) public String email; + @Column(insertable=false, updatable = false) + public String name; + + public String salutation; + public String passwordHash; public boolean isActive; public boolean isEmployee; + public boolean isAdvertisementActivated; @Embedded public Address defaultDeliveryAddress; diff --git a/prototype/src/main/resources/templates/user/settings.html b/prototype/src/main/resources/templates/user/settings.html index 29f6ec4..682a3bb 100644 --- a/prototype/src/main/resources/templates/user/settings.html +++ b/prototype/src/main/resources/templates/user/settings.html @@ -27,7 +27,7 @@
- +
@@ -59,7 +59,7 @@
-
-
@@ -78,17 +78,14 @@
+ placeholder="Optional: Zusatz Optional: Unternehmen Straße Hausnummer Postleitzeit Ort Land" th:text="${user.defaultDeliveryAddress.addressString}"/>
-
+
@@ -100,9 +97,9 @@ Deutschland
- +
- +
@@ -115,7 +112,7 @@ Deutschland
- +
From 1ce9a971bad4135ed8953857e68993566868e8f4 Mon Sep 17 00:00:00 2001 From: Hannes Date: Tue, 19 May 2020 11:52:41 +0200 Subject: [PATCH 03/90] show all Orders --- .../action/user/ChangeUserAction.java | 7 +++ .../ecommerce/controller/UserController.java | 59 ++++++++++++++++++- .../shop/ShopCheckoutController.java | 4 +- .../entities/shop/CustomerOrder.java | 13 ++++ .../entities/shop/CustomerOrderPosition.java | 4 ++ .../org/hso/ecommerce/entities/user/User.java | 4 ++ .../repos/shop/CustomerOderRepository.java | 11 ---- .../repos/shop/CustomerOrderRepository.java | 17 ++++++ .../templates/user/orders/index.html | 46 +++++---------- .../resources/templates/user/settings.html | 2 +- 10 files changed, 121 insertions(+), 46 deletions(-) create mode 100644 prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java delete mode 100644 prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java create mode 100644 prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java new file mode 100644 index 0000000..af9ef9e --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java @@ -0,0 +1,7 @@ +package org.hso.ecommerce.action.user; + +import org.hso.ecommerce.entities.user.User; + +public class ChangeUserAction { + +} diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index c462bd0..fee6946 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,14 +1,19 @@ package org.hso.ecommerce.controller; +import org.hso.ecommerce.entities.shop.CustomerOrder; import org.hso.ecommerce.entities.user.User; +import org.hso.ecommerce.repos.shop.CustomerOrderRepository; import org.hso.ecommerce.repos.user.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpSession; +import java.util.List; @Controller @RequestMapping("/user") @@ -17,6 +22,9 @@ public class UserController { @Autowired private final UserRepository userRepository = null; + @Autowired + private final CustomerOrderRepository customerOrderRepository = null; + @GetMapping("/") public String user() { return "redirect:/user/settings"; @@ -37,14 +45,63 @@ public class UserController { @GetMapping("/notifications/") public String userNotifications() { + + //TODO: implement this + return "user/notifications/index"; } @GetMapping("/orders/") - public String userOrdeers() { + public String userOrdeers(HttpSession session, + Model model) { + + List orders = customerOrderRepository.getOrdersByUserId((long) session.getAttribute("userId")); + + model.addAttribute("orders", orders); + return "user/orders/index"; } + @PostMapping("/settings/changeMail") + public String changeMail(@RequestParam("email") String email){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changePwd") + public String changePwd(){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changeAddress") + public String changeAddress(){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changeAdSettings") + public String changeAdSettings(){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changePaymentInfo") + public String changePaymentInfo(){ + + //TODO: implement this + + return "user/settings"; + } + // @GetMapping("/bonuspoints") // public String userBonuspoints() { // return "user/bonuspoints"; diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java index c2c1c3a..e9d9e68 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java @@ -11,7 +11,7 @@ import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.booking.BookingAccountEntryRepository; import org.hso.ecommerce.repos.booking.BookingRepository; import org.hso.ecommerce.repos.shop.ArticleRepository; -import org.hso.ecommerce.repos.shop.CustomerOderRepository; +import org.hso.ecommerce.repos.shop.CustomerOrderRepository; import org.hso.ecommerce.repos.user.UserRepository; import org.hso.ecommerce.repos.warehouse.WarehouseBookingPositionSlotEntryRepository; import org.hso.ecommerce.repos.warehouse.WarehouseBookingRepository; @@ -45,7 +45,7 @@ public class ShopCheckoutController { private final WarehouseBookingRepository warehouseBookingRepository = null; @Autowired - private final CustomerOderRepository customerOderRepository = null; + private final CustomerOrderRepository customerOderRepository = null; @Autowired private final WarehouseBookingPositionSlotEntryRepository wbeseRepo = null; diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java index 1b20bb2..d9410f7 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java @@ -4,6 +4,7 @@ import org.hso.ecommerce.entities.user.User; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @@ -43,4 +44,16 @@ public class CustomerOrder { public int totalNetCent; public int totalGrossCent; public int totalVatCent; + + public String formatInDeliverySince(){ + return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(inDeliverySince); + } + + public String formatCreated(){ + return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(created); + } + + public String formatDeliveredAt(){ + return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(deliveredAt); + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java index dbe53f7..2569158 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java @@ -19,4 +19,8 @@ public class CustomerOrderPosition { public int pricePerUnit; public int quantity; + + public int getSumPrice(){ + return article.getPriceGross() * quantity; + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index c36b629..40196c7 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -45,6 +45,10 @@ public class User { return id; } + public void setEmail(String email) { + this.email = email; + } + public boolean validatePassword(String password) { return BCrypt.checkpw(password, passwordHash); } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java deleted file mode 100644 index 407f45c..0000000 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.hso.ecommerce.repos.shop; - -import org.hso.ecommerce.entities.shop.CustomerOrder; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface CustomerOderRepository extends JpaRepository { - -} - diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java new file mode 100644 index 0000000..da42f26 --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java @@ -0,0 +1,17 @@ +package org.hso.ecommerce.repos.shop; + +import org.hso.ecommerce.entities.shop.CustomerOrder; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CustomerOrderRepository extends JpaRepository { + + @Query("SELECT co FROM CustomerOrder co WHERE co.customer.id = :userId") + List getOrdersByUserId(long userId); + +} + diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index 5e24e4a..b746f52 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -21,26 +21,22 @@
-
-

Bestellung vom 27.01.2020

+
+

- + + - + - + -
  • Benachrichtigungen
  • Bestellungen
  • diff --git a/prototype/src/main/resources/templates/fragments/header.html b/prototype/src/main/resources/templates/fragments/header.html index 054c332..349f72c 100644 --- a/prototype/src/main/resources/templates/fragments/header.html +++ b/prototype/src/main/resources/templates/fragments/header.html @@ -18,7 +18,6 @@ - +

    Rechungs- und Lieferinformation

    @@ -91,7 +91,7 @@ - +

    Werbung

    @@ -106,13 +106,13 @@ - +

    Zahlungsinformation

    - +
    From 8ede86fdce839ad0533fad9b05e011b0044a44c6 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 20 May 2020 12:08:57 +0200 Subject: [PATCH 06/90] add Errorhandling to UpdateSettingsAction --- .../action/user/UpdateUserSettingsAction.java | 61 +++++++++++-------- .../ecommerce/controller/UserController.java | 55 +++++++++++------ 2 files changed, 74 insertions(+), 42 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 57cbfce..fe4805a 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -1,6 +1,7 @@ package org.hso.ecommerce.action.user; import com.sun.xml.bind.v2.TODO; +import org.hibernate.sql.Update; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.user.UserRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -15,49 +16,59 @@ public class UpdateUserSettingsAction { this.repository = repository; } - public void updateEmail(String newMail){ - if(newMail.equals("")){ - //TODO: Errorhandling + public UpdateResult updateEmail(String newMail){ + UpdateResult result = new UpdateResult(false); + if(!newMail.contains("@")){ + result.errorString = "Ändern der Email-Addresse nicht möglich. Bitte versuchen Sie es erneut."; }else{ this.user.email = newMail; - this.repository.save(this.user); //TODO: Errorhandling + this.repository.save(this.user); + result.updated = true; } + return result; } - public void updatePassword(String oldPassword, String password1, String password2){ + public UpdateResult updatePassword(String oldPassword, String password1, String password2){ + UpdateResult result = new UpdateResult(false); if(this.user.validatePassword(oldPassword)) { if(password1.equals(password2)){ this.user.setPassword(password1); this.repository.save(this.user); + result.updated = true; }else{ - //TODO Errorhandling + result.errorString = "Die beiden neuen Passwörter stimmen nicht überein. Bitte versuchen Sie es erneut."; } }else{ - //TODO: Errorhandling + result.errorString = "Das eingegebene alte Passwort stimmt nicht mit dem momentan gespeicherten Passwort überein. Bitte versuchen Sie es erneut."; } + return result; } - public void updateShippingInfo(String salutation, String name, String address){ - if(salutation.equals("") || name.equals("") || address.equals("")){ - //TODO: Errorhandling - }else{ - this.user.salutation = salutation; - this.user.name = name; - this.user.defaultDeliveryAddress.addressString = address; + public UpdateResult updateShippingInfo(String salutation, String name, String address){ + this.user.salutation = salutation; + this.user.name = name; + this.user.defaultDeliveryAddress.addressString = address; + this.repository.save(this.user); + return new UpdateResult(true); + } + + public UpdateResult updateAdvertisementFlag(boolean advertisementFlag){ + this.user.isAdvertisementActivated = advertisementFlag; + this.repository.save(this.user); + return new UpdateResult(true); + } + + public UpdateResult updatePaymentInfo(String creditCardNumber){ + UpdateResult result = new UpdateResult(false); + if(creditCardNumber.matches("[0-9]+")){ + this.user.defaultPayment.creditCardNumber = creditCardNumber; this.repository.save(this.user); + result.updated = true; + }else{ + result.errorString = "Kreditkartennummer enthält Buchstaben. Bitte versuchen Sie es erneut."; } - } - - public void updateAdvertisementFlag(boolean advertisementFlag){ - this.user.isAdvertisementActivated = advertisementFlag; //TODO: Errodhandling - this.repository.save(this.user); - } - - public void updatePaymentInfo(String creditCardNumber){ - //TODO: Errorhandling - this.user.defaultPayment.creditCardNumber = creditCardNumber; - this.repository.save(this.user); + return result; } public class UpdateResult{ diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 94d7618..803dbf9 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.List; @@ -46,9 +47,9 @@ public class UserController { @GetMapping("/orders/") public String userOrdeers(HttpSession session, - Model model) { + Model model + ) { List orders = customerOrderRepository.getOrdersByUserId((long) session.getAttribute("userId")); - model.addAttribute("orders", orders); return "user/orders/index"; @@ -56,12 +57,16 @@ public class UserController { @PostMapping("/settings/changeMail") public String changeMail(HttpSession session, - @RequestParam("email") String email - ){ + @RequestParam("email") String email, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updateEmail(email); + UpdateUserSettingsAction.UpdateResult result = cusa.updateEmail(email); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @@ -70,12 +75,16 @@ public class UserController { public String changePwd(HttpSession session, @RequestParam("old-password") String oldPassword, @RequestParam("password1") String password1, - @RequestParam("password2") String password2 - ){ + @RequestParam("password2") String password2, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updatePassword(oldPassword, password1, password2); + UpdateUserSettingsAction.UpdateResult result = cusa.updatePassword(oldPassword, password1, password2); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @@ -84,36 +93,48 @@ public class UserController { public String changeAddress(HttpSession session, @RequestParam("salutation") String salutation, @RequestParam("name") String name, - @RequestParam("address") String address - ){ + @RequestParam("address") String address, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updateShippingInfo(salutation, name, address); + UpdateUserSettingsAction.UpdateResult result = cusa.updateShippingInfo(salutation, name, address); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @PostMapping("/settings/changeAdSettings") public String changeAdSettings(HttpSession session, - @RequestParam("ad") String ad - ){ + @RequestParam("ad") String ad, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updateAdvertisementFlag(ad.equals("y")); + UpdateUserSettingsAction.UpdateResult result = cusa.updateAdvertisementFlag(ad.equals("y")); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @PostMapping("/settings/changePaymentInfo") public String changePaymentInfo(HttpSession session, - @RequestParam("creditCardNumber") String creditCardNumber - ){ + @RequestParam("creditCardNumber") String creditCardNumber, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updatePaymentInfo(creditCardNumber); + UpdateUserSettingsAction.UpdateResult result = cusa.updatePaymentInfo(creditCardNumber); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } From 33ff754b9d67dab7f1d24424ff03416e52b2ce50 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 09:36:40 +0200 Subject: [PATCH 07/90] remove advertisementflag --- .../action/user/UpdateUserSettingsAction.java | 6 ------ .../hso/ecommerce/controller/UserController.java | 16 ---------------- .../org/hso/ecommerce/entities/user/User.java | 1 - .../main/resources/templates/user/settings.html | 15 --------------- 4 files changed, 38 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index fe4805a..5732a7f 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -53,12 +53,6 @@ public class UpdateUserSettingsAction { return new UpdateResult(true); } - public UpdateResult updateAdvertisementFlag(boolean advertisementFlag){ - this.user.isAdvertisementActivated = advertisementFlag; - this.repository.save(this.user); - return new UpdateResult(true); - } - public UpdateResult updatePaymentInfo(String creditCardNumber){ UpdateResult result = new UpdateResult(false); if(creditCardNumber.matches("[0-9]+")){ diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 803dbf9..5b0c50b 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -107,22 +107,6 @@ public class UserController { return "user/settings"; } - @PostMapping("/settings/changeAdSettings") - public String changeAdSettings(HttpSession session, - @RequestParam("ad") String ad, - HttpServletRequest request - ) { - User user = userRepository.findById((long) session.getAttribute("userId")).get(); - - UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - UpdateUserSettingsAction.UpdateResult result = cusa.updateAdvertisementFlag(ad.equals("y")); - if (result.updated == false) { - request.setAttribute("error", result.errorString); - } - - return "user/settings"; - } - @PostMapping("/settings/changePaymentInfo") public String changePaymentInfo(HttpSession session, @RequestParam("creditCardNumber") String creditCardNumber, diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index 40196c7..61a4503 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -33,7 +33,6 @@ public class User { public boolean isActive; public boolean isEmployee; - public boolean isAdvertisementActivated; @Embedded public Address defaultDeliveryAddress; diff --git a/prototype/src/main/resources/templates/user/settings.html b/prototype/src/main/resources/templates/user/settings.html index 89e81fb..86f25e3 100644 --- a/prototype/src/main/resources/templates/user/settings.html +++ b/prototype/src/main/resources/templates/user/settings.html @@ -91,21 +91,6 @@ -
    -
    -

    Werbung

    -
    -
    -
    - -
    - -
    -
    - -
    - -

    Zahlungsinformation

    From 178f98d6649d8e653b0073b54017d71820891fb3 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 10:10:42 +0200 Subject: [PATCH 08/90] fix error handling --- .../action/user/UpdateUserSettingsAction.java | 12 ++++++++---- .../org/hso/ecommerce/controller/UserController.java | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 5732a7f..9aa8370 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -33,9 +33,13 @@ public class UpdateUserSettingsAction { if(this.user.validatePassword(oldPassword)) { if(password1.equals(password2)){ - this.user.setPassword(password1); - this.repository.save(this.user); - result.updated = true; + if(!password1.equals(oldPassword)){ + this.user.setPassword(password1); + this.repository.save(this.user); + result.updated = true; + }else { + result.errorString = "Die neuen Passwörter entsprechen dem alten Passwort."; + } }else{ result.errorString = "Die beiden neuen Passwörter stimmen nicht überein. Bitte versuchen Sie es erneut."; } @@ -60,7 +64,7 @@ public class UpdateUserSettingsAction { this.repository.save(this.user); result.updated = true; }else{ - result.errorString = "Kreditkartennummer enthält Buchstaben. Bitte versuchen Sie es erneut."; + result.errorString = "Kreditkartennummer darf nur Zahlen enthalten. Bitte versuchen Sie es erneut."; } return result; } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 5b0c50b..7099dd7 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -66,9 +66,10 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updateEmail(email); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } @PostMapping("/settings/changePwd") @@ -84,9 +85,10 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updatePassword(oldPassword, password1, password2); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } @PostMapping("/settings/changeAddress") @@ -102,9 +104,10 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updateShippingInfo(salutation, name, address); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } @PostMapping("/settings/changePaymentInfo") @@ -118,8 +121,9 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updatePaymentInfo(creditCardNumber); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } } From 8d65998ac205b0f00a49065a739993bf0613e5c9 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 10:21:36 +0200 Subject: [PATCH 09/90] code cleanup --- .../action/user/UpdateUserSettingsAction.java | 40 +++++++++---------- .../org/hso/ecommerce/entities/user/User.java | 6 +-- .../repos/shop/CustomerOrderRepository.java | 3 +- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 9aa8370..4796dbe 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -1,26 +1,23 @@ package org.hso.ecommerce.action.user; -import com.sun.xml.bind.v2.TODO; -import org.hibernate.sql.Update; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.user.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; public class UpdateUserSettingsAction { private User user; private UserRepository repository; - public UpdateUserSettingsAction(User user, UserRepository repository){ + public UpdateUserSettingsAction(User user, UserRepository repository) { this.user = user; this.repository = repository; } - public UpdateResult updateEmail(String newMail){ + public UpdateResult updateEmail(String newMail) { UpdateResult result = new UpdateResult(false); - if(!newMail.contains("@")){ + if (!newMail.contains("@")) { result.errorString = "Ändern der Email-Addresse nicht möglich. Bitte versuchen Sie es erneut."; - }else{ + } else { this.user.email = newMail; this.repository.save(this.user); result.updated = true; @@ -28,28 +25,27 @@ public class UpdateUserSettingsAction { return result; } - public UpdateResult updatePassword(String oldPassword, String password1, String password2){ + public UpdateResult updatePassword(String oldPassword, String password1, String password2) { UpdateResult result = new UpdateResult(false); - if(this.user.validatePassword(oldPassword)) - { - if(password1.equals(password2)){ - if(!password1.equals(oldPassword)){ + if (this.user.validatePassword(oldPassword)) { + if (password1.equals(password2)) { + if (!password1.equals(oldPassword)) { this.user.setPassword(password1); this.repository.save(this.user); result.updated = true; - }else { + } else { result.errorString = "Die neuen Passwörter entsprechen dem alten Passwort."; } - }else{ + } else { result.errorString = "Die beiden neuen Passwörter stimmen nicht überein. Bitte versuchen Sie es erneut."; } - }else{ + } else { result.errorString = "Das eingegebene alte Passwort stimmt nicht mit dem momentan gespeicherten Passwort überein. Bitte versuchen Sie es erneut."; } return result; } - public UpdateResult updateShippingInfo(String salutation, String name, String address){ + public UpdateResult updateShippingInfo(String salutation, String name, String address) { this.user.salutation = salutation; this.user.name = name; this.user.defaultDeliveryAddress.addressString = address; @@ -57,28 +53,28 @@ public class UpdateUserSettingsAction { return new UpdateResult(true); } - public UpdateResult updatePaymentInfo(String creditCardNumber){ + public UpdateResult updatePaymentInfo(String creditCardNumber) { UpdateResult result = new UpdateResult(false); - if(creditCardNumber.matches("[0-9]+")){ + if (creditCardNumber.matches("[0-9]+")) { this.user.defaultPayment.creditCardNumber = creditCardNumber; this.repository.save(this.user); result.updated = true; - }else{ + } else { result.errorString = "Kreditkartennummer darf nur Zahlen enthalten. Bitte versuchen Sie es erneut."; } return result; } - public class UpdateResult{ + public class UpdateResult { public boolean updated; //if true worked, if false not worked public String errorString; - public UpdateResult(boolean updated, String errorString){ + public UpdateResult(boolean updated, String errorString) { this.updated = updated; this.errorString = errorString; } - public UpdateResult(boolean updated){ + public UpdateResult(boolean updated) { this.updated = updated; this.errorString = ""; } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index 61a4503..e08c2ee 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -24,7 +24,7 @@ public class User { @Column(unique = true) public String email; - @Column(insertable=false, updatable = false) + @Column(insertable = false, updatable = false) public String name; public String salutation; @@ -44,10 +44,6 @@ public class User { return id; } - public void setEmail(String email) { - this.email = email; - } - public boolean validatePassword(String password) { return BCrypt.checkpw(password, passwordHash); } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java index da42f26..3321232 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java @@ -13,5 +13,4 @@ public interface CustomerOrderRepository extends JpaRepository getOrdersByUserId(long userId); -} - +} \ No newline at end of file From 86a2e5d8c28cdc9c5ac9b2bf3124aa55c1604c16 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 12:17:09 +0200 Subject: [PATCH 10/90] code cleanup --- .../java/org/hso/ecommerce/controller/UserController.java | 2 -- .../java/org/hso/ecommerce/entities/shop/CustomerOrder.java | 5 +++++ .../src/main/resources/templates/user/orders/index.html | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 7099dd7..8a90d43 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -40,8 +40,6 @@ public class UserController { User user = userRepository.findById(userId).get(); model.addAttribute("user", user); - //TODO: klären wegen Geschäftskundenunterscheidung - return "user/settings"; } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java index d9410f7..8b703b6 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java @@ -56,4 +56,9 @@ public class CustomerOrder { public String formatDeliveredAt(){ return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(deliveredAt); } + + public String getEstimatedArrival() { + //TODO: get estimated arrival from api + return "TODO TODO TODO"; + } } diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index b746f52..327bbf2 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -27,7 +27,7 @@
    LieferstatusUnterwegs
    Vorraussichtliche Ankunft: 29.01.2020
    Unterwegs
    Vorraussichtliche Ankunft: TODO TODO TODO TODO
    Angekommen
    Ankunft:
    SendeverfolgungsnummerXE51451436DE
    - Hans Maier
    - Hauptstraße 12
    - 74880 Musterstadt
    - Deutschland
    -
    - + From 7c73f698651de80a5080c8d12aa5d24dbefc8324 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 18 May 2020 12:49:37 +0200 Subject: [PATCH 11/90] remove bonuspoints --- .../templates/fragments/customer.html | 2 +- .../templates/user/orders/index.html | 86 ++----------------- 2 files changed, 6 insertions(+), 82 deletions(-) diff --git a/prototype/src/main/resources/templates/fragments/customer.html b/prototype/src/main/resources/templates/fragments/customer.html index d47a06a..a8ef757 100644 --- a/prototype/src/main/resources/templates/fragments/customer.html +++ b/prototype/src/main/resources/templates/fragments/customer.html @@ -12,7 +12,7 @@ diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index a60e623..5e24e4a 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -42,10 +42,10 @@ Deutschland
    - +
    LieferstatusUnterwegs
    Vorraussichtliche Ankunft: TODO TODO TODO TODO
    Unterwegs
    Vorraussichtliche Ankunft:
    Angekommen
    Ankunft:
    @@ -79,94 +79,18 @@ - + - - - - - - -
    Artikel (Netto) 120,00 EUR
    Umsatzsteuer (19%) 42,00 EUR
    -

    Gesammtpreis

    -
    -

    240,79 EUR

    -
    -

    -
    -

    Bestellung vom 01.01.2020

    -
    - - - - - - - - - - - - - - - - - -
    LieferstatusAngekommen
    03.01.2020
    SendeverfolgungsnummerXE5140684351DE
    - Hans Maier
    - Hauptstraße 12
    - 74880 Musterstadt
    - Deutschland
    -
    Gutgeschriebene Bonuspunkte5
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -180,7 +104,7 @@

    Gesammtpreis

    BildNameMengePreis pro Artikel (Brutto)
    Billige Kamera 140,50 EUR
    Apfel 51,00 EUR
    PositionPreis
    Artikel (Netto) 20,00 EUR
    Umsatzsteuer (19%) 5,00 EUR
    -

    50,79 EUR

    +

    240,79 EUR

    From 106b00a9074278ef63ed22d74aa640d49beed8f6 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 18 May 2020 14:41:33 +0200 Subject: [PATCH 12/90] show usersettings from db --- .../ecommerce/app/UserRequestController.java | 36 -------------- .../ecommerce/controller/UserController.java | 49 ++++++++++++++++++- .../org/hso/ecommerce/entities/user/User.java | 6 +++ .../resources/templates/user/settings.html | 21 ++++---- 4 files changed, 63 insertions(+), 49 deletions(-) delete mode 100644 prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java diff --git a/prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java b/prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java deleted file mode 100644 index c4f6301..0000000 --- a/prototype/src/main/java/org/hso/ecommerce/app/UserRequestController.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.hso.ecommerce.app; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -@RequestMapping("user") -public class UserRequestController { - - @GetMapping("/") - public String user() { - return "redirect:/user/settings"; - } - - @GetMapping("/settings") - public String userSettings() { - return "user/settings"; - } - - @GetMapping("/orders/") - public String userOrdeers() { - return "user/orders/index"; - } - - @GetMapping("/bonuspoints") - public String userBonuspoints() { - return "user/bonuspoints"; - } - - @GetMapping("/notifications/") - public String userNotifications() { - return "user/notifications/index"; - } -} - diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 523bf2e..c462bd0 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,8 +1,55 @@ package org.hso.ecommerce.controller; +import org.hso.ecommerce.entities.user.User; +import org.hso.ecommerce.repos.user.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpSession; @Controller -//@RequestMapping("...") +@RequestMapping("/user") public class UserController { + + @Autowired + private final UserRepository userRepository = null; + + @GetMapping("/") + public String user() { + return "redirect:/user/settings"; + } + + @GetMapping("/settings") + public String userSettings(Model model, + HttpSession session + ) { + long userId = (long) session.getAttribute("userId"); + User user = userRepository.findById(userId).get(); + model.addAttribute("user", user); + + //TODO: klären wegen Geschäftskundenunterscheidung + + return "user/settings"; + } + + @GetMapping("/notifications/") + public String userNotifications() { + return "user/notifications/index"; + } + + @GetMapping("/orders/") + public String userOrdeers() { + return "user/orders/index"; + } + +// @GetMapping("/bonuspoints") +// public String userBonuspoints() { +// return "user/bonuspoints"; +// } + + + } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index 784d89a..c36b629 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -24,10 +24,16 @@ public class User { @Column(unique = true) public String email; + @Column(insertable=false, updatable = false) + public String name; + + public String salutation; + public String passwordHash; public boolean isActive; public boolean isEmployee; + public boolean isAdvertisementActivated; @Embedded public Address defaultDeliveryAddress; diff --git a/prototype/src/main/resources/templates/user/settings.html b/prototype/src/main/resources/templates/user/settings.html index 29f6ec4..682a3bb 100644 --- a/prototype/src/main/resources/templates/user/settings.html +++ b/prototype/src/main/resources/templates/user/settings.html @@ -27,7 +27,7 @@
    - +
    @@ -59,7 +59,7 @@
    -
    -
    @@ -78,17 +78,14 @@
    + placeholder="Optional: Zusatz Optional: Unternehmen Straße Hausnummer Postleitzeit Ort Land" th:text="${user.defaultDeliveryAddress.addressString}"/>
    -
    +
    @@ -100,9 +97,9 @@ Deutschland
    - +
    - +
    @@ -115,7 +112,7 @@ Deutschland
    - +
    From b5495bda3d5c521c5a42d0a979b9935824be331d Mon Sep 17 00:00:00 2001 From: Hannes Date: Tue, 19 May 2020 11:52:41 +0200 Subject: [PATCH 13/90] show all Orders --- .../action/user/ChangeUserAction.java | 7 +++ .../ecommerce/controller/UserController.java | 59 ++++++++++++++++++- .../shop/ShopCheckoutController.java | 4 +- .../entities/shop/CustomerOrder.java | 13 ++++ .../entities/shop/CustomerOrderPosition.java | 4 ++ .../org/hso/ecommerce/entities/user/User.java | 4 ++ .../repos/shop/CustomerOderRepository.java | 11 ---- .../repos/shop/CustomerOrderRepository.java | 17 ++++++ .../templates/user/orders/index.html | 46 +++++---------- .../resources/templates/user/settings.html | 2 +- 10 files changed, 121 insertions(+), 46 deletions(-) create mode 100644 prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java delete mode 100644 prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java create mode 100644 prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java new file mode 100644 index 0000000..af9ef9e --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/ChangeUserAction.java @@ -0,0 +1,7 @@ +package org.hso.ecommerce.action.user; + +import org.hso.ecommerce.entities.user.User; + +public class ChangeUserAction { + +} diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index c462bd0..fee6946 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,14 +1,19 @@ package org.hso.ecommerce.controller; +import org.hso.ecommerce.entities.shop.CustomerOrder; import org.hso.ecommerce.entities.user.User; +import org.hso.ecommerce.repos.shop.CustomerOrderRepository; import org.hso.ecommerce.repos.user.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpSession; +import java.util.List; @Controller @RequestMapping("/user") @@ -17,6 +22,9 @@ public class UserController { @Autowired private final UserRepository userRepository = null; + @Autowired + private final CustomerOrderRepository customerOrderRepository = null; + @GetMapping("/") public String user() { return "redirect:/user/settings"; @@ -37,14 +45,63 @@ public class UserController { @GetMapping("/notifications/") public String userNotifications() { + + //TODO: implement this + return "user/notifications/index"; } @GetMapping("/orders/") - public String userOrdeers() { + public String userOrdeers(HttpSession session, + Model model) { + + List orders = customerOrderRepository.getOrdersByUserId((long) session.getAttribute("userId")); + + model.addAttribute("orders", orders); + return "user/orders/index"; } + @PostMapping("/settings/changeMail") + public String changeMail(@RequestParam("email") String email){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changePwd") + public String changePwd(){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changeAddress") + public String changeAddress(){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changeAdSettings") + public String changeAdSettings(){ + + //TODO: implement this + + return "user/settings"; + } + + @PostMapping("/settings/changePaymentInfo") + public String changePaymentInfo(){ + + //TODO: implement this + + return "user/settings"; + } + // @GetMapping("/bonuspoints") // public String userBonuspoints() { // return "user/bonuspoints"; diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java index c2c1c3a..e9d9e68 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java @@ -11,7 +11,7 @@ import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.booking.BookingAccountEntryRepository; import org.hso.ecommerce.repos.booking.BookingRepository; import org.hso.ecommerce.repos.shop.ArticleRepository; -import org.hso.ecommerce.repos.shop.CustomerOderRepository; +import org.hso.ecommerce.repos.shop.CustomerOrderRepository; import org.hso.ecommerce.repos.user.UserRepository; import org.hso.ecommerce.repos.warehouse.WarehouseBookingPositionSlotEntryRepository; import org.hso.ecommerce.repos.warehouse.WarehouseBookingRepository; @@ -45,7 +45,7 @@ public class ShopCheckoutController { private final WarehouseBookingRepository warehouseBookingRepository = null; @Autowired - private final CustomerOderRepository customerOderRepository = null; + private final CustomerOrderRepository customerOderRepository = null; @Autowired private final WarehouseBookingPositionSlotEntryRepository wbeseRepo = null; diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java index 1b20bb2..d9410f7 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java @@ -4,6 +4,7 @@ import org.hso.ecommerce.entities.user.User; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @@ -43,4 +44,16 @@ public class CustomerOrder { public int totalNetCent; public int totalGrossCent; public int totalVatCent; + + public String formatInDeliverySince(){ + return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(inDeliverySince); + } + + public String formatCreated(){ + return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(created); + } + + public String formatDeliveredAt(){ + return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(deliveredAt); + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java index dbe53f7..2569158 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrderPosition.java @@ -19,4 +19,8 @@ public class CustomerOrderPosition { public int pricePerUnit; public int quantity; + + public int getSumPrice(){ + return article.getPriceGross() * quantity; + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index c36b629..40196c7 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -45,6 +45,10 @@ public class User { return id; } + public void setEmail(String email) { + this.email = email; + } + public boolean validatePassword(String password) { return BCrypt.checkpw(password, passwordHash); } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java deleted file mode 100644 index 407f45c..0000000 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOderRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.hso.ecommerce.repos.shop; - -import org.hso.ecommerce.entities.shop.CustomerOrder; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface CustomerOderRepository extends JpaRepository { - -} - diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java new file mode 100644 index 0000000..da42f26 --- /dev/null +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java @@ -0,0 +1,17 @@ +package org.hso.ecommerce.repos.shop; + +import org.hso.ecommerce.entities.shop.CustomerOrder; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CustomerOrderRepository extends JpaRepository { + + @Query("SELECT co FROM CustomerOrder co WHERE co.customer.id = :userId") + List getOrdersByUserId(long userId); + +} + diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index 5e24e4a..b746f52 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -21,26 +21,22 @@
    -
    -

    Bestellung vom 27.01.2020

    +
    +

    - + + - + - + -
  • Benachrichtigungen
  • Bestellungen
  • diff --git a/prototype/src/main/resources/templates/fragments/header.html b/prototype/src/main/resources/templates/fragments/header.html index 054c332..349f72c 100644 --- a/prototype/src/main/resources/templates/fragments/header.html +++ b/prototype/src/main/resources/templates/fragments/header.html @@ -18,7 +18,6 @@ - +

    Rechungs- und Lieferinformation

    @@ -91,7 +91,7 @@ - +

    Werbung

    @@ -106,13 +106,13 @@ - +

    Zahlungsinformation

    - +
    From 5b4c0be1c8fa6d30467137e9b4b755ab515ab436 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 20 May 2020 12:08:57 +0200 Subject: [PATCH 16/90] add Errorhandling to UpdateSettingsAction --- .../action/user/UpdateUserSettingsAction.java | 61 +++++++++++-------- .../ecommerce/controller/UserController.java | 55 +++++++++++------ 2 files changed, 74 insertions(+), 42 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 57cbfce..fe4805a 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -1,6 +1,7 @@ package org.hso.ecommerce.action.user; import com.sun.xml.bind.v2.TODO; +import org.hibernate.sql.Update; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.user.UserRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -15,49 +16,59 @@ public class UpdateUserSettingsAction { this.repository = repository; } - public void updateEmail(String newMail){ - if(newMail.equals("")){ - //TODO: Errorhandling + public UpdateResult updateEmail(String newMail){ + UpdateResult result = new UpdateResult(false); + if(!newMail.contains("@")){ + result.errorString = "Ändern der Email-Addresse nicht möglich. Bitte versuchen Sie es erneut."; }else{ this.user.email = newMail; - this.repository.save(this.user); //TODO: Errorhandling + this.repository.save(this.user); + result.updated = true; } + return result; } - public void updatePassword(String oldPassword, String password1, String password2){ + public UpdateResult updatePassword(String oldPassword, String password1, String password2){ + UpdateResult result = new UpdateResult(false); if(this.user.validatePassword(oldPassword)) { if(password1.equals(password2)){ this.user.setPassword(password1); this.repository.save(this.user); + result.updated = true; }else{ - //TODO Errorhandling + result.errorString = "Die beiden neuen Passwörter stimmen nicht überein. Bitte versuchen Sie es erneut."; } }else{ - //TODO: Errorhandling + result.errorString = "Das eingegebene alte Passwort stimmt nicht mit dem momentan gespeicherten Passwort überein. Bitte versuchen Sie es erneut."; } + return result; } - public void updateShippingInfo(String salutation, String name, String address){ - if(salutation.equals("") || name.equals("") || address.equals("")){ - //TODO: Errorhandling - }else{ - this.user.salutation = salutation; - this.user.name = name; - this.user.defaultDeliveryAddress.addressString = address; + public UpdateResult updateShippingInfo(String salutation, String name, String address){ + this.user.salutation = salutation; + this.user.name = name; + this.user.defaultDeliveryAddress.addressString = address; + this.repository.save(this.user); + return new UpdateResult(true); + } + + public UpdateResult updateAdvertisementFlag(boolean advertisementFlag){ + this.user.isAdvertisementActivated = advertisementFlag; + this.repository.save(this.user); + return new UpdateResult(true); + } + + public UpdateResult updatePaymentInfo(String creditCardNumber){ + UpdateResult result = new UpdateResult(false); + if(creditCardNumber.matches("[0-9]+")){ + this.user.defaultPayment.creditCardNumber = creditCardNumber; this.repository.save(this.user); + result.updated = true; + }else{ + result.errorString = "Kreditkartennummer enthält Buchstaben. Bitte versuchen Sie es erneut."; } - } - - public void updateAdvertisementFlag(boolean advertisementFlag){ - this.user.isAdvertisementActivated = advertisementFlag; //TODO: Errodhandling - this.repository.save(this.user); - } - - public void updatePaymentInfo(String creditCardNumber){ - //TODO: Errorhandling - this.user.defaultPayment.creditCardNumber = creditCardNumber; - this.repository.save(this.user); + return result; } public class UpdateResult{ diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 94d7618..803dbf9 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.List; @@ -46,9 +47,9 @@ public class UserController { @GetMapping("/orders/") public String userOrdeers(HttpSession session, - Model model) { + Model model + ) { List orders = customerOrderRepository.getOrdersByUserId((long) session.getAttribute("userId")); - model.addAttribute("orders", orders); return "user/orders/index"; @@ -56,12 +57,16 @@ public class UserController { @PostMapping("/settings/changeMail") public String changeMail(HttpSession session, - @RequestParam("email") String email - ){ + @RequestParam("email") String email, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updateEmail(email); + UpdateUserSettingsAction.UpdateResult result = cusa.updateEmail(email); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @@ -70,12 +75,16 @@ public class UserController { public String changePwd(HttpSession session, @RequestParam("old-password") String oldPassword, @RequestParam("password1") String password1, - @RequestParam("password2") String password2 - ){ + @RequestParam("password2") String password2, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updatePassword(oldPassword, password1, password2); + UpdateUserSettingsAction.UpdateResult result = cusa.updatePassword(oldPassword, password1, password2); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @@ -84,36 +93,48 @@ public class UserController { public String changeAddress(HttpSession session, @RequestParam("salutation") String salutation, @RequestParam("name") String name, - @RequestParam("address") String address - ){ + @RequestParam("address") String address, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updateShippingInfo(salutation, name, address); + UpdateUserSettingsAction.UpdateResult result = cusa.updateShippingInfo(salutation, name, address); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @PostMapping("/settings/changeAdSettings") public String changeAdSettings(HttpSession session, - @RequestParam("ad") String ad - ){ + @RequestParam("ad") String ad, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updateAdvertisementFlag(ad.equals("y")); + UpdateUserSettingsAction.UpdateResult result = cusa.updateAdvertisementFlag(ad.equals("y")); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } @PostMapping("/settings/changePaymentInfo") public String changePaymentInfo(HttpSession session, - @RequestParam("creditCardNumber") String creditCardNumber - ){ + @RequestParam("creditCardNumber") String creditCardNumber, + HttpServletRequest request + ) { User user = userRepository.findById((long) session.getAttribute("userId")).get(); UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - cusa.updatePaymentInfo(creditCardNumber); + UpdateUserSettingsAction.UpdateResult result = cusa.updatePaymentInfo(creditCardNumber); + if (result.updated == false) { + request.setAttribute("error", result.errorString); + } return "user/settings"; } From 83ad1f399924df53192e7f1630ce98f38de64b0f Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 09:36:40 +0200 Subject: [PATCH 17/90] remove advertisementflag --- .../action/user/UpdateUserSettingsAction.java | 6 ------ .../hso/ecommerce/controller/UserController.java | 16 ---------------- .../org/hso/ecommerce/entities/user/User.java | 1 - .../main/resources/templates/user/settings.html | 15 --------------- 4 files changed, 38 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index fe4805a..5732a7f 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -53,12 +53,6 @@ public class UpdateUserSettingsAction { return new UpdateResult(true); } - public UpdateResult updateAdvertisementFlag(boolean advertisementFlag){ - this.user.isAdvertisementActivated = advertisementFlag; - this.repository.save(this.user); - return new UpdateResult(true); - } - public UpdateResult updatePaymentInfo(String creditCardNumber){ UpdateResult result = new UpdateResult(false); if(creditCardNumber.matches("[0-9]+")){ diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 803dbf9..5b0c50b 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -107,22 +107,6 @@ public class UserController { return "user/settings"; } - @PostMapping("/settings/changeAdSettings") - public String changeAdSettings(HttpSession session, - @RequestParam("ad") String ad, - HttpServletRequest request - ) { - User user = userRepository.findById((long) session.getAttribute("userId")).get(); - - UpdateUserSettingsAction cusa = new UpdateUserSettingsAction(user, userRepository); - UpdateUserSettingsAction.UpdateResult result = cusa.updateAdvertisementFlag(ad.equals("y")); - if (result.updated == false) { - request.setAttribute("error", result.errorString); - } - - return "user/settings"; - } - @PostMapping("/settings/changePaymentInfo") public String changePaymentInfo(HttpSession session, @RequestParam("creditCardNumber") String creditCardNumber, diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index 40196c7..61a4503 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -33,7 +33,6 @@ public class User { public boolean isActive; public boolean isEmployee; - public boolean isAdvertisementActivated; @Embedded public Address defaultDeliveryAddress; diff --git a/prototype/src/main/resources/templates/user/settings.html b/prototype/src/main/resources/templates/user/settings.html index 89e81fb..86f25e3 100644 --- a/prototype/src/main/resources/templates/user/settings.html +++ b/prototype/src/main/resources/templates/user/settings.html @@ -91,21 +91,6 @@ -
    -
    -

    Werbung

    -
    -
    -
    - -
    - -
    -
    - -
    - -

    Zahlungsinformation

    From 60699ed847a7a34283404786535df4f772f1d8a7 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 10:10:42 +0200 Subject: [PATCH 18/90] fix error handling --- .../action/user/UpdateUserSettingsAction.java | 12 ++++++++---- .../org/hso/ecommerce/controller/UserController.java | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 5732a7f..9aa8370 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -33,9 +33,13 @@ public class UpdateUserSettingsAction { if(this.user.validatePassword(oldPassword)) { if(password1.equals(password2)){ - this.user.setPassword(password1); - this.repository.save(this.user); - result.updated = true; + if(!password1.equals(oldPassword)){ + this.user.setPassword(password1); + this.repository.save(this.user); + result.updated = true; + }else { + result.errorString = "Die neuen Passwörter entsprechen dem alten Passwort."; + } }else{ result.errorString = "Die beiden neuen Passwörter stimmen nicht überein. Bitte versuchen Sie es erneut."; } @@ -60,7 +64,7 @@ public class UpdateUserSettingsAction { this.repository.save(this.user); result.updated = true; }else{ - result.errorString = "Kreditkartennummer enthält Buchstaben. Bitte versuchen Sie es erneut."; + result.errorString = "Kreditkartennummer darf nur Zahlen enthalten. Bitte versuchen Sie es erneut."; } return result; } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 5b0c50b..7099dd7 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -66,9 +66,10 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updateEmail(email); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } @PostMapping("/settings/changePwd") @@ -84,9 +85,10 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updatePassword(oldPassword, password1, password2); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } @PostMapping("/settings/changeAddress") @@ -102,9 +104,10 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updateShippingInfo(salutation, name, address); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } @PostMapping("/settings/changePaymentInfo") @@ -118,8 +121,9 @@ public class UserController { UpdateUserSettingsAction.UpdateResult result = cusa.updatePaymentInfo(creditCardNumber); if (result.updated == false) { request.setAttribute("error", result.errorString); + return "user/settings"; } - return "user/settings"; + return "redirect:/user/settings"; } } From 614a9295921c26e326385bf4c57bcaa73190b6d4 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 10:21:36 +0200 Subject: [PATCH 19/90] code cleanup --- .../action/user/UpdateUserSettingsAction.java | 40 +++++++++---------- .../org/hso/ecommerce/entities/user/User.java | 6 +-- .../repos/shop/CustomerOrderRepository.java | 3 +- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 9aa8370..4796dbe 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -1,26 +1,23 @@ package org.hso.ecommerce.action.user; -import com.sun.xml.bind.v2.TODO; -import org.hibernate.sql.Update; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.user.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; public class UpdateUserSettingsAction { private User user; private UserRepository repository; - public UpdateUserSettingsAction(User user, UserRepository repository){ + public UpdateUserSettingsAction(User user, UserRepository repository) { this.user = user; this.repository = repository; } - public UpdateResult updateEmail(String newMail){ + public UpdateResult updateEmail(String newMail) { UpdateResult result = new UpdateResult(false); - if(!newMail.contains("@")){ + if (!newMail.contains("@")) { result.errorString = "Ändern der Email-Addresse nicht möglich. Bitte versuchen Sie es erneut."; - }else{ + } else { this.user.email = newMail; this.repository.save(this.user); result.updated = true; @@ -28,28 +25,27 @@ public class UpdateUserSettingsAction { return result; } - public UpdateResult updatePassword(String oldPassword, String password1, String password2){ + public UpdateResult updatePassword(String oldPassword, String password1, String password2) { UpdateResult result = new UpdateResult(false); - if(this.user.validatePassword(oldPassword)) - { - if(password1.equals(password2)){ - if(!password1.equals(oldPassword)){ + if (this.user.validatePassword(oldPassword)) { + if (password1.equals(password2)) { + if (!password1.equals(oldPassword)) { this.user.setPassword(password1); this.repository.save(this.user); result.updated = true; - }else { + } else { result.errorString = "Die neuen Passwörter entsprechen dem alten Passwort."; } - }else{ + } else { result.errorString = "Die beiden neuen Passwörter stimmen nicht überein. Bitte versuchen Sie es erneut."; } - }else{ + } else { result.errorString = "Das eingegebene alte Passwort stimmt nicht mit dem momentan gespeicherten Passwort überein. Bitte versuchen Sie es erneut."; } return result; } - public UpdateResult updateShippingInfo(String salutation, String name, String address){ + public UpdateResult updateShippingInfo(String salutation, String name, String address) { this.user.salutation = salutation; this.user.name = name; this.user.defaultDeliveryAddress.addressString = address; @@ -57,28 +53,28 @@ public class UpdateUserSettingsAction { return new UpdateResult(true); } - public UpdateResult updatePaymentInfo(String creditCardNumber){ + public UpdateResult updatePaymentInfo(String creditCardNumber) { UpdateResult result = new UpdateResult(false); - if(creditCardNumber.matches("[0-9]+")){ + if (creditCardNumber.matches("[0-9]+")) { this.user.defaultPayment.creditCardNumber = creditCardNumber; this.repository.save(this.user); result.updated = true; - }else{ + } else { result.errorString = "Kreditkartennummer darf nur Zahlen enthalten. Bitte versuchen Sie es erneut."; } return result; } - public class UpdateResult{ + public class UpdateResult { public boolean updated; //if true worked, if false not worked public String errorString; - public UpdateResult(boolean updated, String errorString){ + public UpdateResult(boolean updated, String errorString) { this.updated = updated; this.errorString = errorString; } - public UpdateResult(boolean updated){ + public UpdateResult(boolean updated) { this.updated = updated; this.errorString = ""; } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java index 61a4503..e08c2ee 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/user/User.java @@ -24,7 +24,7 @@ public class User { @Column(unique = true) public String email; - @Column(insertable=false, updatable = false) + @Column(insertable = false, updatable = false) public String name; public String salutation; @@ -44,10 +44,6 @@ public class User { return id; } - public void setEmail(String email) { - this.email = email; - } - public boolean validatePassword(String password) { return BCrypt.checkpw(password, passwordHash); } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java index da42f26..3321232 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java @@ -13,5 +13,4 @@ public interface CustomerOrderRepository extends JpaRepository getOrdersByUserId(long userId); -} - +} \ No newline at end of file From 846e448f01be5a89ca8968f65b6b4cea420472c2 Mon Sep 17 00:00:00 2001 From: Hannes Date: Mon, 25 May 2020 12:17:09 +0200 Subject: [PATCH 20/90] code cleanup --- .../java/org/hso/ecommerce/controller/UserController.java | 2 -- .../java/org/hso/ecommerce/entities/shop/CustomerOrder.java | 5 +++++ .../src/main/resources/templates/user/orders/index.html | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 7099dd7..8a90d43 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -40,8 +40,6 @@ public class UserController { User user = userRepository.findById(userId).get(); model.addAttribute("user", user); - //TODO: klären wegen Geschäftskundenunterscheidung - return "user/settings"; } diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java index d9410f7..8b703b6 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/shop/CustomerOrder.java @@ -56,4 +56,9 @@ public class CustomerOrder { public String formatDeliveredAt(){ return new SimpleDateFormat("dd.MM.yyyy HH:mm").format(deliveredAt); } + + public String getEstimatedArrival() { + //TODO: get estimated arrival from api + return "TODO TODO TODO"; + } } diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index b746f52..327bbf2 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -27,7 +27,7 @@
    LieferstatusUnterwegs
    Vorraussichtliche Ankunft: 29.01.2020
    Unterwegs
    Vorraussichtliche Ankunft: TODO TODO TODO TODO
    Angekommen
    Ankunft:
    SendeverfolgungsnummerXE51451436DE
    - Hans Maier
    - Hauptstraße 12
    - 74880 Musterstadt
    - Deutschland
    -
    - + From db1d3d31b22b1cf143f95b1cefb4e87b1706cd9c Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 27 May 2020 14:55:51 +0200 Subject: [PATCH 21/90] fix register --- .../controller/RegisterController.java | 6 ++---- .../main/resources/templates/register.html | 19 ------------------- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index a53e084..4ca8ac8 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -28,9 +28,7 @@ public class RegisterController { @RequestParam("password2") String password2, @RequestParam("salutation") String salutation, @RequestParam("name") String name, - @RequestParam("address") String address, - @RequestParam("type") String type, - @RequestParam("ad") String ad + @RequestParam("address") String address ) { Optional user = userRepository.findByEmail(username); @@ -52,7 +50,7 @@ public class RegisterController { newUser.setPassword(password); newUser.email = username; newUser.isEmployee = false; - //TODO for salutation, type, ad are no attributes/fields in the class/database. Add when they are there. + newUser.salutation = salutation; newUser.isActive = true; newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); diff --git a/prototype/src/main/resources/templates/register.html b/prototype/src/main/resources/templates/register.html index 078191f..fccb016 100644 --- a/prototype/src/main/resources/templates/register.html +++ b/prototype/src/main/resources/templates/register.html @@ -63,25 +63,6 @@ -
    - -
    - -
    -
    - -
    -

    Werbung

    -
    -
    -
    - -
    - -
    -
    -
    -
    From e5b28250c260e07fc08c3e7ef7f1625e3c3a4b98 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 27 May 2020 14:56:15 +0200 Subject: [PATCH 22/90] fix payment method null pointer --- .../hso/ecommerce/action/user/UpdateUserSettingsAction.java | 3 ++- .../java/org/hso/ecommerce/controller/UserController.java | 4 ++++ .../hso/ecommerce/controller/shop/ShopCheckoutController.java | 2 +- .../org/hso/ecommerce/entities/booking/PaymentMethod.java | 2 +- prototype/src/main/resources/templates/user/settings.html | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java index 4796dbe..91b3796 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/user/UpdateUserSettingsAction.java @@ -1,5 +1,6 @@ package org.hso.ecommerce.action.user; +import org.hso.ecommerce.entities.booking.PaymentMethod; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.user.UserRepository; @@ -56,7 +57,7 @@ public class UpdateUserSettingsAction { public UpdateResult updatePaymentInfo(String creditCardNumber) { UpdateResult result = new UpdateResult(false); if (creditCardNumber.matches("[0-9]+")) { - this.user.defaultPayment.creditCardNumber = creditCardNumber; + this.user.defaultPayment = PaymentMethod.fromCreditCardNumber(creditCardNumber); this.repository.save(this.user); result.updated = true; } else { diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index 8a90d43..ff901ba 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,6 +1,7 @@ package org.hso.ecommerce.controller; import org.hso.ecommerce.action.user.UpdateUserSettingsAction; +import org.hso.ecommerce.entities.booking.PaymentMethod; import org.hso.ecommerce.entities.shop.CustomerOrder; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.shop.CustomerOrderRepository; @@ -38,6 +39,9 @@ public class UserController { ) { long userId = (long) session.getAttribute("userId"); User user = userRepository.findById(userId).get(); + if(user.defaultPayment == null){ + user.defaultPayment = PaymentMethod.fromCreditCardNumber(""); + } model.addAttribute("user", user); return "user/settings"; diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java index e9d9e68..d56da9c 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java @@ -122,7 +122,7 @@ public class ShopCheckoutController { user, expectedPrice, Address.fromString(address), - PaymentMethod.fromCreditCarNumber(cardnumber), + PaymentMethod.fromCreditCardNumber(cardnumber), bookingEntryRepository.getByUser(user.id).orElse(BookingAccountEntry.newUser(user)), bookingEntryRepository.getByVat().orElse(BookingAccountEntry.newVat()), bookingEntryRepository.getByMain().orElse(BookingAccountEntry.newMain()) diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java b/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java index af0a9c0..fa9fe62 100644 --- a/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java +++ b/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java @@ -7,7 +7,7 @@ public class PaymentMethod { public String creditCardNumber; - public static PaymentMethod fromCreditCarNumber(String cardnumber) { + public static PaymentMethod fromCreditCardNumber(String cardnumber) { PaymentMethod m = new PaymentMethod(); m.creditCardNumber = cardnumber; diff --git a/prototype/src/main/resources/templates/user/settings.html b/prototype/src/main/resources/templates/user/settings.html index 86f25e3..13e336f 100644 --- a/prototype/src/main/resources/templates/user/settings.html +++ b/prototype/src/main/resources/templates/user/settings.html @@ -97,7 +97,7 @@
    - +
    From 9406bbc4ac38b7b027c71c1662c2958f1bb01b00 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 27 May 2020 15:10:12 +0200 Subject: [PATCH 23/90] fix nullpointer again --- .../java/org/hso/ecommerce/controller/RegisterController.java | 2 ++ .../java/org/hso/ecommerce/controller/UserController.java | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index 4ca8ac8..128ca3a 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -1,5 +1,6 @@ package org.hso.ecommerce.controller; +import org.hso.ecommerce.entities.booking.PaymentMethod; import org.hso.ecommerce.entities.shop.Address; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.user.UserRepository; @@ -51,6 +52,7 @@ public class RegisterController { newUser.email = username; newUser.isEmployee = false; newUser.salutation = salutation; + newUser.defaultPayment = PaymentMethod.fromCreditCardNumber(""); newUser.isActive = true; newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java index ff901ba..8a90d43 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/UserController.java @@ -1,7 +1,6 @@ package org.hso.ecommerce.controller; import org.hso.ecommerce.action.user.UpdateUserSettingsAction; -import org.hso.ecommerce.entities.booking.PaymentMethod; import org.hso.ecommerce.entities.shop.CustomerOrder; import org.hso.ecommerce.entities.user.User; import org.hso.ecommerce.repos.shop.CustomerOrderRepository; @@ -39,9 +38,6 @@ public class UserController { ) { long userId = (long) session.getAttribute("userId"); User user = userRepository.findById(userId).get(); - if(user.defaultPayment == null){ - user.defaultPayment = PaymentMethod.fromCreditCardNumber(""); - } model.addAttribute("user", user); return "user/settings"; From e4d6642d61dd34efef12dc369ba843d96a20ac30 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 27 May 2020 15:52:51 +0200 Subject: [PATCH 24/90] order orders by newest first --- .../org/hso/ecommerce/repos/shop/CustomerOrderRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java index 3321232..8877706 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/CustomerOrderRepository.java @@ -10,7 +10,7 @@ import java.util.List; @Repository public interface CustomerOrderRepository extends JpaRepository { - @Query("SELECT co FROM CustomerOrder co WHERE co.customer.id = :userId") + @Query("SELECT co FROM CustomerOrder co WHERE co.customer.id = :userId ORDER BY co.id DESC") List getOrdersByUserId(long userId); } \ No newline at end of file From 8a2eff1fe9c41c1cec4d2cae47c74aed6a8bc398 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 27 May 2020 19:03:18 +0200 Subject: [PATCH 25/90] code cleanup --- .../main/resources/templates/user/orders/index.html | 10 ---------- .../src/main/resources/templates/user/settings.html | 6 ------ 2 files changed, 16 deletions(-) diff --git a/prototype/src/main/resources/templates/user/orders/index.html b/prototype/src/main/resources/templates/user/orders/index.html index 327bbf2..023910d 100644 --- a/prototype/src/main/resources/templates/user/orders/index.html +++ b/prototype/src/main/resources/templates/user/orders/index.html @@ -38,10 +38,6 @@
    -
    LieferstatusUnterwegs
    Vorraussichtliche Ankunft: TODO TODO TODO TODO
    Unterwegs
    Vorraussichtliche Ankunft:
    Angekommen
    Ankunft:
    @@ -69,12 +65,6 @@ - diff --git a/prototype/src/main/resources/templates/user/settings.html b/prototype/src/main/resources/templates/user/settings.html index 13e336f..c9a2199 100644 --- a/prototype/src/main/resources/templates/user/settings.html +++ b/prototype/src/main/resources/templates/user/settings.html @@ -80,12 +80,6 @@ - -
    + placeholder="Optional: Zusatz Optional: Unternehmen Straße Hausnummer Postleitzeit Ort Land"> +
    +
    + +
    + +
    +
    +
    +

    Werbung

    +
    +
    +
    + +
    + +
    +
    +
    + - - - -
    - - - + + + +
    + + \ No newline at end of file From a41889b2cbe1cd9e172e8168fe81c386c4e953bd Mon Sep 17 00:00:00 2001 From: localhorst Date: Fri, 12 Jun 2020 23:48:28 +0200 Subject: [PATCH 86/90] login in extern loginController, RequestController cleanup, login right after register --- .../hso/ecommerce/app/RequestController.java | 83 ++------------ .../ecommerce/controller/LoginController.java | 63 ++++++++++- .../controller/RegisterController.java | 105 +++++++++--------- 3 files changed, 123 insertions(+), 128 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java b/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java index 3039bb9..406e283 100644 --- a/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java +++ b/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java @@ -1,17 +1,7 @@ package org.hso.ecommerce.app; -import org.hso.ecommerce.entities.user.User; -import org.hso.ecommerce.repos.user.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import java.util.Optional; /** * TODO clean up this class @@ -19,70 +9,13 @@ import java.util.Optional; @Controller public class RequestController { - @Autowired - private final UserRepository userRepository = null; - - static int notSoRandom = 0; - - @GetMapping("/login") - public String login() { - return "login"; - } - - @PostMapping("/login") - public String loginPost( - HttpServletRequest request, - HttpServletResponse response, - @RequestParam("username") String username, - @RequestParam("password") String password, - HttpSession session - ) { - String gto = (String) session.getAttribute("afterLogin"); - - Optional user = userRepository.findByEmail(username); - if (!user.isPresent()) { - request.setAttribute("error", "Email Adresse falsch."); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "login"; - } - - if (!user.get().validatePassword(password)) { - request.setAttribute("error", "Passwort falsch."); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "login"; - } - - if (!user.get().isActive) { - request.setAttribute("error", "User ist deaktiviert."); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "login"; - } - - session.setAttribute("userId", user.get().getId()); - - if (gto != null && gto.startsWith("/")) { - return "redirect:" + gto; - } else { - return "redirect:/"; - } - } - - @PostMapping("/logout") - public String logoutPost(HttpServletResponse response, - HttpSession session - ) { - session.removeAttribute("userId"); - return "redirect:/"; - } - - @GetMapping("/intern/customerOrders/") - public String internCustomerOrder() { - return "intern/customerOrders/index"; - } - - @GetMapping("/intern/customerOrders/{id}") - public String internCustomerOrdersId() { - return "intern/customerOrders/id"; - } + @GetMapping("/intern/customerOrders/") + public String internCustomerOrder() { + return "intern/customerOrders/index"; + } + @GetMapping("/intern/customerOrders/{id}") + public String internCustomerOrdersId() { + return "intern/customerOrders/id"; + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java index 5f4ebad..0138257 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java @@ -1,8 +1,69 @@ package org.hso.ecommerce.controller; +import java.util.Optional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.hso.ecommerce.entities.user.User; +import org.hso.ecommerce.repos.user.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; @Controller -//@RequestMapping("...") +@RequestMapping("/") public class LoginController { + + @Autowired + private final UserRepository userRepository = null; + + @GetMapping("login") + public String login() { + return "login"; + } + + @PostMapping("login") + public String loginPost(HttpServletRequest request, HttpServletResponse response, + @RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { + + String gto = (String) session.getAttribute("afterLogin"); + + Optional user = userRepository.findByEmail(username); + if (!user.isPresent()) { + request.setAttribute("error", "Email Adresse falsch."); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "login"; + } + + if (!user.get().validatePassword(password)) { + request.setAttribute("error", "Passwort falsch."); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "login"; + } + + if (!user.get().isActive) { + request.setAttribute("error", "User ist deaktiviert."); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "login"; + } + + session.setAttribute("userId", user.get().getId()); + + if (gto != null && gto.startsWith("/")) { + return "redirect:" + gto; + } else { + return "redirect:/"; + } + } + + @PostMapping("logout") + public String logoutPost(HttpServletResponse response, HttpSession session) { + session.removeAttribute("userId"); + return "redirect:/"; + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index efd6970..b58099d 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -16,66 +16,67 @@ import javax.servlet.http.HttpSession; import java.util.Optional; @Controller -public class RegisterController { +public class RegisterController { - @Autowired - private final UserRepository userRepository = null; + @Autowired + private final UserRepository userRepository = null; - @PostMapping("/register") - public String registerPost( - HttpServletRequest request, - HttpServletResponse response, - @RequestParam("username") String username, - @RequestParam("password") String password, - @RequestParam("password2") String password2, - @RequestParam("salutation") String salutation, - @RequestParam("name") String name, - @RequestParam("address") String address, - @RequestParam("type") String type, //TODO store - @RequestParam("ad") String ad, //TODO store - HttpSession session - ) - { - Optional user = userRepository.findByEmail(username); - if (user.isPresent()) { - request.setAttribute("error", "Email Adresse existiert bereits!"); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "register"; - } + @PostMapping("/register") + public String registerPost(HttpServletRequest request, HttpServletResponse response, + @RequestParam("username") String username, @RequestParam("password") String password, + @RequestParam("password2") String password2, @RequestParam("salutation") String salutation, + @RequestParam("name") String name, @RequestParam("address") String address, + @RequestParam("type") String type, // TODO store + @RequestParam("ad") String ad, // TODO store + HttpSession session) { + Optional user = userRepository.findByEmail(username); + if (user.isPresent()) { + request.setAttribute("error", "Email Adresse existiert bereits!"); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "register"; + } - if (!password.equals(password2)){ - request.setAttribute("error", "Passwörter sind nicht gleich"); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return "register"; - } + if (!password.equals(password2)) { + request.setAttribute("error", "Passwörter sind nicht gleich"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + return "register"; + } - //set values for new user - User newUser = new User(); - newUser.email = username; - newUser.setPassword(password); - newUser.email = username; - newUser.isEmployee = false; - newUser.salutation = salutation; - newUser.defaultPayment = PaymentMethod.fromCreditCardNumber(""); + // set values for new user + User newUser = new User(); + newUser.email = username; + newUser.setPassword(password); + newUser.email = username; + newUser.isEmployee = false; + newUser.salutation = salutation; + newUser.defaultPayment = PaymentMethod.fromCreditCardNumber(""); - newUser.isActive = true; - newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); + newUser.isActive = true; + newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); - Address newAddress = new Address(); - newAddress.name = name; - newAddress.addressString = address; - newUser.defaultDeliveryAddress = newAddress; + Address newAddress = new Address(); + newAddress.name = name; + newAddress.addressString = address; + newUser.defaultDeliveryAddress = newAddress; - userRepository.save(newUser); // save newUser + userRepository.save(newUser); // save newUser - user = userRepository.findByEmail(username); - session.setAttribute("userId", user.get().getId()); + user = userRepository.findByEmail(username); + session.setAttribute("userId", user.get().getId()); - return "redirect:/"; - } + String gto = (String) session.getAttribute("afterLogin"); - @GetMapping("/register") - public String register() { - return "register"; - } + //login after register + if (gto != null && gto.startsWith("/")) { + return "redirect:" + gto; + } else { + return "redirect:/"; + } + + } + + @GetMapping("/register") + public String register() { + return "register"; + } } From e0e853a57568337752a7bb22e196212da77696c9 Mon Sep 17 00:00:00 2001 From: localhorst Date: Sat, 13 Jun 2020 10:41:59 +0200 Subject: [PATCH 87/90] fixes from PR review --- .../org/hso/ecommerce/controller/LoginController.java | 6 +++--- .../org/hso/ecommerce/controller/RegisterController.java | 4 ++-- prototype/src/main/resources/templates/register.html | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java index 0138257..94182ce 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java @@ -35,19 +35,19 @@ public class LoginController { Optional user = userRepository.findByEmail(username); if (!user.isPresent()) { - request.setAttribute("error", "Email Adresse falsch."); + request.setAttribute("error", "Die Email Adresse falsch."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } if (!user.get().validatePassword(password)) { - request.setAttribute("error", "Passwort falsch."); + request.setAttribute("error", "Das Passwort ist falsch."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } if (!user.get().isActive) { - request.setAttribute("error", "User ist deaktiviert."); + request.setAttribute("error", "Dieses Konto ist deaktiviert.."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index b58099d..36fcdef 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -31,13 +31,13 @@ public class RegisterController { HttpSession session) { Optional user = userRepository.findByEmail(username); if (user.isPresent()) { - request.setAttribute("error", "Email Adresse existiert bereits!"); + request.setAttribute("error", "Die Email Adresse existiert bereits."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "register"; } if (!password.equals(password2)) { - request.setAttribute("error", "Passwörter sind nicht gleich"); + request.setAttribute("error", "Die Passwörter stimmen nicht überein."); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return "register"; } diff --git a/prototype/src/main/resources/templates/register.html b/prototype/src/main/resources/templates/register.html index a2ef401..de4b839 100644 --- a/prototype/src/main/resources/templates/register.html +++ b/prototype/src/main/resources/templates/register.html @@ -56,9 +56,9 @@
    -
    +
    -
    +

    Werbung

    @@ -66,9 +66,9 @@
    -
    +
    -
    +
    From 327ba182f5af06f42f43e20a0f58803db59dfe81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20F=C3=BCrderer?= Date: Sat, 13 Jun 2020 11:10:20 +0200 Subject: [PATCH 88/90] Fix the cash booking sum on customer order Closes #57 --- .../hso/ecommerce/action/shop/CreateOrderAction.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/action/shop/CreateOrderAction.java b/prototype/src/main/java/org/hso/ecommerce/action/shop/CreateOrderAction.java index 8b35be8..1b891db 100644 --- a/prototype/src/main/java/org/hso/ecommerce/action/shop/CreateOrderAction.java +++ b/prototype/src/main/java/org/hso/ecommerce/action/shop/CreateOrderAction.java @@ -74,9 +74,15 @@ public class CreateOrderAction { CustomerPayment payment = createPayment(); List bookingList = new ArrayList<>(); - bookingList.add(new CreateBookingAction(latestUserBooking, latestMainBooking, new BookingReason(order), order.totalGrossCent).finish()); - bookingList.add(new CreateBookingAction(null, latestUserBooking, new BookingReason(payment), order.totalGrossCent).finish()); - bookingList.add(new CreateBookingAction(latestMainBooking, latestVatBooking, new BookingReason(order), order.totalVatCent).finish()); + Booking purchaseBooking = new CreateBookingAction( + latestUserBooking, latestMainBooking, new BookingReason(order), order.totalGrossCent).finish(); + Booking paymentBooking = new CreateBookingAction( + null, purchaseBooking.source /* userAccount */, new BookingReason(payment), order.totalGrossCent).finish(); + Booking vatBooking = new CreateBookingAction( + purchaseBooking.destination /* mainAccount */, latestVatBooking, new BookingReason(order), order.totalVatCent).finish(); + bookingList.add(purchaseBooking); + bookingList.add(paymentBooking); + bookingList.add(vatBooking); WarehouseBooking warehouseBooking = createWarehouseBooking(order); From 9fa2c1f3a7519730cebb51e1ff083ce2bb164aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20F=C3=BCrderer?= Date: Sat, 13 Jun 2020 11:46:16 +0200 Subject: [PATCH 89/90] Allow partial discount on supplier orders Closes #46 --- .../org/hso/ecommerce/supplier/RequestController.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/supplier/src/main/java/org/hso/ecommerce/supplier/RequestController.java b/supplier/src/main/java/org/hso/ecommerce/supplier/RequestController.java index 239a8ac..013daaa 100644 --- a/supplier/src/main/java/org/hso/ecommerce/supplier/RequestController.java +++ b/supplier/src/main/java/org/hso/ecommerce/supplier/RequestController.java @@ -62,10 +62,15 @@ public class RequestController { } int priceNet = a.pricePerUnitNet * order.quantity; - int discount = 0; - if(dailyVolume >= s.discount.minimumDailySalesVolumeNetCent) { - discount = (priceNet * s.discount.percentDiscount) / 100; + int discountableNetAmount = 0; + if (dailyVolume >= s.discount.minimumDailySalesVolumeNetCent) { + // grant discount on the full price + discountableNetAmount = priceNet; + } else if (dailyVolume + priceNet > s.discount.minimumDailySalesVolumeNetCent) { + // grant partial discount + discountableNetAmount = dailyVolume + priceNet - s.discount.minimumDailySalesVolumeNetCent; } + int discount = (discountableNetAmount * s.discount.percentDiscount) / 100; OrderConfirmation confirmation = new OrderConfirmation(); confirmation.articleNumber = order.articleNumber; From 7397698929892092e0a2f7546aceabaf36b82698 Mon Sep 17 00:00:00 2001 From: CodeSteak Date: Sat, 13 Jun 2020 11:54:25 +0200 Subject: [PATCH 90/90] fix check for missing article --- .../controller/intern/suppliers/SupplierOrderController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOrderController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOrderController.java index 952427b..3259a17 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOrderController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOrderController.java @@ -74,7 +74,7 @@ public class SupplierOrderController { final Article article = articleRepository.findArticleByArticleOffer(order.ordered).orElse(null); - if (order == null) { + if (article == null) { model.addAttribute("error", "Der bestellte Artikel wurde nicht angelegt, er hätte nicht bestellt werden dürfen."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return listSuppliers(model);
    Artikel (Netto)