diff --git a/src/main/java/org/springframework/cheapy/model/Client.java b/src/main/java/org/springframework/cheapy/model/Client.java index f55f91214..e9f56687d 100644 --- a/src/main/java/org/springframework/cheapy/model/Client.java +++ b/src/main/java/org/springframework/cheapy/model/Client.java @@ -1,3 +1,4 @@ + package org.springframework.cheapy.model; import java.time.LocalTime; @@ -21,121 +22,126 @@ import org.springframework.format.annotation.DateTimeFormat; @Table(name = "clients") public class Client extends BaseEntity { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; // (id, name, email, address, init, finish, telephone, description, code, food, // usuar) @NotEmpty - private String name; + private String name; @NotEmpty - private String email; + private String email; @NotEmpty - private String address; - - @Enumerated(value = EnumType.STRING) + private String address; + @NotNull - private Municipio municipio; + @Enumerated(value = EnumType.STRING) + private Municipio municipio; // Hora de apertura del local @DateTimeFormat(pattern = "HH:mm") @NotNull(message = "Debe introducir una hora de apertura") - private LocalTime init; + private LocalTime init; // Hora de cierre del local @DateTimeFormat(pattern = "HH:mm") @NotNull(message = "Debe introducir una hora de cierre") - private LocalTime finish; + private LocalTime finish; @NotEmpty @Digits(fraction = 0, integer = 10) - private String telephone; + private String telephone; @NotEmpty - private String description; - - // Codigo de activacion de cuenta -// @NotEmpty -// private String code; + private String description; @NotEmpty - private String food; + private String food; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "username", referencedColumnName = "username") - private User usuar; + private User usuar; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "code", referencedColumnName = "code") private Code cod; @OneToMany - private List foodOffers; + private List foodOffers; @OneToMany - private List nuOffers; + private List nuOffers; @OneToMany - private List speedOffers; + private List speedOffers; @OneToMany - private List timeOffers; + private List timeOffers; + public String getName() { - return name; + return this.name; } - public void setName(String name) { + public void setName(final String name) { this.name = name; } public String getEmail() { - return email; + return this.email; } - public void setEmail(String email) { + public void setEmail(final String email) { this.email = email; } public String getAddress() { - return address; + return this.address; } - public void setAddress(String address) { + public void setAddress(final String address) { this.address = address; } - public LocalTime getInit() { - return init; + public Municipio getMunicipio() { + return this.municipio; } - public void setInit(LocalTime init) { + public void setMunicipio(final Municipio municipio) { + this.municipio = municipio; + } + + public LocalTime getInit() { + return this.init; + } + + public void setInit(final LocalTime init) { this.init = init; } public LocalTime getFinish() { - return finish; + return this.finish; } - public void setFinish(LocalTime finish) { + public void setFinish(final LocalTime finish) { this.finish = finish; } public String getTelephone() { - return telephone; + return this.telephone; } - public void setTelephone(String telephone) { + public void setTelephone(final String telephone) { this.telephone = telephone; } public String getDescription() { - return description; + return this.description; } - public void setDescription(String description) { + public void setDescription(final String description) { this.description = description; } @@ -156,51 +162,51 @@ public class Client extends BaseEntity { } public String getFood() { - return food; + return this.food; } - public void setFood(String food) { + public void setFood(final String food) { this.food = food; } public User getUsuar() { - return usuar; + return this.usuar; } - public void setUsuar(User usuar) { + public void setUsuar(final User usuar) { this.usuar = usuar; } public List getFoodOffers() { - return foodOffers; + return this.foodOffers; } - public void setFoodOffers(List foodOffers) { + public void setFoodOffers(final List foodOffers) { this.foodOffers = foodOffers; } public List getNuOffers() { - return nuOffers; + return this.nuOffers; } - public void setNuOffers(List nuOffers) { + public void setNuOffers(final List nuOffers) { this.nuOffers = nuOffers; } public List getSpeedOffers() { - return speedOffers; + return this.speedOffers; } - public void setSpeedOffers(List speedOffers) { + public void setSpeedOffers(final List speedOffers) { this.speedOffers = speedOffers; } public List getTimeOffers() { - return timeOffers; + return this.timeOffers; } - public void setTimeOffers(List timeOffers) { + public void setTimeOffers(final List timeOffers) { this.timeOffers = timeOffers; } -} \ No newline at end of file +} diff --git a/src/main/java/org/springframework/cheapy/model/Municipio.java b/src/main/java/org/springframework/cheapy/model/Municipio.java index 95d1230d1..dd4beecd9 100644 --- a/src/main/java/org/springframework/cheapy/model/Municipio.java +++ b/src/main/java/org/springframework/cheapy/model/Municipio.java @@ -1,5 +1,6 @@ + package org.springframework.cheapy.model; public enum Municipio { -sevilla,dos_hermanas,carmona,bollullos,pilas,montellano,mairena_aljarafe,mairena_alcor + Dos_Hermanas, Sevilla } diff --git a/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java index 9a277197d..a2aec96ef 100644 --- a/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/FoodOfferRepository.java @@ -4,6 +4,7 @@ package org.springframework.cheapy.repository; import java.util.List; import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.StatusOffer; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; @@ -34,13 +35,17 @@ public interface FoodOfferRepository extends PagingAndSortingRepository findFoodOfferActOclByUserId(@Param("id") Integer id); - + @Query("SELECT foodOffer FROM FoodOffer foodOffer WHERE foodOffer.client.name LIKE :name AND foodOffer.status= 'active'") @Transactional(readOnly = true) List findFoodOfferByClientName(String name); - + @Query("SELECT foodOffer FROM FoodOffer foodOffer WHERE foodOffer.client.food LIKE :name AND foodOffer.status= 'active'") @Transactional(readOnly = true) List findFoodOfferByClientFood(String name); - + + @Query("SELECT foodOffer FROM FoodOffer foodOffer WHERE foodOffer.client.municipio =:municipio AND foodOffer.status= 'active'") + @Transactional(readOnly = true) + List findFoodOfferByClientPlace(Municipio municipio); + } diff --git a/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java index d5631928e..e6ef658ff 100644 --- a/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java @@ -2,6 +2,8 @@ package org.springframework.cheapy.repository; import java.util.List; + +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.NuOffer; import org.springframework.cheapy.model.StatusOffer; import org.springframework.data.domain.Pageable; @@ -31,12 +33,16 @@ public interface NuOfferRepository extends PagingAndSortingRepository findNuOfferActOclByUserId(@Param("id") Integer id); - + @Query("SELECT nuOffer FROM NuOffer nuOffer WHERE nuOffer.client.name LIKE :name AND nuOffer.status= 'active'") @Transactional(readOnly = true) List findNuOfferByClientName(String name); - + @Query("SELECT nuOffer FROM NuOffer nuOffer WHERE nuOffer.client.food LIKE :name AND nuOffer.status= 'active'") @Transactional(readOnly = true) List findNuOfferByClientFood(String name); + + @Query("SELECT nuOffer FROM NuOffer nuOffer WHERE nuOffer.client.municipio =:municipio AND nuOffer.status= 'active'") + @Transactional(readOnly = true) + List findNuOfferByClientPlace(Municipio municipio); } diff --git a/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java index b89ce1569..f49dd1469 100644 --- a/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/SpeedOfferRepository.java @@ -3,6 +3,7 @@ package org.springframework.cheapy.repository; import java.util.List; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.SpeedOffer; import org.springframework.cheapy.model.StatusOffer; import org.springframework.data.domain.Pageable; @@ -34,12 +35,16 @@ public interface SpeedOfferRepository extends PagingAndSortingRepository findSpeedOfferActOclByUserId(@Param("id") Integer id); - + @Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE speedOffer.client.name LIKE :name AND speedOffer.status= 'active'") @Transactional(readOnly = true) List findSpeedOfferByClientName(String name); - + @Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE speedOffer.client.food LIKE :name AND speedOffer.status= 'active'") @Transactional(readOnly = true) List findSpeedOfferByClientFood(String name); + + @Query("SELECT speedOffer FROM SpeedOffer speedOffer WHERE speedOffer.client.municipio =:municipio AND speedOffer.status= 'active'") + @Transactional(readOnly = true) + List findSpeedOfferByClientPlace(Municipio municipio); } diff --git a/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java index b031d789c..e3cdd669d 100644 --- a/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/TimeOfferRepository.java @@ -4,6 +4,7 @@ package org.springframework.cheapy.repository; import java.util.List; import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.model.TimeOffer; import org.springframework.data.domain.Pageable; @@ -33,12 +34,16 @@ public interface TimeOfferRepository extends PagingAndSortingRepository findTimeOfferActOclByUserId(@Param("id") Integer id); - + @Query("SELECT timeOffer FROM TimeOffer timeOffer WHERE timeOffer.client.name LIKE :name AND timeOffer.status= 'active'") @Transactional(readOnly = true) List findTimeOfferByClientName(String name); - + @Query("SELECT timeOffer FROM TimeOffer timeOffer WHERE timeOffer.client.food LIKE :name AND timeOffer.status= 'active'") @Transactional(readOnly = true) List findTimeOfferByClientFood(String name); + + @Query("SELECT timeOffer FROM TimeOffer timeOffer WHERE timeOffer.client.municipio =:municipio AND timeOffer.status= 'active'") + @Transactional(readOnly = true) + List findTimeOfferByClientPlace(Municipio municipio); } diff --git a/src/main/java/org/springframework/cheapy/service/FoodOfferService.java b/src/main/java/org/springframework/cheapy/service/FoodOfferService.java index eb0a85b14..0e4c12e50 100644 --- a/src/main/java/org/springframework/cheapy/service/FoodOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/FoodOfferService.java @@ -5,6 +5,7 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.repository.FoodOfferRepository; import org.springframework.dao.DataAccessException; @@ -45,14 +46,18 @@ public class FoodOfferService { public List findFoodOfferActOclByUserId(final int id) { return this.foodOfferRepository.findFoodOfferActOclByUserId(id); } - - public List findFoodOfferByClientName(String name) { - String nameEdit = "%"+name+"%"; + + public List findFoodOfferByClientName(final String name) { + String nameEdit = "%" + name + "%"; return this.foodOfferRepository.findFoodOfferByClientName(nameEdit); } - - public List findFoodOfferByClientFood(String name) { - String nameEdit = "%"+name+"%"; + + public List findFoodOfferByClientFood(final String name) { + String nameEdit = "%" + name + "%"; return this.foodOfferRepository.findFoodOfferByClientFood(nameEdit); } + + public List findFoodOfferByClientPlace(final Municipio municip) { + return this.foodOfferRepository.findFoodOfferByClientPlace(municip); + } } diff --git a/src/main/java/org/springframework/cheapy/service/NuOfferService.java b/src/main/java/org/springframework/cheapy/service/NuOfferService.java index be77144c1..7bf4913b3 100644 --- a/src/main/java/org/springframework/cheapy/service/NuOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/NuOfferService.java @@ -4,6 +4,7 @@ package org.springframework.cheapy.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.NuOffer; import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.repository.NuOfferRepository; @@ -54,14 +55,18 @@ public class NuOfferService { public List findNuOfferActOclByUserId(final int id) { return this.nuOfferRepository.findNuOfferActOclByUserId(id); } - - public List findNuOfferByClientName(String name) { - String nameEdit = "%"+name+"%"; + + public List findNuOfferByClientName(final String name) { + String nameEdit = "%" + name + "%"; return this.nuOfferRepository.findNuOfferByClientName(nameEdit); } - - public List findNuOfferByClientFood(String name) { - String nameEdit = "%"+name+"%"; + + public List findNuOfferByClientFood(final String name) { + String nameEdit = "%" + name + "%"; return this.nuOfferRepository.findNuOfferByClientFood(nameEdit); } + + public List findNuOfferByClientPlace(final Municipio mun) { + return this.nuOfferRepository.findNuOfferByClientPlace(mun); + } } diff --git a/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java b/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java index b9e5ffc2a..aeb2f630d 100644 --- a/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/SpeedOfferService.java @@ -4,6 +4,7 @@ package org.springframework.cheapy.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.SpeedOffer; import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.repository.SpeedOfferRepository; @@ -49,14 +50,18 @@ public class SpeedOfferService { public List findSpeedOfferActOclByUserId(final int id) { return this.speedOfferRepository.findSpeedOfferActOclByUserId(id); } - - public List findSpeedOfferByClientName(String name) { - String nameEdit = "%"+name+"%"; + + public List findSpeedOfferByClientName(final String name) { + String nameEdit = "%" + name + "%"; return this.speedOfferRepository.findSpeedOfferByClientName(nameEdit); } - - public List findSpeedOfferByClientFood(String name) { - String nameEdit = "%"+name+"%"; + + public List findSpeedOfferByClientFood(final String name) { + String nameEdit = "%" + name + "%"; return this.speedOfferRepository.findSpeedOfferByClientFood(nameEdit); } + + public List findSpeedOfferByClientPlace(final Municipio mun) { + return this.speedOfferRepository.findSpeedOfferByClientPlace(mun); + } } diff --git a/src/main/java/org/springframework/cheapy/service/TimeOfferService.java b/src/main/java/org/springframework/cheapy/service/TimeOfferService.java index 4859bca53..68881863b 100644 --- a/src/main/java/org/springframework/cheapy/service/TimeOfferService.java +++ b/src/main/java/org/springframework/cheapy/service/TimeOfferService.java @@ -4,6 +4,7 @@ package org.springframework.cheapy.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.StatusOffer; import org.springframework.cheapy.model.TimeOffer; import org.springframework.cheapy.repository.TimeOfferRepository; @@ -45,14 +46,18 @@ public class TimeOfferService { public List findTimeOfferActOclByUserId(final int id) { return this.timeOfferRepository.findTimeOfferActOclByUserId(id); } - - public List findTimeOfferByClientName(String name) { - String nameEdit = "%"+name+"%"; + + public List findTimeOfferByClientName(final String name) { + String nameEdit = "%" + name + "%"; return this.timeOfferRepository.findTimeOfferByClientName(nameEdit); } - - public List findTimeOfferByClientFood(String name) { - String nameEdit = "%"+name+"%"; + + public List findTimeOfferByClientFood(final String name) { + String nameEdit = "%" + name + "%"; return this.timeOfferRepository.findTimeOfferByClientFood(nameEdit); } + + public List findTimeOfferByClientPlace(final Municipio mun) { + return this.timeOfferRepository.findTimeOfferByClientPlace(mun); + } } diff --git a/src/main/java/org/springframework/cheapy/web/OfertaController.java b/src/main/java/org/springframework/cheapy/web/OfertaController.java index 2b82b91dc..81fdae55e 100644 --- a/src/main/java/org/springframework/cheapy/web/OfertaController.java +++ b/src/main/java/org/springframework/cheapy/web/OfertaController.java @@ -7,7 +7,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.servlet.http.HttpServletRequest; + import org.springframework.cheapy.model.FoodOffer; +import org.springframework.cheapy.model.Municipio; import org.springframework.cheapy.model.NuOffer; import org.springframework.cheapy.model.Offer; import org.springframework.cheapy.model.SpeedOffer; @@ -55,15 +58,18 @@ public class OfertaController { model.put("speedOfferLs", speedOfferLs); model.put("timeOfferLs", timeOfferLs); + // Añade la lista de municipios al desplegable + model.put("municipios", Municipio.values()); + //Se añade formateador de fecha al modelo model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm")); return "offers/offersList"; } - + @GetMapping("/offersByName") - public String processFindFormByName(final Map model, String name) { + public String processFindFormByName(final Map model, final String name) { List foodOfferLs = this.foodOfferService.findFoodOfferByClientName(name); List nuOfferLs = this.nuOfferService.findNuOfferByClientName(name); @@ -74,15 +80,18 @@ public class OfertaController { model.put("speedOfferLs", speedOfferLs); model.put("timeOfferLs", timeOfferLs); + // Añade la lista de municipios al desplegable + model.put("municipios", Municipio.values()); + //Se añade formateador de fecha al modelo model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm")); return "offers/offersListSearch"; } - + @GetMapping("/offersByFood") - public String processFindFormByFood(final Map model, String name) { + public String processFindFormByFood(final Map model, final String name) { List foodOfferLs = this.foodOfferService.findFoodOfferByClientFood(name); List nuOfferLs = this.nuOfferService.findNuOfferByClientFood(name); @@ -93,6 +102,32 @@ public class OfertaController { model.put("speedOfferLs", speedOfferLs); model.put("timeOfferLs", timeOfferLs); + // Añade la lista de municipios al desplegable + model.put("municipios", Municipio.values()); + + //Se añade formateador de fecha al modelo + model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm")); + + return "offers/offersListSearch"; + + } + + @GetMapping("/offersByPlace") + public String processFindFormByPlace(final Map model, final HttpServletRequest request) { + Municipio mun = Municipio.valueOf(request.getParameter("municipio")); + + List foodOfferLs = this.foodOfferService.findFoodOfferByClientPlace(mun); + List nuOfferLs = this.nuOfferService.findNuOfferByClientPlace(mun); + List speedOfferLs = this.speedOfferService.findSpeedOfferByClientPlace(mun); + List timeOfferLs = this.timeOfferService.findTimeOfferByClientPlace(mun); + model.put("foodOfferLs", foodOfferLs); + model.put("nuOfferLs", nuOfferLs); + model.put("speedOfferLs", speedOfferLs); + model.put("timeOfferLs", timeOfferLs); + + // Añade la lista de municipios al desplegable + model.put("municipios", Municipio.values()); + //Se añade formateador de fecha al modelo model.put("localDateTimeFormat", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm")); diff --git a/src/main/resources/db/mysql/data.sql b/src/main/resources/db/mysql/data.sql index 39ba10cab..22b93de26 100644 --- a/src/main/resources/db/mysql/data.sql +++ b/src/main/resources/db/mysql/data.sql @@ -24,8 +24,8 @@ INSERT INTO codes (id,code,activo) VALUES (2,'code2',FALSE); INSERT INTO codes (id,code,activo) VALUES (3,'code3',TRUE); INSERT INTO codes (id,code,activo) VALUES (4,'code4',TRUE); -INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, food, username, code) VALUES (1,'bar manoli','manoli@gmail.com','C/Betis', 'sevilla','10:00','22:00','608726190', 'description 1', 'ESPAÑOLA','manoli', 'code1'); -INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, food, username, code) VALUES (2,'bar david','david@gmail.com','C/Sevilla', 'dos_hermanas','09:30','22:00','608726190', 'description 2', 'americana','david', 'code2'); +INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, code, food, username) VALUES (1,'bar manoli','manoli@gmail.com','C/Betis', 'Sevilla','10:00:00','22:00:00','608726190', 'description 1', 'code1', 'ESPAÑOLA','manoli'); +INSERT INTO clients (id, name, email, address, municipio, init, finish, telephone, description, code, food, username) VALUES (2,'bar david','david@gmail.com', 'C/Sevilla', 'Dos_Hermanas','09:30:00','22:00:00','608726190', 'description 2', 'code2', 'americana','david'); INSERT INTO food_offers(start, end, code, status, client_id, food, discount) VALUES ('2021-08-14 12:00:00', '2021-08-15 12:00:00', 'FO-1', 'inactive', 1, 'macarrones', 15); diff --git a/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp b/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp index 650d5876f..3f421f8ff 100644 --- a/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp +++ b/src/main/webapp/WEB-INF/jsp/offers/offersList.jsp @@ -65,6 +65,15 @@ +
+ + +

@@ -83,6 +92,7 @@ + @@ -105,6 +115,9 @@ + + +