public void SetUp()
        {
            var productOnOffer    = ProductFactory.CreateProduct(ProductType.Bread, 1);
            var conditionForOffer = ProductFactory.CreateProduct(ProductType.Butter, 2);

            _percentageOffer = new PercentageOffer(productOnOffer, conditionForOffer, 50);
        }
        public IHttpActionResult PostPercentageOffer(PercentageOffer percentageOffer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.PercentageOffers.Add(percentageOffer);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (PercentageOfferExists(percentageOffer.OfferID))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = percentageOffer.OfferID }, percentageOffer));
        }
        public IHttpActionResult PutPercentageOffer(short id, PercentageOffer percentageOffer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != percentageOffer.OfferID)
            {
                return(BadRequest());
            }

            db.Entry(percentageOffer).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PercentageOfferExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public IHttpActionResult GetPercentageOffer(short id)
        {
            PercentageOffer percentageOffer = db.PercentageOffers.Find(id);

            if (percentageOffer == null)
            {
                return(NotFound());
            }

            return(Ok(percentageOffer));
        }
        public IHttpActionResult DeletePercentageOffer(short id)
        {
            PercentageOffer percentageOffer = db.PercentageOffers.Find(id);

            if (percentageOffer == null)
            {
                return(NotFound());
            }

            db.PercentageOffers.Remove(percentageOffer);
            db.SaveChanges();

            return(Ok(percentageOffer));
        }
        public void Setup()
        {
            var percentageProductOnOffer = ProductFactory.CreateProduct(ProductType.Bread, 1);
            var conditionForOffer        = ProductFactory.CreateProduct(ProductType.Butter, 2);
            var percentageOffer          = new PercentageOffer(percentageProductOnOffer, conditionForOffer, 50);

            var productOnOffer = ProductFactory.CreateProduct(ProductType.Milk, 4);
            var productOffer   = new ProductOffer(productOnOffer, productOnOffer.Price);

            var offers = new List <IOffer>
            {
                percentageOffer,
                productOffer
            };

            _basket = new Basket(offers);
        }