Advertised Articles now shown correctly

This commit is contained in:
Hannes Huber 2020-05-08 10:37:42 +02:00 committed by localhorst
parent 262640a2b4
commit 82dacef4c0
5 changed files with 31 additions and 7 deletions

View File

@ -0,0 +1,20 @@
package org.hso.ecommerce.action.shop;
import org.hso.ecommerce.entities.shop.Article;
import java.util.ArrayList;
import java.util.List;
public class GetRandomArticlesAction {
public static List<Article> getRandomArticles(int quantity, List<Article> advertisedArticles) {
List<Article> randomisedArticles = new ArrayList<Article>();
for (int i = 0; i < quantity; i++) {
int index = (int) (Math.random() * advertisedArticles.size());
randomisedArticles.add(advertisedArticles.remove(index));
if(advertisedArticles.size() == 0)
break;
}
return randomisedArticles;
}
}

View File

@ -1,6 +1,7 @@
package org.hso.ecommerce.controller.shop;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.hso.ecommerce.action.shop.GetRandomArticlesAction;
import org.hso.ecommerce.entities.shop.Article;
import org.hso.ecommerce.entities.shop.ShoppingCart;
import org.hso.ecommerce.repos.shop.ArticleRepository;
@ -16,6 +17,7 @@ import javax.servlet.http.HttpSession;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@Controller
@ -36,7 +38,7 @@ public class ShopArticleController {
Article article = articleRepository.findArticleById(id);
if(article == null) {
if (article == null) {
request.setAttribute("error", "Der Artikel wurde nicht gefunden.");
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return "error/404";
@ -51,7 +53,7 @@ public class ShopArticleController {
model.addAttribute("inStock", false);
}
List<Article> commercialArticles = articleRepository.getAdvertisedArticles();
List<Article> commercialArticles = GetRandomArticlesAction.getRandomArticles(4, articleRepository.getAdvertisedArticles());
model.addAttribute("commercialArticles", commercialArticles);

View File

@ -1,5 +1,6 @@
package org.hso.ecommerce.controller.shop;
import org.hso.ecommerce.action.shop.GetRandomArticlesAction;
import org.hso.ecommerce.entities.shop.Article;
import org.hso.ecommerce.repos.shop.ArticleRepository;
import org.springframework.beans.factory.annotation.Autowired;
@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
@Controller
@ -26,7 +28,7 @@ public class ShopIndexController {
@GetMapping("/shop/")
public String shop(Model model, HttpSession session) {
List<Article> commercialArticles = articleRepository.getAdvertisedArticles();
List<Article> commercialArticles = GetRandomArticlesAction.getRandomArticles(8, articleRepository.getAdvertisedArticles());
model.addAttribute("commercialArticles", commercialArticles);
//check if logged in
@ -39,7 +41,7 @@ public class ShopIndexController {
if (isLoggedIn) {
List<Article> suggestedArticles = articleRepository.getLastOrderedArticles("4");
if(suggestedArticles.size() > 0) {
if (suggestedArticles.size() > 0) {
model.addAttribute("suggestedArticles", suggestedArticles);
hasOrders = true;
}

View File

@ -27,7 +27,7 @@
<p th:text="${article.description}"></p>
</div>
<div class="s">
<img th:src="@{/shop/articles/{id}/image.jpg(id=${article.id})}" class="s"/>
<img th:src="@{/shop/articles/{id}/image.jpg(id=${article.id})}"/>
</div>
<div class="s"></div>
<form class="s" method="POST">
@ -56,7 +56,7 @@
<h1>Weitere Schnäppchen</h1>
<div class='grid m base shadow'>
<section th:each="article: ${commercialArticles}"><a th:href="@{/shop/articles/{id}(id = ${article.id})}" class="section">
<img th:src="@{/shop/articles/{id}/image.jpg(id=${article.id})}" class="s"/>
<img th:src="@{/shop/articles/{id}/image.jpg(id=${article.id})}"/>
<h2 th:text="${article.title}"></h2>
<p class='price' th:text="${article.shopPricePerUnitNetCent}"></p>
<p th:text="${article.description}"></p>

View File

@ -21,7 +21,7 @@
<section th:each="article: ${commercialArticles}">
<a th:href="@{/shop/articles/{id}(id=${article.id})}" class="section">
<img th:src="@{/shop/articles/{id}/image.jpg(id=${article.id})}" class="s"/>
<img th:src="@{/shop/articles/{id}/image.jpg(id=${article.id})}"/>
<h2 th:text="${article.title}" />
<p class='price' th:text="${article.shopPricePerUnitNetCent}" />
<p th:text="${article.description}" />