public static void ApplyDiscount(float[] float_params)
    {
        float discount_amount     = float_params[0];
        float duration_in_minutes = float_params[1];

        //ideally these discounts would be serialized out to userdata but thats way too much work for now
        if (s_active_discounts == null)
        {
            s_active_discounts = new List <ActiveDiscount>();
        }

        ActiveDiscount new_discount = new ActiveDiscount();

        new_discount.discount_amount = discount_amount;

        TimeSpan duration        = TimeSpan.FromMinutes(duration_in_minutes);
        DateTime expiration_time = DateTime.Now.Add(duration);

        new_discount.expiration_time = expiration_time;

        s_active_discounts.Add(new_discount);

        CalculateDiscountFactor();
        s_on_discounts_updated();
    }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            //int amount = 0;
            Dictionary <string, int> prod = new Dictionary <string, int> {
                { "A", 3 }, { "B", 4 }, { "C", 3 }, { "D", 2 }
            };
            Dictionary <string, int> _activeDiscount = new Dictionary <string, int> {
                { "3A", 130 }, { "2B", 45 }, { "CD", 30 }
            };
            ActiveDiscount disc = new ActiveDiscount(prod, _activeDiscount);

            Console.WriteLine(disc.CalculateAmountDiscount());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Convert current product price to other currency using currency exchange rate
        /// </summary>
        /// <param name="currency"></param>
        /// <returns></returns>
        public ProductPrice ConvertTo(Currency currency)
        {
            var retVal = new ProductPrice(currency);

            retVal.ListPrice = ListPrice.ConvertTo(currency);
            retVal.SalePrice = SalePrice.ConvertTo(currency);
            retVal.ProductId = ProductId;
            if (ActiveDiscount != null)
            {
                retVal.ActiveDiscount = ActiveDiscount.ConvertTo(currency);
            }
            if (PotentialDiscount != null)
            {
                retVal.PotentialDiscount = PotentialDiscount.ConvertTo(currency);
            }
            return(retVal);
        }
    void Update()
    {
        DateTime now = DateTime.Now;

        if (s_active_discounts != null)
        {
            for (int n = s_active_discounts.Count - 1; n >= 0; n--)
            {
                ActiveDiscount discount = s_active_discounts[n];
                if (now.CompareTo(discount.expiration_time) > 0)
                {
                    Debug.Log("Discount has expired");
                    s_active_discounts.RemoveAt(n);
                    CalculateDiscountFactor();
                    s_on_discounts_updated();
                }
            }
        }
    }