50 lines
2.1 KiB
Java
50 lines
2.1 KiB
Java
|
package org.hso.ecommerce.action.cronjob;
|
||
|
|
||
|
import java.util.HashMap;
|
||
|
import java.util.List;
|
||
|
import java.util.Map.Entry;
|
||
|
|
||
|
import org.hso.ecommerce.action.cronjob.ReadSupplierDataAction.ArticleIdentifier;
|
||
|
import org.hso.ecommerce.action.cronjob.ReadSupplierDataAction.Offer;
|
||
|
import org.hso.ecommerce.api.data.Article;
|
||
|
import org.hso.ecommerce.entities.supplier.ArticleOffer;
|
||
|
|
||
|
public class UpdateOffersAction {
|
||
|
private List<ArticleOffer> offers;
|
||
|
private HashMap<ArticleIdentifier, Offer> cheapestOffer;
|
||
|
|
||
|
public UpdateOffersAction(List<ArticleOffer> offers, HashMap<ArticleIdentifier, Offer> cheapestOffer) {
|
||
|
this.offers = offers;
|
||
|
this.cheapestOffer = cheapestOffer;
|
||
|
}
|
||
|
|
||
|
private HashMap<ArticleIdentifier, ArticleOffer> mapOffers() {
|
||
|
HashMap<ArticleIdentifier, ArticleOffer> map = new HashMap<>();
|
||
|
for (ArticleOffer offer : offers) {
|
||
|
ArticleIdentifier identifier = new ArticleIdentifier(offer.manufacturer, offer.articleNumber);
|
||
|
map.put(identifier, offer);
|
||
|
}
|
||
|
return map;
|
||
|
}
|
||
|
|
||
|
public List<ArticleOffer> finish() {
|
||
|
HashMap<ArticleIdentifier, ArticleOffer> availableOffers = mapOffers();
|
||
|
for (Entry<ArticleIdentifier, Offer> cheapestOffer : cheapestOffer.entrySet()) {
|
||
|
String manufacturer = cheapestOffer.getKey().manufacturer;
|
||
|
String articleNumber = cheapestOffer.getKey().articleNumber;
|
||
|
ArticleOffer currentOffer = availableOffers.get(cheapestOffer.getKey());
|
||
|
if (currentOffer == null) {
|
||
|
currentOffer = new ArticleOffer();
|
||
|
currentOffer.manufacturer = manufacturer;
|
||
|
currentOffer.articleNumber = articleNumber;
|
||
|
offers.add(currentOffer);
|
||
|
}
|
||
|
Article currentOfferedArticle = cheapestOffer.getValue().apiSupplier.findArticle(manufacturer,
|
||
|
articleNumber);
|
||
|
currentOffer.vatPercent = currentOfferedArticle.vatPercent;
|
||
|
currentOffer.shouldBeAdvertised = currentOfferedArticle.shouldBeAdvertised;
|
||
|
}
|
||
|
return offers;
|
||
|
}
|
||
|
}
|