Merge branch 'master' into feature/offered_article_supplier
This commit is contained in:
commit
f5ad05f49f
|
@ -30,9 +30,10 @@ public class UpdateOffersAction {
|
||||||
public List<ArticleOffer> finish() {
|
public List<ArticleOffer> finish() {
|
||||||
HashMap<ArticleIdentifier, ArticleOffer> availableOffers = mapOffers();
|
HashMap<ArticleIdentifier, ArticleOffer> availableOffers = mapOffers();
|
||||||
|
|
||||||
// Reset all advertise-flags first. They are set again below.
|
// Reset all advertise-flags and supplier relations first. They are set again below.
|
||||||
for (ArticleOffer offer : availableOffers.values()) {
|
for (ArticleOffer offer : availableOffers.values()) {
|
||||||
offer.shouldBeAdvertised = false;
|
offer.shouldBeAdvertised = false;
|
||||||
|
offer.cheapestSupplier = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Entry<ArticleIdentifier, Offer> cheapestOffer : cheapestOffer.entrySet()) {
|
for (Entry<ArticleIdentifier, Offer> cheapestOffer : cheapestOffer.entrySet()) {
|
||||||
|
@ -47,7 +48,10 @@ public class UpdateOffersAction {
|
||||||
}
|
}
|
||||||
Article currentOfferedArticle = cheapestOffer.getValue().apiSupplier.findArticle(manufacturer,
|
Article currentOfferedArticle = cheapestOffer.getValue().apiSupplier.findArticle(manufacturer,
|
||||||
articleNumber);
|
articleNumber);
|
||||||
|
currentOffer.title = currentOfferedArticle.title;
|
||||||
currentOffer.vatPercent = currentOfferedArticle.vatPercent;
|
currentOffer.vatPercent = currentOfferedArticle.vatPercent;
|
||||||
|
currentOffer.cheapestSupplier = cheapestOffer.getValue().dbSupplier;
|
||||||
|
currentOffer.pricePerUnitNet = currentOfferedArticle.pricePerUnitNet;
|
||||||
|
|
||||||
// Set advertise-flag if any supplier wants it to be set
|
// Set advertise-flag if any supplier wants it to be set
|
||||||
if (currentOfferedArticle.shouldBeAdvertised) {
|
if (currentOfferedArticle.shouldBeAdvertised) {
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package org.hso.ecommerce.action.shop;
|
||||||
|
|
||||||
|
import org.hso.ecommerce.entities.shop.Article;
|
||||||
|
import org.hso.ecommerce.repos.shop.ArticleRepository;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SearchByTermAction {
|
||||||
|
|
||||||
|
public static List<Article> searchByTerm(String sourceTerm, ArticleRepository repository) {
|
||||||
|
|
||||||
|
List<String> terms = Arrays.asList(sourceTerm.split(" "));
|
||||||
|
List<Article> resultArticles = new ArrayList<>();
|
||||||
|
|
||||||
|
terms.forEach(term -> {
|
||||||
|
List<Article> titleArticles = repository.getArticlesByTermInTitle(term); //search in Title
|
||||||
|
titleArticles.forEach(article -> {
|
||||||
|
if(!resultArticles.contains(article)){
|
||||||
|
resultArticles.add(article);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
terms.forEach(term -> {
|
||||||
|
List<Article> descArticles = repository.getArticlesByTermInDescription(term); //search by Term
|
||||||
|
descArticles.forEach(article -> {
|
||||||
|
if(!resultArticles.contains(article)){
|
||||||
|
resultArticles.add(article);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return resultArticles;
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
@ -30,7 +31,8 @@ public class RegisterController {
|
||||||
@RequestParam("name") String name,
|
@RequestParam("name") String name,
|
||||||
@RequestParam("address") String address,
|
@RequestParam("address") String address,
|
||||||
@RequestParam("type") String type,
|
@RequestParam("type") String type,
|
||||||
@RequestParam("ad") String ad
|
@RequestParam("ad") String ad,
|
||||||
|
HttpSession session
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Optional<User> user = userRepository.findByEmail(username);
|
Optional<User> user = userRepository.findByEmail(username);
|
||||||
|
@ -64,7 +66,10 @@ public class RegisterController {
|
||||||
|
|
||||||
userRepository.save(newUser); // save newUser
|
userRepository.save(newUser); // save newUser
|
||||||
|
|
||||||
return "redirect:/login";
|
user = userRepository.findByEmail(username);
|
||||||
|
session.setAttribute("userId", user.get().getId());
|
||||||
|
|
||||||
|
return "redirect:/";
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/register")
|
@GetMapping("/register")
|
||||||
|
|
|
@ -148,9 +148,9 @@ public class InternArticleController {
|
||||||
File tmpFile = new File(defaultImagePath);
|
File tmpFile = new File(defaultImagePath);
|
||||||
// test if default img file exits
|
// test if default img file exits
|
||||||
if (!tmpFile.exists()) {
|
if (!tmpFile.exists()) {
|
||||||
// fallback if the file not exists
|
// fallback if the file not exists
|
||||||
// create new file
|
// create new file
|
||||||
BufferedImage bufferedImage = new BufferedImage(422, 428, BufferedImage.TYPE_INT_RGB);
|
BufferedImage bufferedImage = new BufferedImage(422, 428, BufferedImage.TYPE_INT_RGB);
|
||||||
try {
|
try {
|
||||||
ImageIO.write(bufferedImage, "jpg", new File(defaultImagePath)); // save new file on disk
|
ImageIO.write(bufferedImage, "jpg", new File(defaultImagePath)); // save new file on disk
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -208,7 +208,10 @@ public class InternArticleController {
|
||||||
public long id;
|
public long id;
|
||||||
|
|
||||||
void addListedArticle(Article article, int stock) {
|
void addListedArticle(Article article, int stock) {
|
||||||
this.imgPath = article.image.path;
|
|
||||||
|
if (article.image != null) {
|
||||||
|
this.imgPath = article.image.path;
|
||||||
|
}
|
||||||
this.title = article.title;
|
this.title = article.title;
|
||||||
this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100));
|
this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100));
|
||||||
this.price = String.format("%.2f", ((float) article.getPriceGross() / 100));
|
this.price = String.format("%.2f", ((float) article.getPriceGross() / 100));
|
||||||
|
@ -338,7 +341,9 @@ public class InternArticleController {
|
||||||
}
|
}
|
||||||
|
|
||||||
void addArticle(Article article, int stock) {
|
void addArticle(Article article, int stock) {
|
||||||
this.imgPath = article.image.path;
|
if (article.image != null) {
|
||||||
|
this.imgPath = article.image.path;
|
||||||
|
}
|
||||||
this.title = article.title;
|
this.title = article.title;
|
||||||
this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100));
|
this.price_netto = String.format("%.2f", ((float) article.shopPricePerUnitNetCent / 100));
|
||||||
this.price = String.format("%.2f", ((float) article.getPriceGross() / 100));
|
this.price = String.format("%.2f", ((float) article.getPriceGross() / 100));
|
||||||
|
|
|
@ -100,8 +100,11 @@ public class ShopArticleController {
|
||||||
@PathVariable("id") Long id
|
@PathVariable("id") Long id
|
||||||
) throws IOException {
|
) throws IOException {
|
||||||
Article article = articleRepository.findArticleById(id);
|
Article article = articleRepository.findArticleById(id);
|
||||||
InputStream in = new FileInputStream(article.image.path);
|
|
||||||
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
|
if(article.image != null) {
|
||||||
IOUtils.copy(in, response.getOutputStream());
|
InputStream in = new FileInputStream(article.image.path);
|
||||||
|
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
|
||||||
|
IOUtils.copy(in, response.getOutputStream());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package org.hso.ecommerce.controller.shop;
|
package org.hso.ecommerce.controller.shop;
|
||||||
|
|
||||||
|
import org.hso.ecommerce.action.shop.SearchByTermAction;
|
||||||
import org.hso.ecommerce.entities.shop.Article;
|
import org.hso.ecommerce.entities.shop.Article;
|
||||||
import org.hso.ecommerce.repos.shop.ArticleRepository;
|
import org.hso.ecommerce.repos.shop.ArticleRepository;
|
||||||
import org.hso.ecommerce.repos.shop.CategoryRepository;
|
import org.hso.ecommerce.repos.shop.CategoryRepository;
|
||||||
|
@ -31,8 +32,10 @@ public class ShopSearchController {
|
||||||
) {
|
) {
|
||||||
model.addAttribute("categories", categoryRepository.getCategories()); //for sidebar
|
model.addAttribute("categories", categoryRepository.getCategories()); //for sidebar
|
||||||
|
|
||||||
|
term = term.trim();
|
||||||
|
|
||||||
if (term != null) { //if search by Term
|
if (term != null) { //if search by Term
|
||||||
List<Article> articles = articleRepository.getArticlesByTerm(term); //search by Term
|
List<Article> articles = SearchByTermAction.searchByTerm(term, articleRepository);
|
||||||
model.addAttribute("articles", articles);
|
model.addAttribute("articles", articles);
|
||||||
} else if (category != null) { //if search by Category
|
} else if (category != null) { //if search by Category
|
||||||
List<Article> articles = articleRepository.getArticlesByCategory(category); //search by Category
|
List<Article> articles = articleRepository.getArticlesByCategory(category); //search by Category
|
||||||
|
|
|
@ -31,7 +31,10 @@ public interface ArticleRepository extends JpaRepository<Article, Long> {
|
||||||
Optional<Integer> findArticleIDByRelatedID(@Param("relatedId") long relatedId);
|
Optional<Integer> findArticleIDByRelatedID(@Param("relatedId") long relatedId);
|
||||||
|
|
||||||
@Query(value = "Select a.* from articles as a, warehouse_booking_position_entries as wbpe where wbpe.article_id = a.id and a.title LIKE %:term% group by wbpe.slot_id having max(wbpe.id) and wbpe.new_sum_slot != 0", nativeQuery = true)
|
@Query(value = "Select a.* from articles as a, warehouse_booking_position_entries as wbpe where wbpe.article_id = a.id and a.title LIKE %:term% group by wbpe.slot_id having max(wbpe.id) and wbpe.new_sum_slot != 0", nativeQuery = true)
|
||||||
List<Article> getArticlesByTerm(String term);
|
List<Article> getArticlesByTermInTitle(String term);
|
||||||
|
|
||||||
|
@Query(value = "Select a.* from articles as a, warehouse_booking_position_entries as wbpe where wbpe.article_id = a.id and a.description LIKE %:term% group by wbpe.slot_id having max(wbpe.id) and wbpe.new_sum_slot != 0", nativeQuery = true)
|
||||||
|
List<Article> getArticlesByTermInDescription(String term);
|
||||||
|
|
||||||
@Query(value = "Select a.* from articles as a, categories as c, article_categories_bindings as acb, warehouse_booking_position_entries as wbpe where wbpe.article_id = a.id and acb.articles_id = a.id and acb.categories_id = c.id and c.name = :category group by wbpe.slot_id having max(wbpe.id) and wbpe.new_sum_slot != 0", nativeQuery = true)
|
@Query(value = "Select a.* from articles as a, categories as c, article_categories_bindings as acb, warehouse_booking_position_entries as wbpe where wbpe.article_id = a.id and acb.articles_id = a.id and acb.categories_id = c.id and c.name = :category group by wbpe.slot_id having max(wbpe.id) and wbpe.new_sum_slot != 0", nativeQuery = true)
|
||||||
List<Article> getArticlesByCategory(String category);
|
List<Article> getArticlesByCategory(String category);
|
||||||
|
|
Reference in New Issue