From 15fc6453f85c374cdde53fad79cc38ef359a24bc Mon Sep 17 00:00:00 2001 From: abemorcardc Date: Sat, 3 Apr 2021 13:36:13 +0200 Subject: [PATCH 1/2] =?UTF-8?q?A=C3=B1adidos=20mensajes=20de=20error=20par?= =?UTF-8?q?a=20las=20validaciones=20de=20las=20ofertas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cheapy/web/FoodOfferController.java | 4 ++-- .../cheapy/web/NuOfferController.java | 16 +++++++------- .../cheapy/web/SpeedOfferController.java | 21 +++++++++---------- .../cheapy/web/TimeOfferController.java | 8 +++---- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/springframework/cheapy/web/FoodOfferController.java b/src/main/java/org/springframework/cheapy/web/FoodOfferController.java index 3cd695532..e02c79493 100644 --- a/src/main/java/org/springframework/cheapy/web/FoodOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/FoodOfferController.java @@ -74,7 +74,7 @@ public class FoodOfferController { return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; } else { if(!this.checkDates(foodOffer)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; } Client client = this.clientService.getCurrentClient(); @@ -148,7 +148,7 @@ public class FoodOfferController { } else { if(!this.checkDates(foodOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; } BeanUtils.copyProperties(this.foodOfferService.findFoodOfferById(foodOfferEdit.getId()), foodOfferEdit, diff --git a/src/main/java/org/springframework/cheapy/web/NuOfferController.java b/src/main/java/org/springframework/cheapy/web/NuOfferController.java index fa2c9e28e..6ff1dc88d 100644 --- a/src/main/java/org/springframework/cheapy/web/NuOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/NuOfferController.java @@ -65,7 +65,7 @@ public class NuOfferController { private boolean checkConditions(final NuOffer NuOffer) { boolean res = false; - if(NuOffer.getGold() > NuOffer.getSilver() && NuOffer.getSilver() > NuOffer.getBronze()) { + if(NuOffer.getGold() >= NuOffer.getSilver() && NuOffer.getSilver() >= NuOffer.getBronze()) { res = true; } return res; @@ -73,7 +73,7 @@ public class NuOfferController { private boolean checkDiscounts(final NuOffer NuOffer) { boolean res = false; - if(NuOffer.getDiscountGold() > NuOffer.getDiscountSilver() && NuOffer.getDiscountSilver() > NuOffer.getDiscountBronze()) { + if(NuOffer.getDiscountGold() >= NuOffer.getDiscountSilver() && NuOffer.getDiscountSilver() >= NuOffer.getDiscountBronze()) { res = true; } return res; @@ -92,15 +92,15 @@ public class NuOfferController { return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } else { if(!this.checkDates(nuOffer)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkConditions(nuOffer)) { - //Poner aqui mensaje de error + result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce"); return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkDiscounts(nuOffer)) { - //Poner aqui mensaje de error + result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } nuOffer.setStatus(StatusOffer.hidden); @@ -175,15 +175,15 @@ public class NuOfferController { } else { if(!this.checkDates(nuOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkConditions(nuOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce"); return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkDiscounts(nuOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; } BeanUtils.copyProperties(this.nuOfferService.findNuOfferById(nuOfferEdit.getId()), nuOfferEdit, "start", diff --git a/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java b/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java index a6ec32949..b749f7016 100644 --- a/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java @@ -6,11 +6,10 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import org.springframework.cheapy.model.SpeedOffer; -import org.springframework.cheapy.model.StatusOffer; import org.springframework.beans.BeanUtils; import org.springframework.cheapy.model.Client; -import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.SpeedOffer; +import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.service.ClientService; import org.springframework.cheapy.service.SpeedOfferService; import org.springframework.stereotype.Controller; @@ -63,7 +62,7 @@ public class SpeedOfferController { private boolean checkConditions(final SpeedOffer speedOffer) { boolean res = false; - if(speedOffer.getGold() < speedOffer.getSilver() && speedOffer.getSilver() < speedOffer.getBronze()) { + if(speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) { res = true; } return res; @@ -71,7 +70,7 @@ public class SpeedOfferController { private boolean checkDiscounts(final SpeedOffer speedOffer) { boolean res = false; - if(speedOffer.getDiscountGold() > speedOffer.getDiscountSilver() && speedOffer.getDiscountSilver() > speedOffer.getDiscountBronze()) { + if(speedOffer.getDiscountGold() >= speedOffer.getDiscountSilver() && speedOffer.getDiscountSilver() >= speedOffer.getDiscountBronze()) { res = true; } return res; @@ -90,15 +89,15 @@ public class SpeedOfferController { return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } else { if(!this.checkDates(speedOffer)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkConditions(speedOffer)) { - //Poner aqui mensaje de error + result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce"); return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkDiscounts(speedOffer)) { - //Poner aqui mensaje de error + result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce"); return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } Client client = this.clientService.getCurrentClient(); @@ -168,15 +167,15 @@ public class SpeedOfferController { } else { if(!this.checkDates(speedOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkConditions(speedOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce"); return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkDiscounts(speedOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce"); return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; } BeanUtils.copyProperties(this.speedOfferService.findSpeedOfferById(speedOfferEdit.getId()), speedOfferEdit, diff --git a/src/main/java/org/springframework/cheapy/web/TimeOfferController.java b/src/main/java/org/springframework/cheapy/web/TimeOfferController.java index 780854600..552fe2fe5 100644 --- a/src/main/java/org/springframework/cheapy/web/TimeOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/TimeOfferController.java @@ -81,12 +81,12 @@ public class TimeOfferController { return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; } else { if(!this.checkDates(timeOffer)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkTimes(timeOffer)) { - //Poner aqui mensaje de error + result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio"); return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; } @@ -166,11 +166,11 @@ public class TimeOfferController { } else { if(!this.checkDates(timeOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; } if(!this.checkTimes(timeOfferEdit)) { - //Poner aqui mensaje de error + result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio"); return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; } BeanUtils.copyProperties(this.timeOfferService.findTimeOfferById(timeOfferEdit.getId()), timeOfferEdit, From ee03a94228740035739b90e62aa1db1643d00784 Mon Sep 17 00:00:00 2001 From: abemorcardc Date: Sat, 3 Apr 2021 18:59:50 +0200 Subject: [PATCH 2/2] Los errores se muestran a la vez, arreglado mensaje de error de tiempo --- .../cheapy/web/FoodOfferController.java | 28 +++++----- .../cheapy/web/NuOfferController.java | 53 ++++++++++--------- .../cheapy/web/SpeedOfferController.java | 47 +++++++++------- .../cheapy/web/TimeOfferController.java | 37 +++++++------ .../resources/messages/messages_es.properties | 2 +- .../webapp/WEB-INF/jsp/offers/offersList.jsp | 2 +- .../jsp/offers/time/timeOffersShow.jsp | 2 +- 7 files changed, 94 insertions(+), 77 deletions(-) diff --git a/src/main/java/org/springframework/cheapy/web/FoodOfferController.java b/src/main/java/org/springframework/cheapy/web/FoodOfferController.java index e02c79493..3e1d2673b 100644 --- a/src/main/java/org/springframework/cheapy/web/FoodOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/FoodOfferController.java @@ -55,7 +55,7 @@ public class FoodOfferController { private boolean checkDates(final FoodOffer foodOffer) { boolean res = false; - if(foodOffer.getEnd().isAfter(foodOffer.getStart())) { + if(foodOffer.getEnd()==null || foodOffer.getStart()==null || foodOffer.getEnd().isAfter(foodOffer.getStart())) { res = true; } return res; @@ -70,19 +70,20 @@ public class FoodOfferController { @PostMapping("/offers/food/new") public String processCreationForm(@Valid FoodOffer foodOffer, BindingResult result) { - if (result.hasErrors()) { - return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; - } else { + if(!this.checkDates(foodOffer)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; + } + if (result.hasErrors()) { + return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; + } Client client = this.clientService.getCurrentClient(); foodOffer.setClient(client); foodOffer.setStatus(StatusOffer.hidden); this.foodOfferService.saveFoodOffer(foodOffer); return "redirect:/offers/food/" + foodOffer.getId(); - } + } @GetMapping(value = "/offers/food/{foodOfferId}/activate") @@ -141,21 +142,22 @@ public class FoodOfferController { if (!this.checkOffer(foodOffer, foodOfferEdit)) { return "error"; } - - if (result.hasErrors()) { - model.addAttribute("foodOffer", foodOfferEdit); - return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; - - } else { + if(!this.checkDates(foodOfferEdit)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); + + } + + if (result.hasErrors()) { + model.addAttribute("foodOffer", foodOfferEdit); return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM; + } BeanUtils.copyProperties(this.foodOfferService.findFoodOfferById(foodOfferEdit.getId()), foodOfferEdit, "start", "end", "food", "discount"); this.foodOfferService.saveFoodOffer(foodOfferEdit); return "redirect:/offers/food/" + foodOfferEdit.getId(); - } + } @GetMapping(value = "/offers/food/{foodOfferId}/disable") diff --git a/src/main/java/org/springframework/cheapy/web/NuOfferController.java b/src/main/java/org/springframework/cheapy/web/NuOfferController.java index 6ff1dc88d..cfa792579 100644 --- a/src/main/java/org/springframework/cheapy/web/NuOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/NuOfferController.java @@ -7,12 +7,10 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import org.springframework.cheapy.model.NuOffer; -import org.springframework.cheapy.model.SpeedOffer; -import org.springframework.cheapy.model.StatusOffer; import org.springframework.beans.BeanUtils; import org.springframework.cheapy.model.Client; -import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.NuOffer; +import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.service.ClientService; import org.springframework.cheapy.service.NuOfferService; import org.springframework.stereotype.Controller; @@ -57,15 +55,17 @@ public class NuOfferController { private boolean checkDates(final NuOffer nuOffer) { boolean res = false; - if(nuOffer.getEnd().isAfter(nuOffer.getStart())) { + if(nuOffer.getEnd()==null || nuOffer.getStart()==null || nuOffer.getEnd().isAfter(nuOffer.getStart())) { res = true; } return res; } - private boolean checkConditions(final NuOffer NuOffer) { + private boolean checkConditions(final NuOffer nuOffer) { boolean res = false; - if(NuOffer.getGold() >= NuOffer.getSilver() && NuOffer.getSilver() >= NuOffer.getBronze()) { + if(nuOffer.getGold()==null || nuOffer.getSilver()==null || nuOffer.getBronze()==null) { + + }else if(nuOffer.getGold() >= nuOffer.getSilver() && nuOffer.getSilver() >= nuOffer.getBronze()) { res = true; } return res; @@ -73,7 +73,8 @@ public class NuOfferController { private boolean checkDiscounts(final NuOffer NuOffer) { boolean res = false; - if(NuOffer.getDiscountGold() >= NuOffer.getDiscountSilver() && NuOffer.getDiscountSilver() >= NuOffer.getDiscountBronze()) { + if(NuOffer.getDiscountGold()==null || NuOffer.getDiscountSilver()==null || NuOffer.getDiscountBronze()==null) { + }else if(NuOffer.getDiscountGold() >= NuOffer.getDiscountSilver() && NuOffer.getDiscountSilver() >= NuOffer.getDiscountBronze()) { res = true; } return res; @@ -88,21 +89,23 @@ public class NuOfferController { @PostMapping("/offers/nu/new") public String processCreationForm(@Valid NuOffer nuOffer, BindingResult result) { - if (result.hasErrors()) { - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; - } else { + if(!this.checkDates(nuOffer)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkConditions(nuOffer)) { result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce"); - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkDiscounts(nuOffer)) { result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } + + if (result.hasErrors()) { + return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } nuOffer.setStatus(StatusOffer.hidden); Client client = this.clientService.getCurrentClient(); @@ -111,7 +114,7 @@ public class NuOfferController { this.nuOfferService.saveNuOffer(nuOffer); return "redirect:/offers/nu/" + nuOffer.getId(); - } + } @GetMapping(value = "/offers/nu/{nuOfferId}/activate") @@ -169,28 +172,30 @@ public class NuOfferController { return "error"; } - if (result.hasErrors()) { - model.addAttribute("nuOffer", nuOfferEdit); - return NuOfferController.VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; - - } else { if(!this.checkDates(nuOfferEdit)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkConditions(nuOfferEdit)) { result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce"); - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkDiscounts(nuOfferEdit)) { result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); - return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + } + + + if (result.hasErrors()) { + model.addAttribute("nuOffer", nuOfferEdit); + return NuOfferController.VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM; + + } BeanUtils.copyProperties(this.nuOfferService.findNuOfferById(nuOfferEdit.getId()), nuOfferEdit, "start", "end", "gold", "discount_gold", "silver", "discount_silver", "bronze", "discount_bronze"); this.nuOfferService.saveNuOffer(nuOfferEdit); return "redirect:/offers/nu/" + nuOfferEdit.getId(); - } + } @GetMapping(value = "/offers/nu/{nuOfferId}/disable") diff --git a/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java b/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java index b749f7016..9785a4ed5 100644 --- a/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/SpeedOfferController.java @@ -54,7 +54,7 @@ public class SpeedOfferController { private boolean checkDates(final SpeedOffer speedOffer) { boolean res = false; - if(speedOffer.getEnd().isAfter(speedOffer.getStart())) { + if(speedOffer.getEnd()==null || speedOffer.getStart()==null || speedOffer.getEnd().isAfter(speedOffer.getStart())) { res = true; } return res; @@ -62,7 +62,9 @@ public class SpeedOfferController { private boolean checkConditions(final SpeedOffer speedOffer) { boolean res = false; - if(speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) { + if(speedOffer.getGold()==null || speedOffer.getSilver()==null || speedOffer.getBronze()==null) { + + }else if(speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) { res = true; } return res; @@ -70,7 +72,8 @@ public class SpeedOfferController { private boolean checkDiscounts(final SpeedOffer speedOffer) { boolean res = false; - if(speedOffer.getDiscountGold() >= speedOffer.getDiscountSilver() && speedOffer.getDiscountSilver() >= speedOffer.getDiscountBronze()) { + if(speedOffer.getDiscountGold()==null || speedOffer.getDiscountSilver()==null || speedOffer.getDiscountBronze()==null) { + }else if(speedOffer.getDiscountGold() >= speedOffer.getDiscountSilver() && speedOffer.getDiscountSilver() >= speedOffer.getDiscountBronze()) { res = true; } return res; @@ -85,27 +88,30 @@ public class SpeedOfferController { @PostMapping("/offers/speed/new") public String processCreationForm(@Valid SpeedOffer speedOffer, BindingResult result) { - if (result.hasErrors()) { - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; - } else { + if(!this.checkDates(speedOffer)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkConditions(speedOffer)) { result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce"); - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkDiscounts(speedOffer)) { result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce"); - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + } + + if (result.hasErrors()) { + return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + } + Client client = this.clientService.getCurrentClient(); speedOffer.setClient(client); speedOffer.setStatus(StatusOffer.hidden); this.speedOfferService.saveSpeedOffer(speedOffer); return "redirect:/offers/speed/" + speedOffer.getId(); - } + } @GetMapping(value = "/offers/speed/{speedOfferId}/activate") @@ -161,28 +167,29 @@ public class SpeedOfferController { return "error"; } - if (result.hasErrors()) { - model.addAttribute("speedOffer", speedOfferEdit); - return SpeedOfferController.VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; - - } else { if(!this.checkDates(speedOfferEdit)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkConditions(speedOfferEdit)) { result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce"); - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkDiscounts(speedOfferEdit)) { - result.rejectValue("discountGold","" ,"El descuento de Oro debe ser menor o igual que el de plata, y el de plata menor o igual que el de bronce"); - return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + result.rejectValue("discountGold","" ,"El descuento de Oro debe ser mayor o igual que el de plata, y el de plata mayor o igual que el de bronce"); + } + + if (result.hasErrors()) { + model.addAttribute("speedOffer", speedOfferEdit); + return SpeedOfferController.VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM; + + } BeanUtils.copyProperties(this.speedOfferService.findSpeedOfferById(speedOfferEdit.getId()), speedOfferEdit, "start", "end", "gold", "discount_gold", "silver", "discount_silver", "bronze", "discount_bronze"); this.speedOfferService.saveSpeedOffer(speedOfferEdit); return "redirect:/offers/speed/" + speedOfferEdit.getId(); - } + } diff --git a/src/main/java/org/springframework/cheapy/web/TimeOfferController.java b/src/main/java/org/springframework/cheapy/web/TimeOfferController.java index 552fe2fe5..3be933036 100644 --- a/src/main/java/org/springframework/cheapy/web/TimeOfferController.java +++ b/src/main/java/org/springframework/cheapy/web/TimeOfferController.java @@ -8,7 +8,6 @@ import javax.validation.Valid; import org.springframework.beans.BeanUtils; import org.springframework.cheapy.model.Client; -import org.springframework.cheapy.model.FoodOffer; import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.model.TimeOffer; import org.springframework.cheapy.service.ClientService; @@ -54,7 +53,7 @@ public class TimeOfferController { private boolean checkDates(final TimeOffer timeOffer) { boolean res = false; - if(timeOffer.getEnd().isAfter(timeOffer.getStart())) { + if(timeOffer.getEnd()==null || timeOffer.getStart()==null || timeOffer.getEnd().isAfter(timeOffer.getStart())) { res = true; } return res; @@ -62,7 +61,7 @@ public class TimeOfferController { private boolean checkTimes(final TimeOffer timeOffer) { boolean res = false; - if(timeOffer.getFinish().isAfter(timeOffer.getInit())) { + if(timeOffer.getFinish()==null || timeOffer.getInit()==null || timeOffer.getFinish().isAfter(timeOffer.getInit())) { res = true; } return res; @@ -77,19 +76,21 @@ public class TimeOfferController { @PostMapping("/offers/time/new") public String processCreationForm(@Valid TimeOffer timeOffer, BindingResult result) { - if (result.hasErrors()) { - return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; - } else { + if(!this.checkDates(timeOffer)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkTimes(timeOffer)) { result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio"); - return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; + } + if (result.hasErrors()) { + return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; + } + timeOffer.setStatus(StatusOffer.hidden); Client client = this.clientService.getCurrentClient(); @@ -98,7 +99,7 @@ public class TimeOfferController { this.timeOfferService.saveTimeOffer(timeOffer); return "redirect:/offers/time/" + timeOffer.getId(); - } + } @GetMapping(value = "/offers/time/{timeOfferId}/activate") @@ -160,24 +161,26 @@ public class TimeOfferController { return "error"; } - if (result.hasErrors()) { - model.addAttribute("timeOffer", timeOfferEdit); - return TimeOfferController.VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; - - } else { + if(!this.checkDates(timeOfferEdit)) { result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio"); - return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; + } if(!this.checkTimes(timeOfferEdit)) { result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio"); - return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; + } + if (result.hasErrors()) { + model.addAttribute("timeOffer", timeOfferEdit); + return TimeOfferController.VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM; + + } + BeanUtils.copyProperties(this.timeOfferService.findTimeOfferById(timeOfferEdit.getId()), timeOfferEdit, "start", "end", "init", "finish", "discount"); this.timeOfferService.saveTimeOffer(timeOfferEdit); return "redirect:/offers/time/" + timeOfferEdit.getId(); - } + } diff --git a/src/main/resources/messages/messages_es.properties b/src/main/resources/messages/messages_es.properties index a4aebbe00..a6b8610f9 100644 --- a/src/main/resources/messages/messages_es.properties +++ b/src/main/resources/messages/messages_es.properties @@ -47,4 +47,4 @@ createNuOffers= Crear ofertas por nĂºmero de comensales createSpeedOffers= Crear ofertas por rapidez comiendo createTimeOffers= Crear ofertas por franja horaria init= Inicio del intervalo -finish= Fin del intervalo +finishOffer= Fin del intervalo diff --git a/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp b/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp index 7817f06e7..5c339b735 100644 --- a/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp +++ b/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp @@ -165,7 +165,7 @@ - + diff --git a/src/main/webapp/WEB-INF/jsp/offers/time/timeOffersShow.jsp b/src/main/webapp/WEB-INF/jsp/offers/time/timeOffersShow.jsp index df891e271..b24312b1d 100644 --- a/src/main/webapp/WEB-INF/jsp/offers/time/timeOffersShow.jsp +++ b/src/main/webapp/WEB-INF/jsp/offers/time/timeOffersShow.jsp @@ -27,7 +27,7 @@ - +