Example #1
0
 public decimal GetPriceForThisClient(Product product)
 {
     Discount specialOffer = GetOfferForProductOrNull(product);
     return specialOffer != null
                 ? specialOffer.GetDiscountedPrice()
                 : product.Price;
 }
 public IEntity Load(int id, SqlDataReader dataReader)
 {
     Product product = new Product();
     product.Id = id;
     product.Name = (string)dataReader["Name"];
     product.Price = (decimal)dataReader["Price"];
     return product;
 }
Example #3
0
        static void Main(string[] args)
        {
            Database.SetInitializer(new DropCreateDatabaseAlways<PromoContext>());

            Product rocketFuel = new Product { Name = "Rocket fuel", Price = 25.0m };
            Product doubleBlast = new Product { Name = "Double blast", Price = 40.0m };
            Product tripleBlast = new Product { Name = "Triple blast", Price = 40.0m };

            PromoContext dbContext = new PromoContext();

            IEnumerable<Product> products = dbContext.Products.ToArray();
            var asd = products.ToArray();
            //dbContext.Products.Add(rocketFuel);
            //dbContext.Products.Add(doubleBlast);
            dbContext.Products.Add(tripleBlast);

            Discount rocketFuelDiscount = new Discount { Product = rocketFuel, DiscountPolicy = new PromoDay { DayDate = DateTime.Today, DiscountPercentage = new Percentage(20) } };
            Client josephDeer = new Client
            {
                Name = "Joseph Deer",
                Address = "Czerwone Maki 84",
            };

            josephDeer.Offer(rocketFuelDiscount);
            Discount doubleBlastAccount = new Discount
            {
                Product = doubleBlast,
                DiscountPolicy =
                    new DiscountUntilExpired
                    {
                        DiscountPercentage = new Percentage(50),
                        FromTo = new DateSpan { StartDate = DateTime.Today, EndDate = DateTime.Today.AddDays(2) }
                    }
            };
            josephDeer.Offer(doubleBlastAccount);
            Client regularClient = new Client
            {
                Name = "Jack Ryan",
                Address = "Rynek 5"
            };

            dbContext.Clients.Add(regularClient);
            dbContext.Clients.Add(josephDeer);

            Discount discount = new Discount { Product = new Product { Name = "discounted product", Price = 12.0m } };
            dbContext.Discounts.Add(discount);
            dbContext.SaveChanges();
            int relatedProductId = discount.Product.Id;
            Discount insertedDiscount = dbContext.Discounts.Single(d => d.Id == discount.Id);
            dbContext.Discounts.Remove(insertedDiscount);
            dbContext.SaveChanges();
            Product releatedProduct = dbContext.Products.Single(p => p.Id == relatedProductId);
            insertedDiscount = dbContext.Discounts.Single(d => d.Id == discount.Id);
        }
 public void DiscountShouldSaveRelatedProductIfNotSaved()
 {
     Product relatedProduct = new Product { Name = "Oil", Price = 89.0m };
     Discount discount = new Discount { Product = relatedProduct };
     mappingContext.DiscountsMapper.Insert(discount);
     mappingContext.SaveChanges();
     int expectedRelatedProductId = relatedProduct.Id;
     using (SqlConnection sqlConnection = new SqlConnection(connectionString))
     {
         sqlConnection.Open();
         using (SqlCommand sqlcommand = new SqlCommand("SELECT Product_Id FROM Discounts WHERE Id = " + discount.Id, sqlConnection))
         {
             int actualProductId = (int)sqlcommand.ExecuteScalar();
             Assert.AreEqual(expectedRelatedProductId, actualProductId);
         }
     }
 }
Example #5
0
        private static void DomainTest()
        {
            Product rocketFuel = new Product {Id = 1, Name = "Rocket fuel", Price = 25.0m};
            Product doubleBlast = new Product {Id = 2, Name = "Double blast", Price = 40.0m};
            Discount rocketFuelDiscount = new Discount
                {
                    Product = rocketFuel,
                    DiscountPolicy = new PromoDay {DayDate = DateTime.Today, DiscountPercentage = new Percentage(20)}
                };
            Client josephDeer = new Client
                {
                    Name = "Joseph Deer",
                    Address = "Czerwone Maki 84",
                };

            josephDeer.Offer(rocketFuelDiscount);
            Discount doubleBlastAccount = new Discount
                {
                    Product = doubleBlast,
                    DiscountPolicy =
                        new DiscountUntilExpired
                            {
                                DiscountPercentage = new Percentage(50),
                                FromTo = new DateSpan {StartDate = DateTime.Today, EndDate = DateTime.Today.AddDays(2)}
                            }
                };
            josephDeer.Offer(doubleBlastAccount);
            Client regularClient = new Client
                {
                    Name = "Jack Ryan",
                    Address = "Rynek 5"
                };


            decimal regularPrice = regularClient.GetPriceForThisClient(doubleBlast);
            decimal discountedPrice = josephDeer.GetPriceForThisClient(doubleBlast);
            Console.WriteLine("double Blast regular price ${0}, discounted price only ${1}!", regularPrice, discountedPrice);

            regularPrice = regularClient.GetPriceForThisClient(rocketFuel);
            discountedPrice = josephDeer.GetPriceForThisClient(rocketFuel);
            Console.WriteLine("rocket fuel regular price ${0}, discounted price only ${1}!", regularPrice, discountedPrice);

            Console.ReadKey();
        }
Example #6
0
 private static void TestProductInsert()
 {
     MappingContext mappingContext = new MappingContext("ormExample");
     Product kryptonite = new Product {Name = "Next generation blast", Price = 999.0m};
     mappingContext.ProductMapper.Insert(kryptonite);
 }
 public void DiscountShouldGetRelatedProduct()
 {
     Product discountedProduct = new Product { Name = "Oil", Price = 89.0m };
     mappingContext.ProductMapper.Insert(discountedProduct);
     mappingContext.SaveChanges();
     Discount discount = new Discount { Product = discountedProduct };
     mappingContext.DiscountsMapper.Insert(discount);
     mappingContext.SaveChanges();
     int idToGet = discount.Id;
     Discount sut = new MappingContext(ConnectionStringName).DiscountsMapper.GetById(idToGet);
     Assert.AreEqual(discountedProduct.Id, sut.Product.Id);
 }
Example #8
0
 private Discount GetOfferForProductOrNull(Product product)
 {
     return Offers.FirstOrDefault(offering => offering.Product.Equals(product));
 }