Пример #1
0
        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
            });
        }
Пример #2
0
        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);
        }