package com.softwaremill.common.cdi.autofactory.field;
import com.softwaremill.common.cdi.autofactory.*;
import javax.inject.Inject;
import java.util.List;
/**
* @author Adam Warski (adam at warski dot org)
*/
@CreatedWith(TotalPriceCalculator.Factory.class)
public class TotalPriceCalculatorFixedInjectionImpl implements TotalPriceCalculator {
@Inject
private PriceCalculator.Factory priceCalculatorFactory;
@Inject
private BulkOrderDiscounts bulkOrderDiscounts;
private final List<Product> products;
private final int specialDiscount;
public TotalPriceCalculatorFixedInjectionImpl(List<Product> products, int specialDiscount) {
this.products = products;
this.specialDiscount = specialDiscount;
}
@Override
public int getTotalPrice() {
int sum = 0;
for (Product product : products) {
sum += priceCalculatorFactory.create(product).getFinalPrice();
}
return sum - specialDiscount - bulkOrderDiscounts.getDiscountForBulkOrderSize(products.size());
}
}