public ShoppingBasketTestsFixture(ITestOutputHelper outputHelper)
        {
            // Setup DI.
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging((builder) => builder.AddXUnit(outputHelper));
            serviceCollection.AddShoppingBasketDependencies();

            ServiceProvider = serviceCollection.BuildServiceProvider();

            // Create basket items.
            var bread  = new BasketItem(Guid.NewGuid(), "Bread", 1);
            var butter = new BasketItem(Guid.NewGuid(), "Butter", 0.8M);
            var milk   = new BasketItem(Guid.NewGuid(), "Milk", 1.15M);

            // Create discounts.
            var breadDiscount = new ProductDiscount("Buy two butters, get one bread at 50% off", 50);

            breadDiscount.AddCondition(butter.ProductId, 2);
            bread.AddDiscount(breadDiscount);

            var milkDiscount = new ProductDiscount("Buy three milks, get fourth for free", 100);

            milkDiscount.AddCondition(milk.ProductId, 3);
            milk.AddDiscount(milkDiscount);

            Products = new List <BasketItem> {
                bread, butter, milk
            };
        }
Exemplo n.º 2
0
        protected void btnOrder_Click(object sender, EventArgs e)
        {
            if (IsValid)
            {//Convert.ToInt32(lstProducts.SelectedValue), Convert.ToInt32(txtPrice.Text), 1)
                sessionCust = (Customer)Session["CustObj"];
                newProduct  = new StandardProduct(Convert.ToInt32(lstProducts.SelectedValue), Convert.ToDouble(txtPrice.Text), lstProducts.SelectedItem.Text, 1);
                ProductDiscount pd = new ProductDiscount(newProduct);
                if (sessionCust != null)
                {
                    Response.Write("Calculating Individual Product DIscount - " + pd.applyDiscount() + "/" + newProduct.Price + " Pid = " + newProduct.ProductID + "\n");
                    newOrder = new Order(
                        sessionCust.CustomerID,
                        newProduct,
                        1,
                        txtAddress.Text,
                        pd.applyDiscount() * Convert.ToInt32(txtQuantity.Text),
                        DateTime.Now);
                    newOrder.CreateOrder();

                    Response.Write("Order processed!!\n\n\n\n");
                    btnOrder.Enabled     = false;
                    btnAddOrder.Enabled  = true;
                    btnViewOrder.Enabled = true;
                    Response.Write("Calculating Customer Discount - " + newOrder.Amount +
                                   "/" + (Convert.ToDouble(txtPrice.Text) * Convert.ToInt32(txtQuantity.Text)) + "\n");
                    Session["OrderObj"] = newOrder;
                }
                else
                {
                    Response.Write("No customer is in session, please log in");
                }
            }
        }
        public void GetMatchingProductDiscountValidQuery()
        {
            IClient commerceToolsClient = this.productDiscountFixture.GetService <IClient>();

            //Create Product with product variant
            Product product = this.productDiscountFixture.CreateProductWithVariant();

            //Create Product Discount for this product
            ProductDiscount productDiscount = this.productDiscountFixture.CreateProductDiscount(product);

            this.productDiscountFixture.ProductDiscountsToDelete.Add(productDiscount);

            var masterVariant = product.MasterData.Staged.MasterVariant;

            Assert.NotEmpty(masterVariant.Prices);

            var masterVariantPrice = masterVariant.Prices[0];

            var matchingProductDiscountParams = new GetMatchingProductDiscountParameters()
            {
                Staged    = true,
                Price     = masterVariantPrice,
                ProductId = new Guid(product.Id),
                VariantId = masterVariant.Id
            };
            ProductDiscount matchingProductDiscount = commerceToolsClient
                                                      .ExecuteAsync(new GetMatchingProductDiscountCommand(matchingProductDiscountParams))
                                                      .Result;

            Assert.NotNull(matchingProductDiscount);
        }
        public ActionResult Edit(ProductDiscount productDiscount)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.ProductId = new SelectList(
                    _unitOfWork.Products.GetProductsNotDeleted(), "Id", "Name", productDiscount.ProductId);
                return(View("ProductDiscountForm", productDiscount));
            }
            var pDiscountInDb = GetProductDiscountFromDb(productDiscount.Id);

            try
            {
                _unitOfWork.ProductDiscounts.Entry(pDiscountInDb as ProductDiscount).OriginalValues["RowVersion"] =
                    productDiscount.RowVersion;

                Mapper.Map(productDiscount, pDiscountInDb);

                _unitOfWork.Complete();
                return(RedirectToAction("Index"));
            }
            catch (DbUpdateConcurrencyException exception)
            {
                CatchCuncurrencyException(exception, pDiscountInDb as ProductDiscount);
                return(Edit((pDiscountInDb as ProductDiscount)?.Id));
            }
        }
Exemplo n.º 5
0
        public void RemoveDiscount_ReturnNewPrice(ShoppingCart <ProductConditionDiscount> cart)
        {
            ProductDiscount disc1 = cart.ApplicableDiscounts[0] as ProductDiscount;

            cart.RemoveDiscount(disc1);
            Assert.Equal(4.9m, cart.TotalPrice);
        }
Exemplo n.º 6
0
        public void AddDiscount_ReturnNewPrice(ShoppingCart <ProductConditionDiscount> cart)
        {
            ProductDiscount disc2 = new ProductDiscount(1m, 1, ProductType.MILK, 1, ProductType.MILK);

            cart.AddDiscount(disc2);
            Assert.Equal(3.25m, cart.TotalPrice);
        }
        public void CategoryDiscount_ProductDiscountDisabled()
        {
            //Arrange
            Brand    brand    = new Brand(1, "b1");
            Category category = new Category(1, "c1");
            Product  p1       = new Product("p1", 800, 700, brand, category);

            Brand    brand2    = new Brand(2, "b2");
            Category category2 = new Category(2, "c2");
            Product  p2        = new Product("p2", 400, 250, brand2, category2);
            User     u         = new User("user", MemberShipTypeEnum.GOLD);

            Basket = new Basket(u, DateTime.Now);
            Basket.AddOrderProduct(new BasketProduct(p1, 1));
            Basket.AddOrderProduct(new BasketProduct(p2, 1));

            Dictionary <int, Double> categoryDiscounts = new Dictionary <int, double> {
                { 1, 0.1 }, { 3, 0.15 }
            };
            DiscountBase productDiscountStrategy    = new ProductDiscount(false);
            DiscountBase categoryDiscountStrategy   = new CategoryDiscount(categoryDiscounts, productDiscountStrategy);
            DiscountBase memberShipDiscountStrategy = new BasketDiscountGoldUser(categoryDiscountStrategy);
            double       discountedPrice            = Basket.calcDiscountedTotal(memberShipDiscountStrategy);

            //Act
            //800+400 =1200 total after product discount
            //1200 - 80 = 1120 total after category discount
            //1120 - 112 = 783 total after gold membership discount
            discountedPrice.Should().Be(1008);
        }
Exemplo n.º 8
0
    void BindProductInfo()
    {
        /////////////////////////////////
        // Change for QtyDiscount
        discount = PromotionService.SetProductPricing(product);
        ProductTopDisplay1.discount = discount;
        /////////////////////////////////

        ProductTopDisplay1.product = product;

        //set the ratings
        //this was passed in

        BundleDisplay1.product                   = product;
        ReviewDisplay1.product                   = product;
        FeedBackDisplay1.ProductID               = product.ProductID;
        FeedBackDisplay1.ProductName             = product.ProductName;
        FeedBackDisplay1.InitialRating           = Convert.ToDouble(product.Rating);
        ProductDescriptorDisplay1.DescriptorList = product.Descriptors;
        this.Title = product.ProductName;

        /////////////////////////////////
        // Change for QtyDiscount
        this.QtyDiscountDisplay();
    }
Exemplo n.º 9
0
        public OperationDetails AddDiscountToSkus(List <long> SkusIds, long discountId)
        {
            if (SkusIds == null || SkusIds.Count == 0)
            {
                return(new OperationDetails(false, "الرجاء اختيار منتجات ليتم تطبيق التخفيض عليها", ""));
            }
            foreach (var id in SkusIds)
            {
                if (IsSkuInThisDiscount(id, discountId))
                {
                    return(new OperationDetails(false, "أحد المنتجات المختارة موجود مسبقاً ضمن التخفيض لذلك لم تتم إضافته مرة أخرى", ""));
                }

                if (IsSKuInDiscount(id))
                {
                    return(new OperationDetails(false, "أحد المنتجات موجود ضمن تخفيض جاري،يرجى إالغاء التخفيض الجاري عن المنتج أو إالغاء المنتج من التخخفيض الجديد", ""));
                }

                ProductDiscount productDiscount = new ProductDiscount();
                long            prodictId       = _uitOfWork.ProductSKURepository.Get(c => c.SKUId == id).Select(g => g.ProductId).FirstOrDefault();
                productDiscount.ProductId    = prodictId;
                productDiscount.SKUId        = id;
                productDiscount.DiscountId   = discountId;
                productDiscount.DateAdded    = DateTime.Now;
                productDiscount.DateModefied = DateTime.Now;
                _uitOfWork.ProductDiscountRepository.Insert(productDiscount);
                _uitOfWork.Save();
            }

            return(new OperationDetails(true, "تمت عملية الإضافة بنجاح", ""));
        }
        public override DiscountBase GetDiscountStrategy(Basket basket, DiscountBase parentDiscountStrategy = null)
        {
            DiscountBase bestStrategy = null;
            double       bestPrice    = 0;
            //Product Discount + MembershipDiscount
            DiscountBase productDiscount = new ProductDiscount(true);
            DiscountBase membershipAndProductDiscount = BasketDiscountOverMemberShipFactory.Instance.GetDiscountStrategy(basket, productDiscount);

            bestStrategy = membershipAndProductDiscount;
            bestPrice    = membershipAndProductDiscount.GetDiscountedTotal(basket);

            //Basket Discount + MembershipDiscount
            DiscountBase basketDiscount = BasketDiscountOverTotalFactory.Instance.GetDiscountStrategy(basket, null);
            DiscountBase memberShipAndBasketDiscount = BasketDiscountOverMemberShipFactory.Instance.GetDiscountStrategy(basket, basketDiscount);

            (bestPrice, bestStrategy) = GetBetterStrategy(bestPrice, bestStrategy, basket, memberShipAndBasketDiscount);
            //Product Discount + CategoryDiscount + MembershipDiscount
            DiscountBase categoryAndProductDiscount          = CategoryDiscountFactory.Instance.GetDiscountStrategy(basket, productDiscount);
            DiscountBase membershipCategoryAndProdutDiscount = BasketDiscountOverMemberShipFactory.Instance.GetDiscountStrategy(basket, categoryAndProductDiscount);

            (bestPrice, bestStrategy) = GetBetterStrategy(bestPrice, bestStrategy, basket, membershipCategoryAndProdutDiscount);
            //Special Offer Basket Discount (like BlackFriday)

            DiscountBase blackFridayDiscountStrategy = BlackFridayDiscountFactory.Instance.GetDiscountStrategy(basket, null);

            (bestPrice, bestStrategy) = GetBetterStrategy(bestPrice, bestStrategy, basket, blackFridayDiscountStrategy);
            return(bestStrategy);
        }
Exemplo n.º 11
0
        public async Task <IActionResult> Discount(string page, ProductDiscount productDiscount)
        {
            ViewBag.Product = await _productService.FindProductByIdAsync(productDiscount.ProductId);

            try
            {
                if (ModelState.IsValid) // && await _context.ProductDiscount.FirstOrDefaultAsync(pd => pd.ProductId == productDiscount.ProductId) == null) //if there is no discount for this product
                {
                    await _productService.CreateDiscount(productDiscount);

                    if (page == "Index")
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        return(RedirectToAction("ProductPage", "Home", new { id = productDiscount.ProductId }));
                    }
                }
            }
            catch (DbUpdateException)
            {
                ModelState.AddModelError(string.Empty, "This product already has a discount.");
            }
            return(View());
        }
        public async Task <AddProductToPercentDiscountCommandResponse> Handle(AddProductToPercentDiscountCommand command)
        {
            var product = await _productRepository.AsQuery()
                          .SingleOrDefaultAsync(p => p.Id == command.ProductId);

            if (product == null)
            {
                throw new DomainException("محصولی یافت نشد");
            }
            var discount = await _percentRepository.AsQuery()
                           .SingleOrDefaultAsync(p => p.Id == command.PercentDiscount);

            if (discount == null)
            {
                throw new DomainException("تخفیف یافت نشد");
            }
            if (discount.ProductDiscounts.Count >= discount.MaxProductCount)
            {
                throw new DomainException("حداکثر تعداد محصول در این تخفیف تکمیل شده است");
            }
            if (discount.ProductDiscounts.Any(p => p.Product.Id == command.ProductId))
            {
                throw new DomainException("این محصول در این تخفیف موجود می باشد");
            }
            var userInfo = new UserInfo(command.UserInfoCommand.UserId, command.UserInfoCommand.FirstName,
                                        command.UserInfoCommand.LastName);
            var productPercentDiscounts = new ProductDiscount(Guid.NewGuid(), product, userInfo);

            DomainEventDispatcher.Raise(new CreatePercentDiscountEvent(discount.Id, command.ProductId, discount.Title,
                                                                       userInfo, discount.FromDate, discount.ToDate,
                                                                       discount.Percent, discount.FromTime, discount.ToTime, DiscountType.PercentDiscount));
            discount.ProductDiscounts.Add(productPercentDiscounts);
            return(new AddProductToPercentDiscountCommandResponse());
        }
        public void UpdateProductDiscountByIdChangePredicate()
        {
            IClient         commerceToolsClient = this.productDiscountFixture.GetService <IClient>();
            ProductDiscount productDiscount     = this.productDiscountFixture.CreateProductDiscount();

            Product product = this.productDiscountFixture.CreateProductWithVariant();

            //creating new predicate based on product "product.id = "ae3630c9-365a-4abe-a9b3-c14bb8b9ce95" "
            string predicate = this.productDiscountFixture.GetProductDiscountPredicateBasedonProduct(product.Id);

            List <UpdateAction <ProductDiscount> > updateActions = new List <UpdateAction <ProductDiscount> >();
            ChangePredicateUpdateAction            changePredicateUpdateAction = new ChangePredicateUpdateAction()
            {
                Predicate = predicate
            };

            updateActions.Add(changePredicateUpdateAction);

            ProductDiscount retrievedProductDiscount = commerceToolsClient
                                                       .ExecuteAsync(new UpdateByIdCommand <ProductDiscount>(new Guid(productDiscount.Id), productDiscount.Version, updateActions))
                                                       .Result;

            this.productDiscountFixture.ProductDiscountsToDelete.Add(retrievedProductDiscount);
            Assert.NotEqual(productDiscount.Predicate, retrievedProductDiscount.Predicate);
        }
Exemplo n.º 14
0
        public void Execute()
        {
            _state = _cart.CurrentState.Clone();

            var discount = new ProductDiscount(_product, _percentValue);

            _cart.AddDiscount(discount, _product);
        }
        public ProductDiscount CreateProductDiscount(ProductDiscountDraft productDiscountDraft)
        {
            IClient         commerceToolsClient = this.GetService <IClient>();
            ProductDiscount productDiscount     = commerceToolsClient
                                                  .ExecuteAsync(new CreateCommand <ProductDiscount>(productDiscountDraft)).Result;

            return(productDiscount);
        }
Exemplo n.º 16
0
        public async Task <ProductDiscount> GetDiscountByProductId(int productId)
        {
            ProductDiscount discount = await(from pd in _context.ProductDiscount
                                             where pd.ProductId == productId
                                             select pd).FirstOrDefaultAsync();

            return(discount);
        }
Exemplo n.º 17
0
        public void CalculateDiscount()
        {
            var percent = 50;
            var c1      = new Car(1, "", "", 100.0);
            var cd      = new ProductDiscount(c1, percent);

            Assert.Equal(percent, cd.PercentValue);
            Assert.Equal(50.0, cd.Make());
        }
Exemplo n.º 18
0
        private void discountDeleteButton_Click(object sender, EventArgs e)
        {
            int count = 0;

            for (int i = discountProductDataGridView.Rows.Count - 1; i >= 0; i--)
            {
                bool select = (bool)discountProductDataGridView.Rows[i].Cells["selectedDiscountProduct"].Value;
                if (select == true)
                {
                    ProductDiscount pd = new ProductDiscount();
                    pd.setDiscountCode(selectedDiscountCode);
                    pd.setProductID(discountProductDataGridView.Rows[i].Cells["discountProductIdColumn"].Value.ToString());

                    if (productCategoriesComboBox.SelectedValue.Equals("bottle"))
                    {
                        pbdda.permanentlyDelete(pd, conn);
                    }
                    else if (productCategoriesComboBox.SelectedValue.Equals("package"))
                    {
                        ppgdda.permanentlyDelete(pd, conn);
                    }
                    else if (productCategoriesComboBox.SelectedValue.Equals("perfume"))
                    {
                        ppdda.permanentlyDelete(pd, conn);
                    }

                    discountProductDataGridView.Rows.Remove(discountProductDataGridView.Rows[i]);
                    count++;
                }
            }

            if (count == 0)
            {
                MessageBox.Show(rs.GetString("selectProductMsg"), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (discountProductDataGridView.Rows.Count > 0)
                {
                    discountSelectAllButton.Enabled   = true;
                    discountDeselectAllButton.Enabled = true;
                    discountDeleteButton.Enabled      = true;
                }
                else
                {
                    discountSelectAllButton.Enabled   = false;
                    discountDeselectAllButton.Enabled = false;
                    discountDeleteButton.Enabled      = false;
                }

                discountProductDataGridView.ClearSelection();

                productCategoriesComboBox_SelectedIndexChanged(null, null);
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// 根据复杂折扣方案更新商品档案和库存价格
        /// </summary>
        /// <param name="discount"></param>
        private OperationResult UpdatePriceOfMulti(ProductDiscount discount)
        {
            #region
            OperationResult resul     = new OperationResult(OperationResultType.Error);
            var             _brandIds = discount.Brands.Select(c => JToken.Parse(c.Id.ToString())).ToArray();

            JArray brandIds = new JArray(_brandIds);

            FilterGroup fg = new FilterGroup(FilterOperate.And);

            if (brandIds.Any())
            {
                fg.Rules.Add(new FilterRule("BrandId", brandIds, FilterOperate.In));
            }

            #endregion

            var exp      = FilterHelper.GetExpression <Product>(fg);
            var products = _productContract.Products.Where(exp);

            products.Each(c => {
                c.ProductOriginNumber.PurchasePrice  = c.ProductOriginNumber.TagPrice;
                c.ProductOriginNumber.WholesalePrice = c.ProductOriginNumber.TagPrice;
                c.ProductOperationLogs.Add(new ProductOperationLog()
                {
                    Description = "根据折扣方案调整商品价格,折扣方案ID:" + discount.Id,
                    OperatorId  = AuthorityHelper.OperatorId,
                });
            });
            var productids = products.Select(c => c.Id).ToList();
            //在更新商品价格时,已销售的商品部更新
            var invents =
                _invenrtoryContract.Inventorys.Where(
                    c =>
                    productids.Contains(c.ProductId) && c.IsEnabled && !c.IsDeleted &&
                    c.Status == (int)InventoryStatus.Default);

            //invents.Each(c => {
            //    c.WholesalePrice = c.WholesalePrice * discount.WholesaleDiscount / 10;
            //    c.PurchasePrice = c.PurchasePrice * discount.PurchaseDiscount / 10;
            //});
            var invetdtos = AutoMapper.Mapper.Map <InventoryDto[]>(invents.ToArray());

            try
            {
                _invenrtoryContract.Update(invetdtos, true);
                resul = _productContract.Update(products.ToArray(), false);
            }
            catch (Exception ex)
            {
                throw;
            }
            return(resul);
        }
        public ActionResult Create()
        {
            ViewBag.ProductId = new SelectList(
                _unitOfWork.Products.GetProductsNotDeleted(), "Id", "Name");
            var productDiscount = new ProductDiscount
            {
                Heading = "Create Discount On Product"
            };

            return(View("ProductDiscountForm", productDiscount));
        }
        public void GetProductDiscountById()
        {
            IClient         commerceToolsClient = this.productDiscountFixture.GetService <IClient>();
            ProductDiscount productDiscount     = this.productDiscountFixture.CreateProductDiscount();

            this.productDiscountFixture.ProductDiscountsToDelete.Add(productDiscount);
            ProductDiscount retrievedProductDiscount = commerceToolsClient
                                                       .ExecuteAsync(new GetByIdCommand <ProductDiscount>(new Guid(productDiscount.Id))).Result;

            Assert.Equal(productDiscount.Id, retrievedProductDiscount.Id);
        }
        public ActionResult Delete(int id, FormCollection collection)
        {
            if (id != 0)
            {
                ProductDiscount productDiscount = _entities.ProductDiscounts.SingleOrDefault(a => a.ID == id);

                _entities.DeleteObject(productDiscount);
                _entities.SaveChanges();
            }

            return(View("Deleted"));
        }
Exemplo n.º 23
0
        public void AddProductDiscountTest()
        {
            var cart     = new Cart();
            var product  = TestProducts.Cars.First();
            var discount = new ProductDiscount(product, 10);

            cart.AddDiscount(discount, product);

            Assert.Equal(1, cart.CurrentState.ProductDiscounts.Count);
            Assert.True(cart.CurrentState.ProductDiscounts.ContainsKey(product));
            Assert.Equal(discount, cart.CurrentState.ProductDiscounts[product]);
        }
 public ActionResult Create(FormCollection collection, ProductDiscount productDiscount)
 {
     try
     {
         _entities.AddToProductDiscounts(productDiscount);
         _entities.SaveChanges();
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
Exemplo n.º 25
0
        public int permanentlyDelete(ProductDiscount pd, MySqlConnection conn)
        {
            conn.Open();
            MySqlCommand cmd = new MySqlCommand("DELETE FROM `product_package_discount` WHERE `Product_ID` = @productID AND `Discount_Code`=@dicountCode", conn);

            cmd.Parameters.AddWithValue("@productID", pd.getProductID());
            cmd.Parameters.AddWithValue("@dicountCode", pd.getDiscountCode());
            cmd.Prepare();
            int i = cmd.ExecuteNonQuery();

            conn.Close();
            return(i);
        }
Exemplo n.º 26
0
        public int insert(ProductDiscount pd, MySqlConnection conn)
        {
            conn.Open();
            MySqlCommand cmd = new MySqlCommand("INSERT INTO `product_package_discount`(`Product_ID`, `Discount_Code`) VALUES (@productID,@dicountCode)", conn);

            cmd.Parameters.AddWithValue("@productID", pd.getProductID());
            cmd.Parameters.AddWithValue("@dicountCode", pd.getDiscountCode());
            cmd.Prepare();
            int i = cmd.ExecuteNonQuery();

            conn.Close();
            return(i);
        }
        public void DeleteProductDiscountById()
        {
            IClient         commerceToolsClient      = this.productDiscountFixture.GetService <IClient>();
            ProductDiscount productDiscount          = this.productDiscountFixture.CreateProductDiscount();
            ProductDiscount retrievedProductDiscount = commerceToolsClient
                                                       .ExecuteAsync(
                new DeleteByIdCommand <ProductDiscount>(new Guid(productDiscount.Id), productDiscount.Version))
                                                       .Result;

            Assert.ThrowsAsync <HttpApiClientException>(() =>
                                                        commerceToolsClient.ExecuteAsync(
                                                            new GetByIdCommand <ProductDiscount>(new Guid(retrievedProductDiscount.Id))));
        }
Exemplo n.º 28
0
 private void AddDiscountTable(TempProduct tempProduct, Product product)
 {
     // add discount table
     if (_entities.TempProductDiscounts.Any(a => a.ProductID == tempProduct.ID))
     {
         TempProductDiscount tempProductDiscount = _entities.TempProductDiscounts.FirstOrDefault(a => a.ID == tempProduct.ID);
         ProductDiscount     productDiscount     = new ProductDiscount();
         productDiscount.DateFrom = tempProductDiscount.DateFrom;
         productDiscount.DateTo   = tempProductDiscount.DateTo;
         productDiscount.Discount = tempProductDiscount.Discount;
         product.ProductDiscounts.Add(productDiscount);
     }
 }
Exemplo n.º 29
0
        public async Task <IActionResult> ProductPage(int id)
        {
            //Product temp = await _context.Product.FirstOrDefaultAsync(p => p.Id == id);
            Product temp = await _productService.FindProductByIdAsync(id);

            List <Product> products = new List <Product>();

            products.Add(temp);
            ViewBag.Product = temp;

            String[] primaryImage = await _productService.GetAllImages(products, true);

            ViewData["primary_image"] = primaryImage[0];

            String[] secondaryImages = await _productService.GetAllImages(products, false);

            //List<ProductImage> secondaryImages = _context.ProductImage.Where(pi => !pi.IsPrimary && pi.Product.Id == temp.Id).ToList();
            ViewBag.SecondaryImages = secondaryImages;


            ProductDiscount discount = await _productService.GetDiscountByProductId(id);

            if (discount != null)
            {
                if (discount.Ends > DateTime.Now)
                {
                    ViewBag.Discount = discount;
                }
                else
                {
                    await _productService.DeleteDiscount(discount);
                }
            }

            ICollection <AttributeValue> attributes = await _attributeService.GetProductAttributeValues(id);

            ICollection <Models.Attribute> attributeCategories = new List <Models.Attribute>();

            foreach (AttributeValue attr in attributes)
            {
                Models.Attribute attrCategory = _attributeService.FindAttributeById(attr.AttributeId);
                if (!attributeCategories.Contains(attrCategory))
                {
                    attributeCategories.Add(attrCategory);
                }
            }
            ViewBag.Attributes          = attributes;
            ViewBag.AttributeCategories = attributeCategories;

            return(View(await _productService.GetAllPropertiesByProductIdAsync(id)));
        }
Exemplo n.º 30
0
    protected decimal GetDiscountedPrice()
    {
        decimal dOut = OurPrice;

        //get the adjusted price from the Promo service
        ProductDiscount discount = PromotionService.GetProductDiscount(int.Parse(ProductID));

        if (discount != null)
        {
            dOut = discount.DiscountedPrice;
        }

        return(dOut);
    }
Exemplo n.º 31
0
        protected void btnAddProduct_Click(object sender, EventArgs e)
        {
            //Customer cust = (Customer) Session["CustomerOBJ"];
            if (newOrder != null)
            {
                newProduct = new StandardProduct(Convert.ToInt32(lstProducts.SelectedValue), Convert.ToDouble(txtPrice.Text), lstProducts.SelectedItem.Text, 1);
                ProductDiscount pd = new ProductDiscount(newProduct);
                Response.Write("Calculating Individual Product DIscount - " + pd.applyDiscount() + "/" + newProduct.Price + " Pid = " + newProduct.ProductID + "\n");

                newOrder.AddProduct(
                    newProduct.ProductID,
                    pd.applyDiscount() * Convert.ToInt32(txtQuantity.Text));
                Response.Write("Product processed!!\n \n ");
                Response.Write("Calculating Customer Discount - " + newOrder.Amount +
                    "/" + (Convert.ToDouble(txtPrice.Text) * Convert.ToInt32(txtQuantity.Text)) + "\n");
            }
            else
                Response.Write("new order is null????");
        }
Exemplo n.º 32
0
        protected void btnOrder_Click(object sender, EventArgs e)
        {
            if (IsValid)
            {//Convert.ToInt32(lstProducts.SelectedValue), Convert.ToInt32(txtPrice.Text), 1)
                sessionCust = (Customer)Session["CustObj"];
                newProduct = new StandardProduct(Convert.ToInt32(lstProducts.SelectedValue), Convert.ToDouble(txtPrice.Text), lstProducts.SelectedItem.Text, 1);
                ProductDiscount pd = new ProductDiscount(newProduct);
                if (sessionCust != null)
                {
                    Response.Write("Calculating Individual Product DIscount - " + pd.applyDiscount() + "/" + newProduct.Price + " Pid = " + newProduct.ProductID + "\n");
                    newOrder = new Order(
                    sessionCust.CustomerID,
                    newProduct,
                    1,
                    txtAddress.Text,
                    pd.applyDiscount() * Convert.ToInt32(txtQuantity.Text),
                    DateTime.Now);
                    newOrder.CreateOrder();

                    Response.Write("Order processed!!\n\n\n\n");
                    btnOrder.Enabled = false;
                    btnAddOrder.Enabled = true;
                    btnViewOrder.Enabled = true;
                    Response.Write("Calculating Customer Discount - " + newOrder.Amount +
                        "/" + (Convert.ToDouble(txtPrice.Text) * Convert.ToInt32(txtQuantity.Text)) + "\n");
                    Session["OrderObj"] = newOrder;
                }
                else
                    Response.Write("No customer is in session, please log in");

            }
        }