From 5c459a2d90d410edc133dca7c183e6cbb3a8080c Mon Sep 17 00:00:00 2001 From: Flor Date: Wed, 31 Mar 2021 17:50:27 +0200 Subject: [PATCH] =?UTF-8?q?Version=201=20de=20rese=C3=B1as.=20falta:=20a?= =?UTF-8?q?=C3=B1adir=20nombre=20del=20usuario=20el=20boton=20de=20editar?= =?UTF-8?q?=20no=20aparezca=20en=20todas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springframework/cheapy/model/Review.java | 43 +++++++++ .../cheapy/repository/ReviewRepository.java | 22 +++++ .../cheapy/service/ReviewService.java | 40 ++++++++ .../cheapy/web/ReviewController.java | 92 +++++++++++++++++++ .../resources/messages/messages_es.properties | 6 +- .../WEB-INF/jsp/offers/myOffersList.jsp | 2 +- .../jsp/reviews/createOrUpdateReviewForm.jsp | 33 +++++++ .../WEB-INF/jsp/reviews/reviewsList.jsp | 50 ++++++++++ .../WEB-INF/jsp/reviews/reviewsShow.jsp | 38 ++++++++ src/main/webapp/WEB-INF/tags/menu.tag | 13 ++- 10 files changed, 335 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/springframework/cheapy/model/Review.java create mode 100644 src/main/java/org/springframework/cheapy/repository/ReviewRepository.java create mode 100644 src/main/java/org/springframework/cheapy/service/ReviewService.java create mode 100644 src/main/java/org/springframework/cheapy/web/ReviewController.java create mode 100644 src/main/webapp/WEB-INF/jsp/reviews/createOrUpdateReviewForm.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/reviews/reviewsList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/reviews/reviewsShow.jsp diff --git a/src/main/java/org/springframework/cheapy/model/Review.java b/src/main/java/org/springframework/cheapy/model/Review.java new file mode 100644 index 000000000..9bf152071 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/model/Review.java @@ -0,0 +1,43 @@ +package org.springframework.cheapy.model; + +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.NotBlank; + +import org.hibernate.validator.constraints.Range; + +import com.sun.istack.NotNull; + +@Entity +@Table(name = "review") +public class Review extends BaseEntity{ + + private static final long serialVersionUID = 1L; + + @NotBlank + private String opinion; + + @NotNull + @Range(min = 1, max = 5) + private Integer stars; + + + public String getOpinion() { + return opinion; + } + + public void setOpinion(String opinion) { + this.opinion = opinion; + } + + public Integer getStars() { + return stars; + } + + public void setStars(Integer stars) { + this.stars = stars; + } + +} diff --git a/src/main/java/org/springframework/cheapy/repository/ReviewRepository.java b/src/main/java/org/springframework/cheapy/repository/ReviewRepository.java new file mode 100644 index 000000000..754e2650f --- /dev/null +++ b/src/main/java/org/springframework/cheapy/repository/ReviewRepository.java @@ -0,0 +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.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; + +public interface ReviewRepository extends Repository { + + @Query("SELECT r FROM Review r") + @Transactional(readOnly = true) + List findAllReviews(); + + void save(Review review); + + @Query("SELECT r FROM Review r WHERE id =:id") + @Transactional(readOnly = true) + Review findReviewById(@Param("id") Integer id); +} diff --git a/src/main/java/org/springframework/cheapy/service/ReviewService.java b/src/main/java/org/springframework/cheapy/service/ReviewService.java new file mode 100644 index 000000000..2b7bc9301 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/service/ReviewService.java @@ -0,0 +1,40 @@ +package org.springframework.cheapy.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cheapy.model.Review; +import org.springframework.cheapy.model.StatusOffer; +import org.springframework.cheapy.model.TimeOffer; +import org.springframework.cheapy.repository.ReviewRepository; +import org.springframework.cheapy.repository.TimeOfferRepository; + +import org.springframework.dao.DataAccessException; +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; + } + + @Transactional + public Review findReviewById(final int id) { + return this.reviewRepository.findReviewById(id); + } + + @Transactional + public List findAllReviews() { + return this.reviewRepository.findAllReviews(); + } + + @Transactional + public void saveReview(final Review Review) throws DataAccessException { + this.reviewRepository.save(Review); + } + +} diff --git a/src/main/java/org/springframework/cheapy/web/ReviewController.java b/src/main/java/org/springframework/cheapy/web/ReviewController.java new file mode 100644 index 000000000..d51b851e5 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/web/ReviewController.java @@ -0,0 +1,92 @@ +package org.springframework.cheapy.web; + + +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.cheapy.model.Review; +import org.springframework.cheapy.service.ReviewService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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; + + public ReviewController(final ReviewService reviewService) { + this.reviewService = reviewService; + } + @GetMapping("/reviews") + public String processFindForm( Map model) { + + List reviewsLs=this.reviewService.findAllReviews(); + model.put("reviewsLs", reviewsLs); + + return "reviews/reviewsList"; + + } + + @GetMapping("/reviews/new") + public String initCreationForm(Map model) { + Review review = new Review(); + model.put("review", review); + return VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM; + } + + @PostMapping("/reviews/new") + public String processCreationForm(@Valid Review review, BindingResult result) { + if (result.hasErrors()) { + return VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM; + } else { + this.reviewService.saveReview(review); + return "redirect:/reviews/" + review.getId(); + } + } + + + + @GetMapping("/reviews/{reviewId}") + public String processShowForm(@PathVariable("reviewId") int reviewId, Map model) { + + Review review = this.reviewService.findReviewById(reviewId); + + model.put("review", review); + + + return "reviews/reviewsShow"; + + } + + @GetMapping(value = "/reviews/{reviewId}/edit") + public String updateReview(@PathVariable("reviewId") final int reviewId, final ModelMap model) { + + + Review review = this.reviewService.findReviewById(reviewId); + model.addAttribute("review", review); + return ReviewController.VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM; + } + + @PostMapping(value = "/reviews/{reviewId}/edit") + public String updateReview(@Valid final Review reviewEdit, final BindingResult result, final ModelMap model) { + + if (result.hasErrors()) { + model.addAttribute("review", reviewEdit); + return ReviewController.VIEWS_REVIEWS_CREATE_OR_UPDATE_FORM; + + } else { + this.reviewService.saveReview(reviewEdit); + return "redirect:/reviews/" + reviewEdit.getId(); + } + + } + +} diff --git a/src/main/resources/messages/messages_es.properties b/src/main/resources/messages/messages_es.properties index 10a321d09..ccf24729e 100644 --- a/src/main/resources/messages/messages_es.properties +++ b/src/main/resources/messages/messages_es.properties @@ -31,4 +31,8 @@ duplicate=Ya se encuentra en uso nonNumeric=Solo debe contener números duplicateFormSubmission=No se permite el envío de formularios duplicados typeMismatch.date=Fecha inválida -typeMismatch.birthDate=Fecha inválida \ No newline at end of file +typeMismatch.birthDate=Fecha inválida +review= Reseña +reviews= Reseñas +stars= Estrellas +opinion= Opinión \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/offers/myOffersList.jsp b/src/main/webapp/WEB-INF/jsp/offers/myOffersList.jsp index 201065542..56efb42be 100644 --- a/src/main/webapp/WEB-INF/jsp/offers/myOffersList.jsp +++ b/src/main/webapp/WEB-INF/jsp/offers/myOffersList.jsp @@ -6,7 +6,7 @@ <%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> - +

diff --git a/src/main/webapp/WEB-INF/jsp/reviews/createOrUpdateReviewForm.jsp b/src/main/webapp/WEB-INF/jsp/reviews/createOrUpdateReviewForm.jsp new file mode 100644 index 000000000..94e5a9e3e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/reviews/createOrUpdateReviewForm.jsp @@ -0,0 +1,33 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + +

+ Nueva Opinión +

+ +
+ + + + +
+
+
+ + + + + + + + +
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/reviews/reviewsList.jsp b/src/main/webapp/WEB-INF/jsp/reviews/reviewsList.jsp new file mode 100644 index 000000000..2bd848cd9 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/reviews/reviewsList.jsp @@ -0,0 +1,50 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + +

+ +
+ + + + + + + + + + + + +<%-- --%> + + + + + + + + +
+ + + + + + + +
+ +
+
+ + +
diff --git a/src/main/webapp/WEB-INF/jsp/reviews/reviewsShow.jsp b/src/main/webapp/WEB-INF/jsp/reviews/reviewsShow.jsp new file mode 100644 index 000000000..e10af0bea --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/reviews/reviewsShow.jsp @@ -0,0 +1,38 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + +

+ + + + + + + + + + + + +
+ +
+ +
+ + + + + Editar opinión + + +
diff --git a/src/main/webapp/WEB-INF/tags/menu.tag b/src/main/webapp/WEB-INF/tags/menu.tag index 10a512467..3a9437e1b 100644 --- a/src/main/webapp/WEB-INF/tags/menu.tag +++ b/src/main/webapp/WEB-INF/tags/menu.tag @@ -35,7 +35,7 @@ - + Mis ofertas @@ -47,7 +47,16 @@ Contáctanos --> - + + + + Opiniones + + + + Valóranos + +