From 5b4c0be1c8fa6d30467137e9b4b755ab515ab436 Mon Sep 17 00:00:00 2001 From: Hannes Date: Wed, 20 May 2020 12:08:57 +0200 Subject: [PATCH] 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"; }