diff --git a/prototype/e-commerce.db.copy b/prototype/e-commerce.db.copy deleted file mode 100644 index e4c39c9..0000000 Binary files a/prototype/e-commerce.db.copy and /dev/null differ diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java index 0081c88..7a7e7fe 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/InternArticleController.java @@ -5,8 +5,10 @@ import java.util.List; import org.hso.ecommerce.entities.shop.Article; import org.hso.ecommerce.entities.shop.Category; +import org.hso.ecommerce.entities.supplier.ArticleOffer; import org.hso.ecommerce.repos.shop.ArticleRepository; import org.hso.ecommerce.repos.shop.CategoryRepository; +import org.hso.ecommerce.repos.shop.OffersRepository; import org.hso.ecommerce.repos.warehouse.WarehouseBookingPositionSlotEntryRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -26,6 +28,9 @@ public class InternArticleController { @Autowired private final CategoryRepository categoryRepository = null; + @Autowired + private final OffersRepository offersRepository = null; + @GetMapping("/") public String internListedArticles(Model model) { @@ -57,39 +62,65 @@ public class InternArticleController { } @PostMapping("/{id}/saveChanges") - public RedirectView saveChanges( - @PathVariable int id, - @RequestParam("title") String title, - @RequestParam("description") String description, - @RequestParam("units-per-slot") String warehouseUnitsPerSlot, - @RequestParam("price_netto") String pricenetto, - @RequestParam("reorderMaxPrice") String reorderMaxPrice, - @RequestParam("autobuy") Boolean shouldReorder, - @RequestParam("categories") String categories) { + public RedirectView saveChanges(@PathVariable(required = true) int id, + @RequestParam(value = "title", required = true) String title, + @RequestParam(value = "description", required = true) String description, + @RequestParam(value = "units-per-slot", required = true) String warehouseUnitsPerSlot, + @RequestParam(value = "price_netto", required = true) String pricenetto, + @RequestParam(value = "reorderMaxPrice", required = true) String reorderMaxPrice, + @RequestParam(value = "autobuy", required = true) Boolean shouldReorder, + @RequestParam(value = "categories", required = true) String categories) { - Article oldArticle = articleRepository.findArticleById(id); + Article tmpArticle = articleRepository.findArticleById(id); // get the old article // TODO img String[] separatedCategories = categories.split("\n"); - oldArticle.categories.clear(); + tmpArticle.categories.clear(); - // loop through all categories strings and create a new category if a new one; also adds the categorys to the article + // loop through all categories strings and create a new category if a new one; + // also adds the categorys to the article for (String category : separatedCategories) { - oldArticle.categories.add(categoryRepository.findCategoryByName(category.trim()) + tmpArticle.categories.add(categoryRepository.findCategoryByName(category.trim()) .orElseGet(() -> new Category(category.trim()))); } - oldArticle.shouldReorder = shouldReorder; - oldArticle.reorderMaxPrice = (int) (Float.parseFloat(reorderMaxPrice) * 100); - oldArticle.shopPricePerUnitNetCent = (int) (Float.parseFloat(pricenetto) * 100); - oldArticle.warehouseUnitsPerSlot = Integer.parseInt(warehouseUnitsPerSlot); - oldArticle.title = title; - oldArticle.description = description; + tmpArticle.shouldReorder = shouldReorder; + tmpArticle.reorderMaxPrice = (int) (Float.parseFloat(reorderMaxPrice) * 100); + tmpArticle.shopPricePerUnitNetCent = (int) (Float.parseFloat(pricenetto) * 100); + tmpArticle.warehouseUnitsPerSlot = Integer.parseInt(warehouseUnitsPerSlot); + tmpArticle.title = title; + tmpArticle.description = description; - articleRepository.save(oldArticle); // save updated article + articleRepository.save(tmpArticle); // save updated article return new RedirectView("../"); // return to overview page + + } + + @PostMapping("/addArticle/{id}") + public RedirectView addArticle(@PathVariable(required = true) String id) { + // article is not already listed, create new one + int offeredArticleID = Integer.parseInt(id); + + Article tmpArticle = new Article(); + + ArticleOffer offeredArticle = offersRepository.findOfferedArticleById(offeredArticleID); + + // set default values + tmpArticle.description = ""; + tmpArticle.reorderMaxPrice = 0; + tmpArticle.shopPricePerUnitNetCent = offeredArticle.pricePerUnitNet; + tmpArticle.shouldReorder = false; + tmpArticle.title = offeredArticle.title; + tmpArticle.warehouseUnitsPerSlot = 1; + tmpArticle.image = articleRepository.findAll().get(0).image; // TODO set any static default image + tmpArticle.related = offeredArticle; + + articleRepository.save(tmpArticle); // save new article + + // return to edit article page + return new RedirectView("../" + articleRepository.findArticleIDByRelatedID(offeredArticleID).get()); } public static class UImodelArticles { @@ -115,13 +146,13 @@ public class InternArticleController { this.title = article.title; this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100)); this.price = String.format("%.2f", ((float) article.getPriceGross() / 100)); - + StringBuilder result = new StringBuilder(); for (Category temp : article.categories) { result.append(temp.name + " "); } - this.categorie = result.toString(); + this.categorie = result.toString(); this.stock = stock; this.offer_id = article.related.id; @@ -143,8 +174,7 @@ public class InternArticleController { public boolean shouldReorder; public String warehouseUnitsPerSlot; public String description; - - + public String getImgPath() { return imgPath; } @@ -246,15 +276,15 @@ public class InternArticleController { this.title = article.title; this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100)); this.price = String.format("%.2f", ((float) article.getPriceGross() / 100)); - + StringBuilder result = new StringBuilder(); for (Category temp : article.categories) { result.append(temp.name); result.append("\n"); } - this.categorie = result.toString(); - + this.categorie = result.toString(); + this.stock = stock; this.offer_id = article.related.id; this.id = article.id; diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java index 685f8f8..3ef21bf 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/intern/suppliers/SupplierOfferController.java @@ -2,17 +2,16 @@ package org.hso.ecommerce.controller.intern.suppliers; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.hso.ecommerce.entities.supplier.ArticleOffer; -import org.hso.ecommerce.repos.shop.CategoryRepository; +import org.hso.ecommerce.repos.shop.ArticleRepository; import org.hso.ecommerce.repos.shop.OffersRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("/intern/") @@ -21,6 +20,9 @@ public class SupplierOfferController { @Autowired private final OffersRepository offersRepository = null; + @Autowired + private final ArticleRepository articleRepository = null; + @GetMapping("supplierOffers") public String internListedArticles(Model model) { @@ -28,7 +30,7 @@ public class SupplierOfferController { for (ArticleOffer article : offersRepository.findAll()) { UImodelOfferedArticle tmp = new UImodelOfferedArticle(); - tmp.addData(article,"supplierName01", 4884, 5); + tmp.addData(article, "supplierName01", 4884, articleRepository.findArticleIDByRelatedID(article.id)); //TODO display supplier name with link totals.add(tmp); } @@ -38,6 +40,7 @@ public class SupplierOfferController { public class UImodelOfferedArticle { + long offer_id; String title; String manufacturer; String articlenumber; @@ -46,6 +49,23 @@ public class SupplierOfferController { String price; String ads; int listedArticleId; + boolean offerIsListed; //true --> offered article is listed + + public long getOffer_id() { + return offer_id; + } + + public void setOffer_id(long offer_id) { + this.offer_id = offer_id; + } + + public boolean isOfferIsListed() { + return offerIsListed; + } + + public void setOfferIsListed(boolean offerIsListed) { + this.offerIsListed = offerIsListed; + } public String getTitle() { return title; @@ -111,18 +131,26 @@ public class SupplierOfferController { this.listedArticleId = listedArticleId; } - public void addData(ArticleOffer article, String supplierName, int supplierId, int listedArticleId) { + public void addData(ArticleOffer article, String supplierName, int supplierId, + Optional listedArticleId) { + this.offer_id = article.id; this.title = article.title; this.manufacturer = article.manufacturer; this.articlenumber = article.articleNumber; this.supplierName = supplierName; this.supplierId = supplierId; this.price = String.format("%.2f", ((float) article.pricePerUnitNet / 100)); - this.ads = (article.shouldBeAdvertised) ? "Ja" : "Nein"; - this.listedArticleId = listedArticleId; + this.ads = (article.shouldBeAdvertised) ? "Ja" : "Nein"; + + if (listedArticleId.isPresent()) { + // this offer is listed --> show link + this.listedArticleId = listedArticleId.get(); + offerIsListed = true; + } else { + // this offer is not listed + offerIsListed = false; + } } - } - } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java index 6f79487..6ac9e1e 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/ArticleRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface ArticleRepository extends JpaRepository { @@ -26,5 +27,7 @@ public interface ArticleRepository extends JpaRepository { @Query("SELECT a FROM CustomerOrderPosition cop JOIN cop.order co JOIN co.customer c JOIN cop.article a WHERE c.id = :customerId ORDER BY co.id DESC") List
getOrderedArticles(long customerId); - + @Query(value = "SELECT a.id FROM articles a WHERE a.related_id = :relatedId", nativeQuery = true) + Optional findArticleIDByRelatedID(@Param("relatedId") long relatedId); + } diff --git a/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java b/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java index b1d6f0a..20a3f90 100644 --- a/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java +++ b/prototype/src/main/java/org/hso/ecommerce/repos/shop/OffersRepository.java @@ -5,6 +5,7 @@ import java.util.List; import org.hso.ecommerce.entities.supplier.ArticleOffer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository @@ -12,5 +13,8 @@ public interface OffersRepository extends JpaRepository { @Query("SELECT a FROM ArticleOffer a") List findAll(); + + @Query("SELECT a FROM ArticleOffer a WHERE a.id = :offeredarticleId") + ArticleOffer findOfferedArticleById(@Param("offeredarticleId") long offeredarticleId); } diff --git a/prototype/src/main/resources/templates/intern/listedArticles/id.html b/prototype/src/main/resources/templates/intern/listedArticles/id.html index b2e878a..05996d2 100644 --- a/prototype/src/main/resources/templates/intern/listedArticles/id.html +++ b/prototype/src/main/resources/templates/intern/listedArticles/id.html @@ -28,7 +28,12 @@

- + + + + + + Details

diff --git a/prototype/src/main/resources/templates/intern/offeredArticles/index.html b/prototype/src/main/resources/templates/intern/offeredArticles/index.html index cfa6913..7a18ccc 100644 --- a/prototype/src/main/resources/templates/intern/offeredArticles/index.html +++ b/prototype/src/main/resources/templates/intern/offeredArticles/index.html @@ -47,7 +47,17 @@ - + + + +
+
+ +
+
+