#88 018-paginacion-issue#65 a develop

018 paginacion issue#65
This commit is contained in:
gabgutpri 2021-04-10 21:45:43 +02:00 committed by GitHub
commit f2e12d1b94
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 581 additions and 414 deletions

View file

@ -1,27 +1,29 @@
package org.springframework.cheapy.repository;
import java.util.List;
import org.springframework.cheapy.model.NuOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
public interface NuOfferRepository extends Repository<NuOffer, Integer> {
public interface NuOfferRepository extends PagingAndSortingRepository<NuOffer, Integer> {
NuOffer findNuOfferById(int nuOfferId);
@Query("SELECT nuOffer FROM NuOffer nuOffer")
@Transactional(readOnly = true)
List<NuOffer> findAllNuOffer();
List<NuOffer> findAllNuOffer(Pageable p);
void save(NuOffer nuOffer);
//void save(NuOffer nuOffer);
@Query("SELECT nuOffer FROM NuOffer nuOffer WHERE nuOffer.status =:status")
@Transactional(readOnly = true)
List<NuOffer> findActiveNuOffer(StatusOffer status);
List<NuOffer> findActiveNuOffer(StatusOffer status, Pageable p);
@Query("SELECT nuOffer FROM NuOffer nuOffer WHERE nuOffer.client.id =:id")
@Transactional(readOnly = true)

View file

@ -1,20 +1,22 @@
package org.springframework.cheapy.repository;
import java.util.List;
import org.springframework.cheapy.model.Review;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
public interface ReviewRepository extends Repository<Review, Integer> {
public interface ReviewRepository extends PagingAndSortingRepository<Review, Integer> {
@Query("SELECT r FROM Review r")
@Transactional(readOnly = true)
List<Review> findAllReviews();
List<Review> findAllReviews(Pageable p);
void save(Review review);
//void save(Review review);
@Query("SELECT r FROM Review r WHERE id =:id")
@Transactional(readOnly = true)

View file

@ -1,29 +1,31 @@
package org.springframework.cheapy.repository;
import java.util.List;
import org.springframework.cheapy.model.SpeedOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
public interface SpeedOfferRepository extends Repository<SpeedOffer, Integer> {
public interface SpeedOfferRepository extends PagingAndSortingRepository<SpeedOffer, Integer> {
@Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE id =:id")
@Transactional(readOnly = true)
SpeedOffer findById(@Param("id") Integer id);
SpeedOffer findByIdSO(@Param("id") Integer id);
@Query("SELECT speedOffer FROM SpeedOffer speedOffer")
@Transactional(readOnly = true)
List<SpeedOffer> findAllSpeedOffer();
List<SpeedOffer> findAllSpeedOffer(Pageable p);
void save(SpeedOffer speedOffer);
//void save(SpeedOffer speedOffer);
@Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE speedOffer.status =:status")
@Transactional(readOnly = true)
List<SpeedOffer> findActiveSpeedOffer(StatusOffer status);
List<SpeedOffer> findActiveSpeedOffer(StatusOffer status, Pageable p);
@Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE speedOffer.client.id =:id")
@Transactional(readOnly = true)

View file

@ -1,27 +1,30 @@
package org.springframework.cheapy.repository;
import java.util.List;
import org.springframework.cheapy.model.FoodOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.model.TimeOffer;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
public interface TimeOfferRepository extends Repository<TimeOffer, Integer> {
public interface TimeOfferRepository extends PagingAndSortingRepository<FoodOffer, Integer> {
TimeOffer findTimeOfferById(int timeOfferId);
@Query("SELECT timeOffer FROM TimeOffer timeOffer")
@Transactional(readOnly = true)
List<TimeOffer> findAllTimeOffer();
List<TimeOffer> findAllTimeOffer(Pageable p);
void save(TimeOffer timeOffer);
@Query("SELECT timeOffer FROM TimeOffer timeOffer WHERE timeOffer.status =:status")
@Transactional(readOnly = true)
List<TimeOffer> findActiveTimeOffer(StatusOffer status);
List<TimeOffer> findActiveTimeOffer(StatusOffer status, Pageable p);
@Query("SELECT timeOffer FROM TimeOffer timeOffer WHERE timeOffer.client.id =:id")
@Transactional(readOnly = true)

View file

@ -1,12 +1,14 @@
package org.springframework.cheapy.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cheapy.model.NuOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.repository.NuOfferRepository;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -15,6 +17,7 @@ public class NuOfferService {
private NuOfferRepository nuOfferRepository;
@Autowired
public NuOfferService(final NuOfferRepository nuOfferRepository) {
this.nuOfferRepository = nuOfferRepository;
@ -26,8 +29,8 @@ public class NuOfferService {
}
@Transactional
public List<NuOffer> findAllNuOffer() {
return this.nuOfferRepository.findAllNuOffer();
public List<NuOffer> findAllNuOffer(final Pageable page) {
return this.nuOfferRepository.findAllNuOffer(page);
}
@Transactional
@ -40,8 +43,8 @@ public class NuOfferService {
this.nuOfferRepository.save(nuOfferNew);
}
public List<NuOffer> findActiveNuOffer() {
return this.nuOfferRepository.findActiveNuOffer(StatusOffer.active);
public List<NuOffer> findActiveNuOffer(final Pageable page) {
return this.nuOfferRepository.findActiveNuOffer(StatusOffer.active, page);
}
public List<NuOffer> findNuOfferByUserId(final int id) {

View file

@ -1,3 +1,4 @@
package org.springframework.cheapy.service;
import java.util.List;
@ -5,15 +6,17 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cheapy.model.Review;
import org.springframework.cheapy.repository.ReviewRepository;
import org.springframework.dao.DataAccessException;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class ReviewService {
private ReviewRepository reviewRepository;
@Autowired
public ReviewService(final ReviewRepository reviewRepository) {
this.reviewRepository = reviewRepository;
@ -25,8 +28,8 @@ public class ReviewService {
}
@Transactional
public List<Review> findAllReviews() {
return this.reviewRepository.findAllReviews();
public List<Review> findAllReviews(final Pageable page) {
return this.reviewRepository.findAllReviews(page);
}
@Transactional

View file

@ -2,11 +2,13 @@
package org.springframework.cheapy.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cheapy.model.SpeedOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.repository.SpeedOfferRepository;
import org.springframework.dao.DataAccessException;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -23,12 +25,12 @@ public class SpeedOfferService {
@Transactional
public SpeedOffer findSpeedOfferById(final int id) {
return this.speedOfferRepository.findById(id);
return this.speedOfferRepository.findByIdSO(id);
}
@Transactional
public List<SpeedOffer> findAllSpeedOffer() { //
return this.speedOfferRepository.findAllSpeedOffer();
public List<SpeedOffer> findAllSpeedOffer(final Pageable page) { //
return this.speedOfferRepository.findAllSpeedOffer(page);
}
@Transactional
@ -36,8 +38,8 @@ public class SpeedOfferService {
this.speedOfferRepository.save(speedOffer);
}
public List<SpeedOffer> findActiveSpeedOffer() {
return this.speedOfferRepository.findActiveSpeedOffer(StatusOffer.active);
public List<SpeedOffer> findActiveSpeedOffer(final Pageable page) {
return this.speedOfferRepository.findActiveSpeedOffer(StatusOffer.active, page);
}
public List<SpeedOffer> findSpeedOfferByUserId(final int id) {

View file

@ -1,3 +1,4 @@
package org.springframework.cheapy.service;
import java.util.List;
@ -6,12 +7,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.model.TimeOffer;
import org.springframework.cheapy.repository.TimeOfferRepository;
import org.springframework.dao.DataAccessException;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@Service
public class TimeOfferService {
private TimeOfferRepository timeOfferRepository;
@ -24,17 +26,16 @@ public class TimeOfferService {
return this.timeOfferRepository.findTimeOfferById(id);
}
public List<TimeOffer> findAllTimeOffer() {
return this.timeOfferRepository.findAllTimeOffer();
public List<TimeOffer> findAllTimeOffer(final Pageable page) {
return this.timeOfferRepository.findAllTimeOffer(page);
}
public void saveTimeOffer(final TimeOffer TimeOffer) throws DataAccessException {
this.timeOfferRepository.save(TimeOffer);
}
public List<TimeOffer> findActiveTimeOffer() {
return this.timeOfferRepository.findActiveTimeOffer(StatusOffer.active);
public List<TimeOffer> findActiveTimeOffer(final Pageable p) {
return this.timeOfferRepository.findActiveTimeOffer(StatusOffer.active, p);
}
public List<TimeOffer> findTimeOfferByUserId(final int id) {

View file

@ -14,6 +14,8 @@ import org.springframework.cheapy.model.FoodOffer;
import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.service.ClientService;
import org.springframework.cheapy.service.FoodOfferService;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
@ -29,6 +31,7 @@ public class FoodOfferController {
private final FoodOfferService foodOfferService;
private final ClientService clientService;
public FoodOfferController(final FoodOfferService foodOfferService, final ClientService clientService) {
this.foodOfferService = foodOfferService;
this.clientService = clientService;
@ -47,8 +50,7 @@ public class FoodOfferController {
private boolean checkOffer(final FoodOffer session, final FoodOffer offer) {
boolean res = false;
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus()
&& (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !(session.getStatus().equals(StatusOffer.inactive))) {
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus() && (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !session.getStatus().equals(StatusOffer.inactive)) {
res = true;
}
return res;
@ -56,15 +58,17 @@ public class FoodOfferController {
private boolean checkDates(final FoodOffer foodOffer) {
boolean res = false;
if(foodOffer.getEnd()==null || foodOffer.getStart()==null || foodOffer.getEnd().isAfter(foodOffer.getStart())) {
if (foodOffer.getEnd() == null || foodOffer.getStart() == null || foodOffer.getEnd().isAfter(foodOffer.getStart())) {
res = true;
}
return res;
}
@GetMapping("/offers/foodOfferList")
public String processFindForm(Map<String, Object> model) {
List<FoodOffer> foodOfferLs=this.foodOfferService.findActiveFoodOffer();
@GetMapping("/offers/foodOfferList/{page}")
public String processFindForm(@PathVariable("page") final int page, final Map<String, Object> model) {
Pageable elements = PageRequest.of(page, 5);
List<FoodOffer> foodOfferLs = this.foodOfferService.findActiveFoodOffer(elements);
model.put("foodOfferLs", foodOfferLs);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/food/foodOffersList";
@ -72,21 +76,21 @@ public class FoodOfferController {
}
@GetMapping("/offers/food/new")
public String initCreationForm(Map<String, Object> model) {
public String initCreationForm(final Map<String, Object> model) {
FoodOffer foodOffer = new FoodOffer();
model.put("foodOffer", foodOffer);
return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
}
@PostMapping("/offers/food/new")
public String processCreationForm(@Valid FoodOffer foodOffer, BindingResult result) {
public String processCreationForm(@Valid final FoodOffer foodOffer, final BindingResult result) {
if(!this.checkDates(foodOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(foodOffer)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if (result.hasErrors()) {
return VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
}
Client client = this.clientService.getCurrentClient();
foodOffer.setClient(client);
@ -97,7 +101,7 @@ public class FoodOfferController {
}
@GetMapping(value = "/offers/food/{foodOfferId}/activate")
public String activateFoodOffer(@PathVariable("foodOfferId") final int foodOfferId, ModelMap modelMap) {
public String activateFoodOffer(@PathVariable("foodOfferId") final int foodOfferId, final ModelMap modelMap) {
FoodOffer foodOffer = this.foodOfferService.findFoodOfferById(foodOfferId);
Client client = this.clientService.getCurrentClient();
if (foodOffer.getClient().equals(client)) {
@ -112,26 +116,25 @@ public class FoodOfferController {
}
@GetMapping("/offers/food/{foodOfferId}")
public String processShowForm(@PathVariable("foodOfferId") int foodOfferId, Map<String, Object> model) {
public String processShowForm(@PathVariable("foodOfferId") final int foodOfferId, final Map<String, Object> model) {
FoodOffer foodOffer = this.foodOfferService.findFoodOfferById(foodOfferId);
if(foodOffer.getStatus().equals(StatusOffer.active)) {
if (foodOffer.getStatus().equals(StatusOffer.active)) {
model.put("foodOffer", foodOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/food/foodOffersShow";
}else if(foodOffer.getStatus().equals(StatusOffer.hidden)&&(this.checkIdentity(foodOfferId))) {
} else if (foodOffer.getStatus().equals(StatusOffer.hidden) && this.checkIdentity(foodOfferId)) {
model.put("foodOffer", foodOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/food/foodOffersShow";
}else {
} else {
return "error";
}
}
@GetMapping(value = "/offers/food/{foodOfferId}/edit")
public String updateFoodOffer(@PathVariable("foodOfferId") final int foodOfferId, final ModelMap model,
HttpServletRequest request) {
public String updateFoodOffer(@PathVariable("foodOfferId") final int foodOfferId, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(foodOfferId)) {
return "error";
@ -146,8 +149,7 @@ public class FoodOfferController {
}
@PostMapping(value = "/offers/food/{foodOfferId}/edit")
public String updateFoodOffer(@Valid final FoodOffer foodOfferEdit, final BindingResult result,
final ModelMap model, HttpServletRequest request) {
public String updateFoodOffer(@Valid final FoodOffer foodOfferEdit, final BindingResult result, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(foodOfferEdit.getId())) {
return "error";
@ -158,8 +160,8 @@ public class FoodOfferController {
return "error";
}
if(!this.checkDates(foodOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(foodOfferEdit)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
@ -168,8 +170,7 @@ public class FoodOfferController {
return FoodOfferController.VIEWS_FOOD_OFFER_CREATE_OR_UPDATE_FORM;
}
BeanUtils.copyProperties(this.foodOfferService.findFoodOfferById(foodOfferEdit.getId()), foodOfferEdit,
"start", "end", "food", "discount");
BeanUtils.copyProperties(this.foodOfferService.findFoodOfferById(foodOfferEdit.getId()), foodOfferEdit, "start", "end", "food", "discount");
this.foodOfferService.saveFoodOffer(foodOfferEdit);
return "redirect:/offers/food/" + foodOfferEdit.getId();

View file

@ -1,3 +1,4 @@
package org.springframework.cheapy.web;
import java.security.Principal;
@ -14,6 +15,8 @@ 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.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
@ -29,6 +32,7 @@ public class NuOfferController {
private final NuOfferService nuOfferService;
private final ClientService clientService;
public NuOfferController(final NuOfferService nuOfferService, final ClientService clientService) {
this.nuOfferService = nuOfferService;
this.clientService = clientService;
@ -47,8 +51,7 @@ public class NuOfferController {
private boolean checkOffer(final NuOffer session, final NuOffer offer) {
boolean res = false;
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus()
&& (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !(session.getStatus().equals(StatusOffer.inactive))) {
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus() && (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !session.getStatus().equals(StatusOffer.inactive)) {
res = true;
}
return res;
@ -56,7 +59,7 @@ public class NuOfferController {
private boolean checkDates(final NuOffer nuOffer) {
boolean res = false;
if(nuOffer.getEnd()==null || nuOffer.getStart()==null || nuOffer.getEnd().isAfter(nuOffer.getStart())) {
if (nuOffer.getEnd() == null || nuOffer.getStart() == null || nuOffer.getEnd().isAfter(nuOffer.getStart())) {
res = true;
}
return res;
@ -64,9 +67,9 @@ public class NuOfferController {
private boolean checkConditions(final NuOffer nuOffer) {
boolean res = false;
if(nuOffer.getGold()==null || nuOffer.getSilver()==null || nuOffer.getBronze()==null) {
if (nuOffer.getGold() == null || nuOffer.getSilver() == null || nuOffer.getBronze() == null) {
}else if(nuOffer.getGold() >= nuOffer.getSilver() && nuOffer.getSilver() >= nuOffer.getBronze()) {
} else if (nuOffer.getGold() >= nuOffer.getSilver() && nuOffer.getSilver() >= nuOffer.getBronze()) {
res = true;
}
return res;
@ -74,16 +77,18 @@ public class NuOfferController {
private boolean checkDiscounts(final NuOffer NuOffer) {
boolean res = false;
if(NuOffer.getDiscountGold()==null || NuOffer.getDiscountSilver()==null || NuOffer.getDiscountBronze()==null) {
}else 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;
}
@GetMapping("/offers/nuOfferList")
public String processFindForm(Map<String, Object> model) {
List<NuOffer> foodOfferLs=this.nuOfferService.findActiveNuOffer();
@GetMapping("/offers/nuOfferList/{page}")
public String processFindForm(@PathVariable("page") final int page, final Map<String, Object> model) {
Pageable elements = PageRequest.of(page, 5);
List<NuOffer> foodOfferLs = this.nuOfferService.findActiveNuOffer(elements);
model.put("nuOfferLs", foodOfferLs);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/nu/nuOffersList";
@ -91,30 +96,30 @@ public class NuOfferController {
}
@GetMapping("/offers/nu/new")
public String initCreationForm(Map<String, Object> model) {
public String initCreationForm(final Map<String, Object> model) {
NuOffer nuOffer = new NuOffer();
model.put("nuOffer", nuOffer);
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
return NuOfferController.VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
}
@PostMapping("/offers/nu/new")
public String processCreationForm(@Valid NuOffer nuOffer, BindingResult result) {
public String processCreationForm(@Valid final NuOffer nuOffer, final BindingResult result) {
if(!this.checkDates(nuOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(nuOffer)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if(!this.checkConditions(nuOffer)) {
result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce");
if (!this.checkConditions(nuOffer)) {
result.rejectValue("gold", "", "Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce");
}
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");
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");
}
if (result.hasErrors()) {
return VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
return NuOfferController.VIEWS_NU_OFFER_CREATE_OR_UPDATE_FORM;
}
nuOffer.setStatus(StatusOffer.hidden);
@ -144,26 +149,25 @@ public class NuOfferController {
}
@GetMapping("/offers/nu/{nuOfferId}")
public String processShowForm(@PathVariable("nuOfferId") int nuOfferId, Map<String, Object> model) {
public String processShowForm(@PathVariable("nuOfferId") final int nuOfferId, final Map<String, Object> model) {
NuOffer nuOffer = this.nuOfferService.findNuOfferById(nuOfferId);
if(nuOffer.getStatus().equals(StatusOffer.active)) {
if (nuOffer.getStatus().equals(StatusOffer.active)) {
model.put("nuOffer", nuOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/nu/nuOffersShow";
}else if(nuOffer.getStatus().equals(StatusOffer.hidden)&&(this.checkIdentity(nuOfferId))) {
} else if (nuOffer.getStatus().equals(StatusOffer.hidden) && this.checkIdentity(nuOfferId)) {
model.put("nuOffer", nuOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/nu/nuOffersShow";
}else {
} else {
return "error";
}
}
@GetMapping(value = "/offers/nu/{nuOfferId}/edit")
public String updateNuOffer(@PathVariable("nuOfferId") final int nuOfferId, final ModelMap model,
HttpServletRequest request) {
public String updateNuOffer(@PathVariable("nuOfferId") final int nuOfferId, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(nuOfferId)) {
return "error";
@ -178,8 +182,7 @@ public class NuOfferController {
}
@PostMapping(value = "/offers/nu/{nuOfferId}/edit")
public String updateNuOffer(@Valid final NuOffer nuOfferEdit, final BindingResult result, final ModelMap model,
HttpServletRequest request) {
public String updateNuOffer(@Valid final NuOffer nuOfferEdit, final BindingResult result, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(nuOfferEdit.getId())) {
return "error";
@ -190,35 +193,32 @@ public class NuOfferController {
return "error";
}
if(!this.checkDates(nuOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(nuOfferEdit)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if(!this.checkConditions(nuOfferEdit)) {
result.rejectValue("gold","" ,"Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce");
if (!this.checkConditions(nuOfferEdit)) {
result.rejectValue("gold", "", "Oro debe ser mayor o igual que plata, y plata mayor o igual que bronce");
}
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");
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");
}
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");
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")
public String disableNuOffer(@PathVariable("nuOfferId") final int nuOfferId, final Principal principal,
final ModelMap model) {
public String disableNuOffer(@PathVariable("nuOfferId") final int nuOfferId, final Principal principal, final ModelMap model) {
if (!this.checkIdentity(nuOfferId)) {
return "error";
@ -230,8 +230,7 @@ public class NuOfferController {
}
@PostMapping(value = "/offers/nu/{nuOfferId}/disable")
public String disableNuOfferForm(@PathVariable("nuOfferId") final int nuOfferId, final Principal principal,
final ModelMap model) {
public String disableNuOfferForm(@PathVariable("nuOfferId") final int nuOfferId, final Principal principal, final ModelMap model) {
if (!this.checkIdentity(nuOfferId)) {
return "error";

View file

@ -43,9 +43,9 @@ public class OfertaController {
Pageable elements = PageRequest.of(0, 3);
List<FoodOffer> foodOfferLs = this.foodOfferService.findActiveFoodOffer(elements);
List<NuOffer> nuOfferLs = this.nuOfferService.findActiveNuOffer();
List<SpeedOffer> speedOfferLs = this.speedOfferService.findActiveSpeedOffer();
List<TimeOffer> timeOfferLs = this.timeOfferService.findActiveTimeOffer();
List<NuOffer> nuOfferLs = this.nuOfferService.findActiveNuOffer(elements);
List<SpeedOffer> speedOfferLs = this.speedOfferService.findActiveSpeedOffer(elements);
List<TimeOffer> timeOfferLs = this.timeOfferService.findActiveTimeOffer(elements);
model.put("foodOfferLs", foodOfferLs);
model.put("nuOfferLs", nuOfferLs);

View file

@ -1,3 +1,4 @@
package org.springframework.cheapy.web;
import java.util.List;
@ -9,6 +10,8 @@ import org.springframework.cheapy.model.Review;
import org.springframework.cheapy.model.User;
import org.springframework.cheapy.service.ReviewService;
import org.springframework.cheapy.service.UserService;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
@ -19,11 +22,11 @@ import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class ReviewController {
private static final String VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM = "reviews/createOrUpdateReviewForm";
private final ReviewService reviewService;
private final UserService userService;
public ReviewController(final ReviewService reviewService, final UserService userService) {
this.reviewService = reviewService;
this.userService = userService;
@ -38,10 +41,11 @@ public class ReviewController {
}
return res;
}
@GetMapping("/reviews")
public String processFindForm( Map<String, Object> model) {
@GetMapping("/reviewsList/{page}")
public String processFindForm(@PathVariable("page") final int page, final Map<String, Object> model) {
Pageable elements = PageRequest.of(page, 6);
List<Review> reviewsLs=this.reviewService.findAllReviews();
List<Review> reviewsLs = this.reviewService.findAllReviews(elements);
model.put("reviewsLs", reviewsLs);
return "reviews/reviewsList";
@ -49,16 +53,16 @@ public class ReviewController {
}
@GetMapping("/reviews/new")
public String initCreationForm(Map<String, Object> model) {
public String initCreationForm(final Map<String, Object> model) {
Review review = new Review();
model.put("review", review);
return VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM;
return ReviewController.VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM;
}
@PostMapping("/reviews/new")
public String processCreationForm(@Valid Review review, BindingResult result) {
public String processCreationForm(@Valid final Review review, final BindingResult result) {
if (result.hasErrors()) {
return VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM;
return ReviewController.VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM;
} else {
User escritor = this.userService.getCurrentUser();
review.setEscritor(escritor);
@ -68,16 +72,13 @@ public class ReviewController {
}
}
@GetMapping("/reviews/{reviewId}")
public String processShowForm(@PathVariable("reviewId") int reviewId, Map<String, Object> model) {
public String processShowForm(@PathVariable("reviewId") final int reviewId, final Map<String, Object> model) {
Review review = this.reviewService.findReviewById(reviewId);
model.put("review", review);
return "reviews/reviewsShow";
}

View file

@ -1,3 +1,4 @@
package org.springframework.cheapy.web;
import java.time.format.DateTimeFormatter;
@ -13,6 +14,8 @@ 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.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
@ -28,6 +31,7 @@ public class SpeedOfferController {
private final SpeedOfferService speedOfferService;
private final ClientService clientService;
public SpeedOfferController(final SpeedOfferService speedOfferService, final ClientService clientService) {
this.speedOfferService = speedOfferService;
this.clientService = clientService;
@ -46,8 +50,7 @@ public class SpeedOfferController {
private boolean checkOffer(final SpeedOffer session, final SpeedOffer offer) {
boolean res = false;
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus()
&& (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !(session.getStatus().equals(StatusOffer.inactive))) {
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus() && (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !session.getStatus().equals(StatusOffer.inactive)) {
res = true;
}
return res;
@ -55,7 +58,7 @@ public class SpeedOfferController {
private boolean checkDates(final SpeedOffer speedOffer) {
boolean res = false;
if(speedOffer.getEnd()==null || speedOffer.getStart()==null || speedOffer.getEnd().isAfter(speedOffer.getStart())) {
if (speedOffer.getEnd() == null || speedOffer.getStart() == null || speedOffer.getEnd().isAfter(speedOffer.getStart())) {
res = true;
}
return res;
@ -63,9 +66,9 @@ public class SpeedOfferController {
private boolean checkConditions(final SpeedOffer speedOffer) {
boolean res = false;
if(speedOffer.getGold()==null || speedOffer.getSilver()==null || speedOffer.getBronze()==null) {
if (speedOffer.getGold() == null || speedOffer.getSilver() == null || speedOffer.getBronze() == null) {
}else if(speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) {
} else if (speedOffer.getGold() <= speedOffer.getSilver() && speedOffer.getSilver() <= speedOffer.getBronze()) {
res = true;
}
return res;
@ -73,16 +76,18 @@ public class SpeedOfferController {
private boolean checkDiscounts(final SpeedOffer speedOffer) {
boolean res = false;
if(speedOffer.getDiscountGold()==null || speedOffer.getDiscountSilver()==null || speedOffer.getDiscountBronze()==null) {
}else 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;
}
@GetMapping("/offers/speedOfferList")
public String processFindForm(Map<String, Object> model) {
List<SpeedOffer> speedOfferLs=this.speedOfferService.findActiveSpeedOffer();
@GetMapping("/offers/speedOfferList/{page}")
public String processFindForm(@PathVariable("page") final int page, final Map<String, Object> model) {
Pageable elements = PageRequest.of(page, 5);
List<SpeedOffer> speedOfferLs = this.speedOfferService.findActiveSpeedOffer(elements);
model.put("speedOfferLs", speedOfferLs);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/speed/speedOffersList";
@ -90,30 +95,30 @@ public class SpeedOfferController {
}
@GetMapping("/offers/speed/new")
public String initCreationForm(Map<String, Object> model) {
public String initCreationForm(final Map<String, Object> model) {
SpeedOffer speedOffer = new SpeedOffer();
model.put("speedOffer", speedOffer);
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
return SpeedOfferController.VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
}
@PostMapping("/offers/speed/new")
public String processCreationForm(@Valid SpeedOffer speedOffer, BindingResult result) {
public String processCreationForm(@Valid final SpeedOffer speedOffer, final BindingResult result) {
if(!this.checkDates(speedOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(speedOffer)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if(!this.checkConditions(speedOffer)) {
result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce");
if (!this.checkConditions(speedOffer)) {
result.rejectValue("gold", "", "Oro debe ser menor o igual que plata, y plata menor o igual que bronce");
}
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");
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");
}
if (result.hasErrors()) {
return VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
return SpeedOfferController.VIEWS_SPEED_OFFER_CREATE_OR_UPDATE_FORM;
}
Client client = this.clientService.getCurrentClient();
@ -125,7 +130,7 @@ public class SpeedOfferController {
}
@GetMapping(value = "/offers/speed/{speedOfferId}/activate")
public String activateSpeedOffer(@PathVariable("speedOfferId") final int speedOfferId, ModelMap modelMap) {
public String activateSpeedOffer(@PathVariable("speedOfferId") final int speedOfferId, final ModelMap modelMap) {
SpeedOffer speedOffer = this.speedOfferService.findSpeedOfferById(speedOfferId);
Client client = this.clientService.getCurrentClient();
if (speedOffer.getClient().equals(client)) {
@ -139,24 +144,24 @@ public class SpeedOfferController {
}
@GetMapping("/offers/speed/{speedOfferId}")
public String processShowForm(@PathVariable("speedOfferId") int speedOfferId, Map<String, Object> model) {
public String processShowForm(@PathVariable("speedOfferId") final int speedOfferId, final Map<String, Object> model) {
SpeedOffer speedOffer = this.speedOfferService.findSpeedOfferById(speedOfferId);
if(speedOffer.getStatus().equals(StatusOffer.active)) {
if (speedOffer.getStatus().equals(StatusOffer.active)) {
model.put("speedOffer", speedOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/speed/speedOffersShow";
}else if(speedOffer.getStatus().equals(StatusOffer.hidden)&&(this.checkIdentity(speedOfferId))) {
} else if (speedOffer.getStatus().equals(StatusOffer.hidden) && this.checkIdentity(speedOfferId)) {
model.put("speedOffer", speedOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/speed/speedOffersShow";
}else {
} else {
return "error";
}
}
@GetMapping(value = "/offers/speed/{speedOfferId}/edit")
public String updateSpeedOffer(@PathVariable("speedOfferId") final int speedOfferId, final ModelMap model, HttpServletRequest request) {
public String updateSpeedOffer(@PathVariable("speedOfferId") final int speedOfferId, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(speedOfferId)) {
return "error";
@ -172,8 +177,7 @@ public class SpeedOfferController {
}
@PostMapping(value = "/offers/speed/{speedOfferId}/edit")
public String updateSpeedOffer(@Valid final SpeedOffer speedOfferEdit, final BindingResult result,
final ModelMap model, HttpServletRequest request) {
public String updateSpeedOffer(@Valid final SpeedOffer speedOfferEdit, final BindingResult result, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(speedOfferEdit.getId())) {
return "error";
@ -184,16 +188,16 @@ public class SpeedOfferController {
return "error";
}
if(!this.checkDates(speedOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(speedOfferEdit)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if(!this.checkConditions(speedOfferEdit)) {
result.rejectValue("gold","" ,"Oro debe ser menor o igual que plata, y plata menor o igual que bronce");
if (!this.checkConditions(speedOfferEdit)) {
result.rejectValue("gold", "", "Oro debe ser menor o igual que plata, y plata menor o igual que bronce");
}
if(!this.checkDiscounts(speedOfferEdit)) {
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 (!this.checkDiscounts(speedOfferEdit)) {
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");
}
@ -202,12 +206,10 @@ public class SpeedOfferController {
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");
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();
}
@GetMapping(value = "/offers/speed/{speedOfferId}/disable")

View file

@ -1,3 +1,4 @@
package org.springframework.cheapy.web;
import java.time.format.DateTimeFormatter;
@ -13,6 +14,8 @@ import org.springframework.cheapy.model.StatusOffer;
import org.springframework.cheapy.model.TimeOffer;
import org.springframework.cheapy.service.ClientService;
import org.springframework.cheapy.service.TimeOfferService;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
@ -27,7 +30,8 @@ public class TimeOfferController {
private final TimeOfferService timeOfferService;
private final ClientService clientService;
public TimeOfferController(final TimeOfferService timeOfferService, ClientService clientService) {
public TimeOfferController(final TimeOfferService timeOfferService, final ClientService clientService) {
this.timeOfferService = timeOfferService;
this.clientService = clientService;
}
@ -45,8 +49,7 @@ public class TimeOfferController {
private boolean checkOffer(final TimeOffer session, final TimeOffer offer) {
boolean res = false;
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus()
&& (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !(session.getStatus().equals(StatusOffer.inactive))) {
if (session.getId() == offer.getId() && session.getStatus() == offer.getStatus() && (session.getCode() == null ? offer.getCode() == "" : session.getCode().equals(offer.getCode())) && !session.getStatus().equals(StatusOffer.inactive)) {
res = true;
}
return res;
@ -54,7 +57,7 @@ public class TimeOfferController {
private boolean checkDates(final TimeOffer timeOffer) {
boolean res = false;
if(timeOffer.getEnd()==null || timeOffer.getStart()==null || timeOffer.getEnd().isAfter(timeOffer.getStart())) {
if (timeOffer.getEnd() == null || timeOffer.getStart() == null || timeOffer.getEnd().isAfter(timeOffer.getStart())) {
res = true;
}
return res;
@ -62,15 +65,17 @@ public class TimeOfferController {
private boolean checkTimes(final TimeOffer timeOffer) {
boolean res = false;
if(timeOffer.getFinish()==null || timeOffer.getInit()==null || timeOffer.getFinish().isAfter(timeOffer.getInit())) {
if (timeOffer.getFinish() == null || timeOffer.getInit() == null || timeOffer.getFinish().isAfter(timeOffer.getInit())) {
res = true;
}
return res;
}
@GetMapping("/offers/timeOfferList")
public String processFindForm(Map<String, Object> model) {
List<TimeOffer> timeOfferLs=this.timeOfferService.findActiveTimeOffer();
@GetMapping("/offers/timeOfferList/{page}")
public String processFindForm(@PathVariable("page") final int page, final Map<String, Object> model) {
Pageable elements = PageRequest.of(page, 5);
List<TimeOffer> timeOfferLs = this.timeOfferService.findActiveTimeOffer(elements);
model.put("timeOfferLs", timeOfferLs);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/time/timeOffersList";
@ -78,27 +83,27 @@ public class TimeOfferController {
}
@GetMapping("/offers/time/new")
public String initCreationForm(Map<String, Object> model) {
public String initCreationForm(final Map<String, Object> model) {
TimeOffer timeOffer = new TimeOffer();
model.put("timeOffer", timeOffer);
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
return TimeOfferController.VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
}
@PostMapping("/offers/time/new")
public String processCreationForm(@Valid TimeOffer timeOffer, BindingResult result) {
public String processCreationForm(@Valid final TimeOffer timeOffer, final BindingResult result) {
if(!this.checkDates(timeOffer)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(timeOffer)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if(!this.checkTimes(timeOffer)) {
result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio");
if (!this.checkTimes(timeOffer)) {
result.rejectValue("finish", "", "La hora de fin debe ser posterior a la de inicio");
}
if (result.hasErrors()) {
return VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
return TimeOfferController.VIEWS_TIME_OFFER_CREATE_OR_UPDATE_FORM;
}
timeOffer.setStatus(StatusOffer.hidden);
@ -129,26 +134,25 @@ public class TimeOfferController {
}
@GetMapping("/offers/time/{timeOfferId}")
public String processShowForm(@PathVariable("timeOfferId") int timeOfferId, Map<String, Object> model) {
public String processShowForm(@PathVariable("timeOfferId") final int timeOfferId, final Map<String, Object> model) {
TimeOffer timeOffer = this.timeOfferService.findTimeOfferById(timeOfferId);
if(timeOffer.getStatus().equals(StatusOffer.active)) {
if (timeOffer.getStatus().equals(StatusOffer.active)) {
model.put("timeOffer", timeOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/time/timeOffersShow";
} else if(timeOffer.getStatus().equals(StatusOffer.hidden)&&(this.checkIdentity(timeOfferId))) {
} else if (timeOffer.getStatus().equals(StatusOffer.hidden) && this.checkIdentity(timeOfferId)) {
model.put("timeOffer", timeOffer);
model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"));
return "offers/time/timeOffersShow";
}else {
} else {
return "error";
}
}
@GetMapping(value = "/offers/time/{timeOfferId}/edit")
public String updateTimeOffer(@PathVariable("timeOfferId") final int timeOfferId, final ModelMap model,
HttpServletRequest request) {
public String updateTimeOffer(@PathVariable("timeOfferId") final int timeOfferId, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(timeOfferId)) {
return "error";
@ -164,8 +168,7 @@ public class TimeOfferController {
}
@PostMapping(value = "/offers/time/{timeOfferId}/edit")
public String updateTimeOffer(@Valid final TimeOffer timeOfferEdit, final BindingResult result,
final ModelMap model, HttpServletRequest request) {
public String updateTimeOffer(@Valid final TimeOffer timeOfferEdit, final BindingResult result, final ModelMap model, final HttpServletRequest request) {
if (!this.checkIdentity(timeOfferEdit.getId())) {
return "error";
@ -176,13 +179,12 @@ public class TimeOfferController {
return "error";
}
if(!this.checkDates(timeOfferEdit)) {
result.rejectValue("end","" ,"La fecha de fin debe ser posterior a la fecha de inicio");
if (!this.checkDates(timeOfferEdit)) {
result.rejectValue("end", "", "La fecha de fin debe ser posterior a la fecha de inicio");
}
if(!this.checkTimes(timeOfferEdit)) {
result.rejectValue("finish","" ,"La hora de fin debe ser posterior a la de inicio");
if (!this.checkTimes(timeOfferEdit)) {
result.rejectValue("finish", "", "La hora de fin debe ser posterior a la de inicio");
}
if (result.hasErrors()) {
@ -191,12 +193,10 @@ public class TimeOfferController {
}
BeanUtils.copyProperties(this.timeOfferService.findTimeOfferById(timeOfferEdit.getId()), timeOfferEdit,
"start", "end", "init", "finish", "discount");
BeanUtils.copyProperties(this.timeOfferService.findTimeOfferById(timeOfferEdit.getId()), timeOfferEdit, "start", "end", "init", "finish", "discount");
this.timeOfferService.saveTimeOffer(timeOfferEdit);
return "redirect:/offers/time/" + timeOfferEdit.getId();
}
@GetMapping(value = "/offers/time/{timeOfferId}/disable")

View file

@ -9,24 +9,35 @@
<cheapy:layout pageName="ofertas de plato especifico">
<spring:url value="/offers/nuOfferList" var="nuOfferUrl">
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/nuOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de plato especifico</button>
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas por número de comensales</button>
<spring:url value="/offers/speedOfferList" var="speedOfferUrl">
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/speedOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de velocidad</button>
<spring:url value="/offers/timeOfferList" var="timeOfferUrl">
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/timeOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de franja horaria</button>
<h2 style="text-align:center;padding:5px"><fmt:message key="foodOffers"/></h2>
<c:if test="${empty foodOfferLs }">
@ -80,6 +91,23 @@
</c:forEach>
</tbody>
</table>
<c:if test='${page!=0}'>
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="${page-1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. anterior</button>
</c:if>
<c:out value='${page}'></c:out>
<c:if test="${fn:length(foodOfferLs) == 5}">
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="${page+1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. siguiente</button>
</c:if>
</c:if>
</cheapy:layout>

View file

@ -9,24 +9,35 @@
<cheapy:layout pageName="ofertas">
<spring:url value="/offers/foodOfferList" var="foodOfferUrl">
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/foodOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de plato especifico</button>
<spring:url value="/offers/speedOfferList" var="speedOfferUrl">
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/speedOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas por número de comensales</button>
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de velocidad</button>
<spring:url value="/offers/timeOfferList" var="timeOfferUrl">
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/timeOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de franja horaria</button>
<h2 style="text-align:center;padding:5px"><fmt:message key="nuOffers"/></h2>
<c:if test="${empty nuOfferLs }">
<p id="vacio" >No hay ninguna oferta por número de comensales activa.</p>
@ -77,6 +88,23 @@
</c:forEach>
</tbody>
</table>
<c:if test='${page!=0}'>
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="${page-1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. anterior</button>
</c:if>
<c:out value='${page}'></c:out>
<c:if test="${fn:length(nuOfferLs) == 5}">
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="${page+1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. siguiente</button>
</c:if>
</c:if>
</cheapy:layout>

View file

@ -9,34 +9,38 @@
<cheapy:layout pageName="ofertas">
<spring:url value="/offers/foodOfferList" var="foodOfferUrl">
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/foodOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de plato especifico</button>
<spring:url value="/offers/nuOfferList" var="nuOfferUrl">
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/nuOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas por número de comensales</button>
<spring:url value="/offers/speedOfferList" var="speedOfferUrl">
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/speedOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de velocidad</button>
<spring:url value="/offers/timeOfferList" var="timeOfferUrl">
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/timeOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de franja horaria</button>
<h2 style="text-align:center;padding:5px"><fmt:message key="foodOffers"/></h2>
<c:if test="${empty foodOfferLs }">
<p id="vacio" >No hay ninguna oferta por plato específico activa.</p>
<p id="vacio" >No hay ninguna oferta por plato específico activa.</p>
</c:if>
<c:if test="${not empty foodOfferLs }">
@ -88,6 +92,9 @@
</c:forEach>
</tbody>
</table>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ver más</button>
</div>
</c:if>
@ -143,6 +150,9 @@
</c:forEach>
</tbody>
</table>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ver más</button>
</div>
</c:if>
@ -200,6 +210,10 @@
</c:forEach>
</tbody>
</table>
<spring:url value="/offers/speedOfferList" var="speedOfferUrl"></spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ver más</button>
</div>
</c:if>
@ -254,8 +268,11 @@
</td>
</tr>
</c:forEach>
</tbody>
</table>
<spring:url value="/offers/timeOfferList" var="timeOfferUrl"></spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ver más</button>
</div>
</c:if>

View file

@ -9,24 +9,35 @@
<cheapy:layout pageName="ofertas">
<spring:url value="/offers/foodOfferList" var="foodOfferUrl">
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/foodOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de plato especifico</button>
<spring:url value="/offers/nuOfferList" var="nuOfferUrl">
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/nuOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas por número de comensales</button>
<spring:url value="/offers/timeOfferList" var="timeOfferUrl">
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/timeOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de velocidad</button>
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de franja horaria</button>
<h2 style="text-align:center;padding:5px"><fmt:message key="speedOffers"/></h2>
<c:if test="${empty speedOfferLs }">
<p id="vacio" >No hay ninguna oferta por tiempo empleado en comer activa.</p>
@ -78,5 +89,22 @@
</c:forEach>
</tbody>
</table>
<c:if test='${page!=0}'>
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="${page-1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. anterior</button>
</c:if>
<c:out value='${page}'></c:out>
<c:if test="${fn:length(speedOfferLs) == 5}">
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="${page+1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. siguiente</button>
</c:if>
</c:if>
</cheapy:layout>

View file

@ -9,24 +9,35 @@
<cheapy:layout pageName="ofertas">
<spring:url value="/offers/foodOfferList" var="foodOfferUrl">
<spring:url value="/offers/foodOfferList/{page}" var="foodOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/foodOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(foodOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de plato especifico</button>
<spring:url value="/offers/nuOfferList" var="nuOfferUrl">
<spring:url value="/offers/nuOfferList/{page}" var="nuOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/nuOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(nuOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas por número de comensales</button>
<spring:url value="/offers/speedOfferList" var="speedOfferUrl">
<spring:url value="/offers/speedOfferList/{page}" var="speedOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='/offers/speedOfferList'" style="font-family: 'Lobster'; font-size: 20px;">
<button type="button" role="link" onclick="window.location='${fn:escapeXml(speedOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de velocidad</button>
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="0"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Ofertas de franja horaria</button>
<h2 style="text-align:center;padding:5px"><fmt:message key="timeOffers"/></h2>
<c:if test="${empty timeOfferLs }">
<p id="vacio" >No hay ninguna oferta por franja horaria activa.</p>
@ -77,6 +88,23 @@
</c:forEach>
</tbody>
</table>
<c:if test='${page!=0}'>
<spring:url value="/offers/timeOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="${page-1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. anterior</button>
</c:if>
<c:out value='${page}'></c:out>
<c:if test="${fn:length(timeOfferLs) == 5}">
<spring:url value="/offers/foodOfferList/{page}" var="timeOfferListUrl">
<spring:param name="page" value="${page+1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(timeOfferListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. siguiente</button>
</c:if>
</c:if>
</cheapy:layout>

View file

@ -21,7 +21,7 @@
</thead>
<tbody>
<c:choose>
<c:when test="${fn:length(reviewsLs) == 0}">
<c:when test="${empty reviewsLs}">
<tr><td colspan="4"><em><c:out value="No se ha realizado ninguna valoración por el momento."/></em></td></tr>
</c:when>
<c:otherwise>
@ -56,4 +56,21 @@
</c:choose>
</tbody>
</table>
<c:if test='${page!=0}'>
<spring:url value="/reviewsList/{page}" var="reviewsListUrl">
<spring:param name="page" value="${page-1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(reviewsListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. anterior</button>
</c:if>
<c:out value='${page}'></c:out>
<c:if test="${fn:length(reviewsLs) == 6}">
<spring:url value="/reviewsList/{page}" var="reviewsListUrl">
<spring:param name="page" value="${page+1}"/>
</spring:url>
<button type="button" role="link" onclick="window.location='${fn:escapeXml(reviewsListUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
<span class="glyphicon glyphicon glyphicon-edit" aria-hidden="true" style="padding: 5px"> </span>
Pág. siguiente</button>
</c:if>
</cheapy:layout>

View file

@ -61,7 +61,7 @@
</cheapy:menuItem>
-->
<sec:authorize access="isAuthenticated()">
<cheapy:menuItem active="${name eq 'reviews'}" url="/reviews" title="opiniones">
<cheapy:menuItem active="${name eq 'reviews'}" url="/reviewsList/0" title="opiniones">
<span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span>
<span>Reseñas</span>
</cheapy:menuItem>