public void GetPriceStrategyTest()
        {
            Customer dewd = new Person();
            dewd.Name = "Åke";
            dewd.Address = "Åkerivägen 3";

            Customer leetCrusaders = new Company();
            leetCrusaders.Name = "Åkes Åkeri";
            leetCrusaders.Address = "Åkerivägen 3a";
            ((Company)leetCrusaders).ContactPerson = (Person)dewd;

            Order o2 = new Order();
            o2.Customer = leetCrusaders;

            o2.Items = new Dictionary<int, OrderLineItem>();
            Item realTruck = new Item();
            realTruck.Description = "A real truck.4 wheels and a engine and everything. Color is red";

            realTruck.Quantity = 1;
            realTruck.Price = 10000;

            o2.Items.Add(0, new OrderLineItem());
            o2.Items[0].Item = realTruck;
            o2.Items[0].Quantity = 1;

            IPriceStrategy ips = PriceStrategyFactory.GetPriceStrategy(o2);

            Assert.IsInstanceOfType(ips,typeof(BestForCustomer));
            decimal temp = o2.Total;
            temp =temp - 0.25m*temp;
            decimal temp2 = ips.GetTotal(o2);
            Assert.AreEqual(ips.GetTotal(o2), temp);
        }
 public decimal GetTotal(Order order)
 {
     if (order.Total > Threshold)
     {
         return order.Total - Discount;
     }
     return 0;
 }
        public static IPriceStrategy GetPriceStrategy(Order order)
        {
            CompositePriceStrategy ips;

            if (order.Customer is Company)
                {

                ips = Bfc;
                ips.Add(Pd);
                }
            else
            {
                ips = Bfs;
            }
            ips.Add(TenThousandThresholdDiscount);
            ips.Add(ThousandThresholdDiscount);

            return ips;
        }
 public abstract decimal GetTotal(Order order);
 public override decimal GetTotal(Order order)
 {
     return priceStrategyList.Min(x => x.GetTotal(order));
 }
 public decimal GetTotal(Order order)
 {
     return order.Total-(order.Total* Procent);
 }
 public decimal GetTotal(Order order)
 {
     return order.Total-Value;
 }