private void addReliantDiscount(ReliantDiscount r) { //SqlConnection connection = Connector.getInstance().getSQLConnection(); int id = r.getId(); string type = "Reliant"; bool isPartOfComplex = r.getIsPartOfComplex(); string reliantType; string visibleType = "-1"; int productId; int storeId = r.getStoreId(); int numOfProducts; int totalAmount; if (r.getProduct() == null) { reliantType = "totalAmount"; productId = -1; totalAmount = r.getTotalAmount(); numOfProducts = -1; } else { reliantType = "sameProduct"; productId = r.getProduct().getProductID(); totalAmount = -1; numOfProducts = r.getMinNumOfProducts(); } string sql = "INSERT INTO [dbo].[Discount] (id, type, reliantType, visibleType, productId, storeId, numOfProducts, totalAmount)" + " VALUES (@id, @type, @reliantType, @visibleType, @productId, @storeId, @numOfProducts, @totalAmount)"; connection.Execute(sql, new { id, type, reliantType, visibleType, productId, storeId, numOfProducts, totalAmount }); }
public double getActualTotalPrice() { productsActualPrice = new Dictionary <Product, double>(); fillActualPriceDic(); double sum = 0; LinkedList <DiscountComponent> discounts = store.getDiscounts(); foreach (DiscountComponent dis in discounts) { if (dis is DiscountComposite) { if (dis.checkCondition(productList, productsActualPrice) && dis.checkDate()) { dis.setComplexCondition(true, productList, productsActualPrice); } else { if (!dis.checkDate()) { // discount is invalid - date has passed store.removeDiscount(dis.getId()); } dis.setComplexCondition(false, productList, productsActualPrice); } } } foreach (KeyValuePair <Product, int> entry in productList) { Product p = entry.Key; double actualPrice = p.getActualPrice(entry.Value); sum += (entry.Value * actualPrice); } foreach (DiscountComponent dis in discounts) { if (dis is ReliantDiscount) { ReliantDiscount r = (ReliantDiscount)dis; if (!r.getIsPartOfComplex()) { if (r.isTotalAmountDiscount() && sum >= r.getTotalAmount()) { sum = sum * (1 - r.getPercentage()); } } } } foreach (DiscountComponent dis in discounts) { if (dis is VisibleDiscount) { VisibleDiscount v = (VisibleDiscount)dis; if (!v.getIsPartOfComplex() && v.isStoreVisibleDiscount()) { if (v.isStoreVisibleDiscount()) { sum = sum * (1 - v.getPercentage()); } } } } return(sum); }