コード例 #1
0
ファイル: CurrentDiscounts.cs プロジェクト: artigat1/Basket
        /// <summary>
        /// Initializes a new instance of the <see cref="CurrentDiscounts"/> class.
        /// </summary>
        /// <param name="basket">The <see cref="BasketModel"/>.</param>
        public CurrentDiscounts(BasketModel basket)
        {
            if (basket == null)
                throw new ArgumentNullException(nameof(basket));

            _basket = basket;
        }
コード例 #2
0
ファイル: Basket.cs プロジェクト: artigat1/Basket
        /// <summary>
        /// Adds the <paramref name="items" /> to the basket.
        /// </summary>
        /// <param name="items">
        /// An <see cref="IEnumerable{TEntity}" /> of <see cref="BasketItemModel" /> entities to add to the basket.
        /// </param>
        /// <returns>The updated <see cref="BasketModel" /></returns>
        public BasketModel AddBasketItems(IEnumerable<BasketItemModel> items)
        {
            if (items == null)
                throw new ArgumentNullException(nameof(items));

            foreach (var item in items)
            {
                AddBasketItem(item);
            }

            _basket = _currentDiscounts.Run();

            return _basket;
        }
コード例 #3
0
ファイル: BasketController.cs プロジェクト: itodorov/wwwtech
        public ActionResult RemoveFromCart(int id, int quantity, int size)
        {
            if (!(Session["Basket"] is BasketModel))
            {
                Session["Basket"] = new BasketModel();
            }

            ProductModel product = new ProductModel(DataHelper.GetProduct(id));
            BasketModel model = ((BasketModel)Session["Basket"]);
            BasketItem item = model.Where(x => x.Product.ID == id && x.Quantity == quantity && x.Size == size).FirstOrDefault();
            if (item != null)
            {
                model.Remove(item);
            }

            return RedirectToAction("Index");
        }
コード例 #4
0
        public IActionResult Index()
        {
            List <BasketItemModel> basketItems = new List <BasketItemModel>();
            ShoppingCartSummary    cartSummary = GetCartSummary();
            BasketModel            model;

            BaseModelData modelData = GetModelData();

            if (cartSummary.Id != 0)
            {
                ShoppingCartDetail cartDetails = _shoppingCartProvider.GetDetail(cartSummary.Id);
                _stockProvider.GetStockAvailability(cartDetails.Items);

                foreach (ShoppingCartItem item in cartDetails.Items)
                {
                    basketItems.Add(new BasketItemModel(GetModelData(),
                                                        item.Id, item.Name, item.Description,
                                                        item.Size, item.SKU, item.ItemCost, (int)item.ItemCount,
                                                        item.StockAvailability > 500 ? "> 500" : item.StockAvailability.ToString(),
                                                        item.ItemCount * item.ItemCost, false, item.Images[0]));
                }

                if (TempData.ContainsKey("VoucherError"))
                {
                    ModelState.AddModelError(nameof(VoucherModel.Voucher), Languages.LanguageStrings.VoucherInvalid);
                    TempData.Remove("VoucherError");
                }

                modelData.ReplaceCartSummary(cartSummary);
                model = new BasketModel(modelData, basketItems,
                                        cartDetails.CouponCode, cartDetails.RequiresShipping,
                                        !String.IsNullOrEmpty(GetUserSession().UserEmail));
            }
            else
            {
                modelData.ReplaceCartSummary(cartSummary);
                model = new BasketModel(modelData, new List <BasketItemModel>(),
                                        String.Empty, false, GetUserSession().UserID != 0);
            }

            return(View(model));
        }
コード例 #5
0
        public async Task <IActionResult> AddToBasket(int id)
        {
            var logEntity = new BasEntity();
            List <BasketModel> perfumes = HttpContext.Session.GetObject <List <BasketModel> >("basket");
            var userName     = HttpContext.Session.GetString("userName");
            var perfumeToAdd = await _perfumeApiService.GetAsync(id);

            if (perfumes == null)
            {
                perfumes = new List <BasketModel>();
            }

            var result = (from item in perfumes
                          where item.PerfumeId == perfumeToAdd.PerfumeId
                          select item).FirstOrDefault();

            if (result == null)
            {
                BasketModel model = new BasketModel
                {
                    PerfumeId   = perfumeToAdd.PerfumeId,
                    PerfumeName = perfumeToAdd.PerfumeName,
                    Price       = perfumeToAdd.Price,
                    Count       = 1
                };
                perfumes.Add(model);
                logEntity.PerfumeName  = model.PerfumeName;
                logEntity.PerfumeCount = model.Count;
            }
            else
            {
                result.Count++;
                logEntity.PerfumeName  = result.PerfumeName;
                logEntity.PerfumeCount = result.Count;
            }

            AddToCartPrintLogMessage(logEntity.PerfumeName, logEntity.PerfumeCount, userName);

            HttpContext.Session.SetObject("basket", perfumes);

            return(RedirectToAction("GetAll", "Perfume"));
        }
コード例 #6
0
        public async Task ApplyDiscount_ReturnOk()
        {
            //Arrange
            List <BasketProductModel> expectedProducts = new List <BasketProductModel> {
                new BasketProductModel()
                {
                    ProductName         = "Milk",
                    ProductPrice        = 1.15,
                    Quantity            = 2,
                    Total               = 2.30,
                    OfferForThisProduct = new OfferModel
                    {
                        IsFree           = true,
                        OfferName        = "Milk",
                        OfferTriggerFrom = "Milk"
                    }
                }
            };

            BasketModel basketModel = new BasketModel {
                Products = expectedProducts
            };
            var milk = new BasketProductModel()
            {
                ProductName         = "Milk",
                ProductPrice        = 1.15,
                Quantity            = 1,
                OfferForThisProduct = new OfferModel
                {
                    IsFree           = true,
                    OfferName        = "Milk",
                    OfferTriggerFrom = "Milk"
                }
            };

            //Act
            var resultBasket = await subject.ApplyDiscount(basketModel, milk);

            //Assert
            Assert.AreEqual(expectedProducts[0].Total, resultBasket.Products[0].Total);
            Assert.AreEqual(expectedProducts[0].Quantity, resultBasket.Products[0].Quantity);
        }
コード例 #7
0
        public async Task <bool> UpdateAsync(BasketModel basket)
        {
            Guid.TryParse(basket.UserId, out Guid userId);
            var item = _applicationDbContext.Basket.SingleOrDefault(b => b.UserId == userId);

            if (item != null)
            {
                var updatedBasket = _mapper.Map <Basket>(basket);
                _applicationDbContext.Update(updatedBasket);
            }
            else
            {
                var newBasket = _mapper.Map <Basket>(basket);
                _applicationDbContext.Basket.Add(newBasket);
            }

            var result = await _applicationDbContext.SaveChangesAsync();

            return(result != 0);
        }
コード例 #8
0
        public void CalculateBasket_ShouldReturnInCorrectBasketTotal_WhenCalculationCompleted()
        {
            var basketId  = Guid.NewGuid();
            var basketDto = new BasketModel
            {
                Id            = basketId,
                SubTotal      = Convert.ToDecimal(440),
                CouponTotal   = Convert.ToDecimal(55),
                DeliveryPrice = Convert.ToDecimal(11.1),
                DiscountTotal = Convert.ToDecimal(20.3)
            };

            BasketOperations.BasketList.Add(basketDto);

            //Act
            var result = _basketOperations.CalculateBasket(basketId);

            //Assert
            Assert.NotEqual(result.BasketTotal, Convert.ToDecimal(275.8));
        }
コード例 #9
0
        /// <summary>
        /// Takes the user input basket and adds the item to the GroceryKiosk BasketModel.
        /// </summary>
        /// <param name="userBasket"></param>
        /// <param name="kioskItems"></param>
        /// <returns></returns>
        public static BasketModel GetItemAndAddOrUpdateBasket(string[] userBasket, List <ItemModel> kioskItems)
        {
            BasketModel basket = new BasketModel();

            foreach (var itemName in userBasket)
            {
                ItemModel item =
                    kioskItems.FirstOrDefault(
                        x => string.Equals(x.ItemName, itemName, StringComparison.CurrentCultureIgnoreCase));
                if (item == null)
                {
                    continue;
                }

                BasketItemModel basketItem = new BasketItemModel(item);
                basket.AddOrUpdateBasket(basketItem);
            }

            return(basket);
        }
コード例 #10
0
        public async void PostReturnsCreatedAtResult()
        {
            var basket = new BasketModel {
                Id = Guid.NewGuid(), UserId = Guid.NewGuid()
            };

            manager.Setup(x => x.Create(basket.UserId)).Returns(Task.FromResult(basket));

            var result = await controller.Post(basket);

            var createdAtResult = Assert.IsType <CreatedAtActionResult>(result.Result);

            Assert.Equal(nameof(BasketController.Get), createdAtResult.ActionName);
            Assert.True(createdAtResult.RouteValues.TryGetValue("id", out Object basketId));
            Assert.Equal(basket.Id, basketId);

            var basketResult = Assert.IsType <BasketModel>(createdAtResult.Value);

            Assert.Equal(basket.Id, basketResult.Id);
            Assert.Equal(basket.UserId, basketResult.UserId);
        }
コード例 #11
0
        /// <summary>
        /// Vloží existující zboží do košíku
        /// </summary>
        /// <param name="product">Parametry vkládaného zboží</param>
        public void AddProduct(BasketModel product)
        {
            //!!! Kontrola vyjímek zde (chyba serveru) !!!

            // Vložení nového itemu do košíku
            using (SqlConnection pripojeni = new SqlConnection(connectionString)) // Deklarace pripojení
            {
                // Dotaz se selectem
                SqlCommand insert = new SqlCommand("mp_pridej_produkt @Kosik_id, @Product, @Pocet_ks ", pripojeni);
                insert.Parameters.AddWithValue("@Kosik_id", 1);
                insert.Parameters.AddWithValue("@Product", product.Produkt);
                insert.Parameters.AddWithValue("@Pocet_ks", product.Ks);
                //insert.Parameters.Add("@newID", SqlDbType.Int, 0).Direction = ParameterDirection.Output; // Pro výstupní parametr procedury

                // Otevření spojení
                pripojeni.Open();

                // Provedení příkazu
                insert.ExecuteNonQuery();
            }
        }
コード例 #12
0
        public ActionResult AddGameToBasket(string key, int quantity = 1)
        {
            GameModel   gameModel   = _gameService.GetGameModelByKey(key);
            string      sessionKey  = Session.SessionID;
            BasketModel basketModel = _basketService.GetBasketModelForUser(sessionKey);

            var basketItemModel = new BasketItemModel
            {
                BasketId = basketModel.BasketId,
                Quantity = quantity,
                Price    = gameModel.Price,
                Discount = 0,
                GameId   = gameModel.GameId,
                Game     = Mapper.Map <GameModel>(gameModel)
            };

            _basketService.AddBasketItem(basketItemModel);

            MessageSuccess("The game has been added to your basket.");
            return(RedirectToAction("Get", "Basket"));
        }
コード例 #13
0
        private BasketModel BuildBasket(int milkQty, int breadQty, int butterQty)
        {
            //Butter £0.80
            //Milk £1.15
            //Bread £1.00

            var basket = new BasketModel();

            if (milkQty > 0)
            {
                basket.Items.Add(new BasketItemModel
                {
                    ItemId    = Item.MilkId,
                    Quantity  = milkQty,
                    UnitPrice = Item.MilkPrice
                });
            }

            if (breadQty > 0)
            {
                basket.Items.Add(new BasketItemModel
                {
                    ItemId    = Item.BreadId,
                    Quantity  = breadQty,
                    UnitPrice = Item.BreadPrice
                });
            }

            if (butterQty > 0)
            {
                basket.Items.Add(new BasketItemModel
                {
                    ItemId    = Item.ButterId,
                    Quantity  = butterQty,
                    UnitPrice = Item.ButterPrice
                });
            }

            return(basket);
        }
コード例 #14
0
        public void CalculateTotalDeliveryPrice_ShouldReturnInCorrectValue_WhenCalculationCompleted()
        {
            //Arrange
            var categoryId    = Guid.NewGuid();
            var categoryTitle = "Technology";
            var categoryDto   = new CategoryModel
            {
                Id    = categoryId,
                Title = categoryTitle
            };

            Dictionary <ProductModel, int> productDictionary = new Dictionary <ProductModel, int>();
            var productId     = Guid.NewGuid();
            var productTitle  = "Mobile Phone";
            var productAmount = 1;
            var productDto    = new ProductModel
            {
                Id       = productId,
                Title    = productTitle,
                Category = categoryDto,
                Price    = 4900
            };

            productDictionary.Add(productDto, productAmount);

            var basketId  = Guid.NewGuid();
            var basketDto = new BasketModel
            {
                Id       = basketId,
                Products = productDictionary
            };

            BasketOperations.BasketList.Add(basketDto);

            //Act
            var result = _basketOperations.CalculateTotalDeliveryPrice(basketDto);

            //Assert
            Assert.NotEqual(result, Decimal.One);
        }
コード例 #15
0
        public BasketSummaryViewModel GetBasketSummary(HttpContextBase httpContext)
        {
            BasketModel            basket = GetBasket(httpContext, false);
            BasketSummaryViewModel model  = new BasketSummaryViewModel(0, 0);

            if (basket != null)
            {
                int?basketCount = (from item in basket.BasketItems
                                   select item.Quantity
                                   ).Sum();

                decimal?basketTotal = (from item in basket.BasketItems
                                       join p in productContext.Collection() on item.ProductId equals p.Id
                                       select item.Quantity *p.Price
                                       ).Sum();

                model.BasketCount = basketCount ?? 0;
                model.BasketTotal = basketTotal ?? decimal.Zero;
            }

            return(model);
        }
コード例 #16
0
        public async Task <BasketModel> GetBasketItems(Microsoft.AspNetCore.Http.HttpRequest httpRequest)
        {
            BasketModel basket = new BasketModel();

            try
            {
                string cookie;
                if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
                {
                    if (cookie != null)
                    {
                        var basketInfo = Barayand.Common.Services.CryptoJsService.DecryptStringAES(cookie);
                        basket = JsonConvert.DeserializeObject <BasketModel>(basketInfo);
                    }
                }
                return(basket);
            }
            catch (Exception ex)
            {
                return(basket);
            }
        }
コード例 #17
0
        public void TestApplyingOnePromotionToBasketWithTwoDifferentItems()
        {
            List <PromotionModel> promotions = new List <PromotionModel> {
                _appleDiscount
            };
            BasketItemModel appleBasketItem  = new BasketItemModel(_apple);
            BasketItemModel orangeBasketItem = new BasketItemModel(_orange);
            BasketModel     basket           = new BasketModel();

            basket.AddOrUpdateBasket(appleBasketItem);
            basket.AddOrUpdateBasket(orangeBasketItem);
            IPromotionService promotionService = new PromotionService();

            promotionService.ApplyPromotionsToBasket(basket, promotions);
            Assert.AreEqual(2, basket.Basket.Count);
            Assert.AreEqual(3, basket.Total);
            Assert.IsTrue(basket.Basket[0].Discount != null);
            Assert.AreEqual("Apple", basket.Basket[0].ItemName);
            Assert.IsTrue(basket.Basket[1].Discount == null);
            Assert.AreEqual("Orange", basket.Basket[1].ItemName);
            Assert.AreEqual(0.5M, basket.Basket[0].Discount.TotalDiscountAmount);
        }
コード例 #18
0
        public IHttpActionResult AddItem([FromBody] AddItemModel model)
        {
            var basketId = model.BasketId;

            if (model.BasketId == Guid.Empty)
            {
                basketId = Guid.NewGuid();
                _commandDispatcher.ExecuteCommand <BasketAggregate>(new CreateBasket(basketId));
            }

            // TODO: get model price and name from api by id
            var cmd = new AddItemToBasket(
                basketId,
                model.ProductId,
                model.Name,
                model.Price,
                model.Quantity);

            var basket = _commandDispatcher.ExecuteCommand <BasketAggregate>(cmd);

            return(Ok(BasketModel.FromAggregate(basket)));
        }
コード例 #19
0
        public void AddNewItemExists()
        {
            BasketService   basketService   = new BasketService();
            BasketModel     basketModel     = basketService.CreateNewBasket("C123");
            BasketItemModel basketItemModel = new BasketItemModel();

            basketItemModel.Id        = "111";
            basketItemModel.Name      = "Car";
            basketItemModel.Quantity  = 1;
            basketItemModel.UnitPrice = (float)5.50;
            bool isAdded = basketService.AddBasketItem("C123", basketModel.Id, basketItemModel);

            basketItemModel           = new BasketItemModel();
            basketItemModel.Id        = "111";
            basketItemModel.Name      = "Car";
            basketItemModel.Quantity  = 1;
            basketItemModel.UnitPrice = (float)5.50;
            bool isAddedAgain = basketService.AddBasketItem("C123", basketModel.Id, basketItemModel);

            //If item already exists, check the API does not add the item again as its quantity must be updated
            Assert.False(isAddedAgain);
        }
コード例 #20
0
        public JsonResult CreateProductBasket(int id, int adet)
        {
            Product      prod         = productRepo.SelectById(id);
            ProductImage productImage = productImageRepo.FirstByProductId(id);
            BasketModel  urun         = new BasketModel();

            urun.ProductName      = prod.ProductName;
            urun.Piece            = adet;
            urun.Price            = prod.ProductPrice;
            urun.ShortDescription = prod.ProductShortDescription;
            urun.CargoPrice       = prod.CargoPrice;
            urun.PhotoPath        = productImage.Path;
            urun.ProductId        = id;

            if (Session["sepet"] == null)
            {
                BasketRepository sepetim = new BasketRepository();
                sepetim.Ekle(urun);
                Session["sepet"] = sepetim;
            }
            else
            {
                if (SepetteVarmi(urun.ProductId) == 1)
                {
                    int idd = urun.ProductId;
                    BasketRepository sepetim = (BasketRepository)Session["sepet"];
                    sepetim.urunler[idd].Piece += urun.Piece;
                    Session["sepet"]            = sepetim;
                }
                else
                {
                    BasketRepository sepetim = (BasketRepository)Session["sepet"];
                    sepetim.Ekle(urun);
                    Session["sepet"] = sepetim;
                }
            }

            return(Json(new { success = true, responseText = "Sepete eklenmiştir." }, JsonRequestBehavior.AllowGet));
        }
コード例 #21
0
        /// <summary>
        /// Calculating discount
        /// </summary>
        /// <param name="basket"></param>
        /// <param name="product"></param>
        public void CalculateDiscount(ref BasketModel basket, BasketProductModel product)
        {
            var productContained = NumberOfProductsInBasket(ref basket, _obj);
            var obj = basket.Products.FirstOrDefault(x => x.ProductName == _obj.ProductName);

            CalculateTotal(ref obj, false);

            var exists = basket.Products.Select(x => x.ProductName == obj?.OfferForThisProduct?.OfferTriggerFrom).FirstOrDefault();
            var productWithOfferQuanity = basket.Products.FirstOrDefault(prod => prod.ProductName == obj?.OfferForThisProduct?.OfferTriggerFrom);

            switch (_obj.ProductName)
            {
            case "Milk":
                obj.Freebies = numberOfFreeItems(productWithOfferQuanity.Quantity);
                CalculateTotal(ref obj, true);
                break;

            case "Butter":

                break;

            case "Bread":
                if (exists && productWithOfferQuanity != null)
                {
                    for (int i = 0; i < productWithOfferQuanity.Quantity; i++)
                    {
                        if (i % 2 == 0)
                        {
                            CalculateDiscountedPrice(obj.OfferForThisProduct.DiscountAmount, ref obj);
                        }
                    }
                }
                break;

            default:
                break;
            }
        }
コード例 #22
0
        public BasketModel UpdateBasket(UnverifiedBasket basket)
        {
            var newBasket = new BasketModel();

            if (basket.ID == Guid.Empty)
            {
                newBasket.ID = Guid.NewGuid();
            }
            else
            {
                newBasket.ID = basket.ID;
            }

            var newLines = new List <VerifiedBasketLine>();

            if (basket.Lines?.Length > 0)
            {
                foreach (var basketLine in basket.Lines)
                {
                    var cheese = this._cheeseCache.Read(basketLine.ProductID);
                    if (cheese != null)
                    {
                        var line = new VerifiedBasketLine();
                        line.Grams     = basketLine.Grams;
                        line.Name      = cheese.Name;
                        line.RowNo     = basketLine.RowNo;
                        line.Price     = Math.Round((basketLine.Grams * cheese.PricePerKG) / 1000, 2, MidpointRounding.AwayFromZero);
                        line.ProductID = cheese.ID;

                        newLines.Add(line);
                    }
                }
            }

            newBasket.Lines = newLines.ToArray();

            return(newBasket);
        }
コード例 #23
0
        public BasketModel CalculatePriceWithDiscounts(BasketEntity basket, IEnumerable <DiscountEntity> discounts)
        {
            var basketModel = new BasketModel();

            foreach (var discount in discounts)
            {
                var handler = _handlers.SingleOrDefault(x => x.CanHandle(discount));
                foreach (var record in basket.Records)
                {
                    if (handler != null && handler.IsApplicable(record, discount))
                    {
                        basketModel.Records.Add(handler.Apply(record, discount));
                    }
                    else
                    {
                        basketModel.Records.Add(new BasketRecordModel(record.Count,
                                                                      new ProductModel(record.Product.Price)));
                    }
                }
            }

            return(basketModel);
        }
コード例 #24
0
        /// <summary>
        /// This method updates the quantity of an existing item in basket and re-calculates sub-total
        /// </summary>
        /// <param name="clientId">Client ID</param>
        /// <param name="basketId">Basket ID</param>
        /// <param name="itemId">Item ID of basket item</param>
        /// <param name="quantity">Quantity of item</param>
        /// <returns>True if update item quantity was successful otherwise false</returns>
        public bool UpdateBasketItemQuantity(string clientId, string basketId, string itemId, int quantity)
        {
            bool isUpdated = false;

            if (quantity > 0)
            {
                if (Config.BasketData.Exists(x => x.Client.Id == clientId && x.Id == basketId))
                {
                    BasketModel     basketRepModel  = Config.BasketData.Find(x => x.Client.Id == clientId && x.Id == basketId);
                    BasketItemModel basketItemModel = basketRepModel.BasketItems.Find(x => x.Id == itemId);
                    if (basketItemModel != null)
                    {
                        basketItemModel.Quantity = quantity;

                        //Calculate the new sub-total for this item
                        basketItemModel.SubTotal = CalculateSubTotal(basketItemModel.UnitPrice, basketItemModel.Quantity, basketItemModel.Discount);
                        isUpdated = true;
                    }
                }
            }

            return(isUpdated);
        }
コード例 #25
0
        public async Task <IActionResult> ChangeCount(BasketModel model)
        {
            if (!HttpContext.Session.Keys.Contains("basket"))
            {
                return(RedirectToAction("Index", "Home"));
            }

            if (model.Count > 65535 || model.Count < 0 || !await db.HasQuantity(model.Id, model.Count))
            {
                return(RedirectToAction("Error",
                                        new ErrorViewModel()
                {
                    ActionName = "Basket",
                    RequestInfo = "This count not available!"
                }));
            }

            var basket = HttpContext.Session.Get("basket");

            basket.ChangeCount(model.Id, (byte)model.Count);
            HttpContext.Session.Set("basket", basket);
            return(RedirectToAction("Basket"));
        }
コード例 #26
0
        /// <summary>
        /// This method adds a new item into the basket
        /// </summary>
        /// <param name="clientId">Client ID</param>
        /// <param name="basketId">Basket ID</param>
        /// <param name="basketItemModel">Basket items model for item being added</param>
        /// <returns>True if add item was successful otherwise false</returns>
        public bool AddBasketItem(string clientId, string basketId, BasketItemModel basketItemModel)
        {
            bool isAdded = false;

            //Check if all mandatory fields are present, unit price of item is not less than 0 and quantity is more than 1
            if (String.IsNullOrEmpty(basketItemModel.Id) || String.IsNullOrEmpty(basketItemModel.Name) || basketItemModel.UnitPrice < 0 ||
                basketItemModel.Quantity < 1)
            {
                isAdded = false;
            }
            else
            {
                if (Config.BasketData.Exists(x => x.Client.Id == clientId && x.Id == basketId))
                {
                    BasketModel basketRepModel = Config.BasketData.Find(x => x.Client.Id == clientId && x.Id == basketId);
                    //This maybe the first items being added, therefore initialise the items collection here
                    if (basketRepModel.BasketItems == null)
                    {
                        basketRepModel.BasketItems = new List <BasketItemModel>();
                    }
                    //If the item already exists, call the UpdateItemQuantity API not this method
                    if (basketRepModel.BasketItems.Exists(x => x.Id == basketItemModel.Id))
                    {
                        isAdded = false;
                    }
                    else
                    {
                        //Calculate the sub-total price of this item based on unit price and quantity
                        basketItemModel.SubTotal = CalculateSubTotal(basketItemModel.UnitPrice, basketItemModel.Quantity, basketItemModel.Discount);
                        basketRepModel.BasketItems.Add(basketItemModel);
                        isAdded = true;
                    }
                }
            }

            return(isAdded);
        }
コード例 #27
0
        public void BindProduct_ShouldReturnTrue_WhenBindToBasket()
        {
            //Arrange
            var basketId  = Guid.NewGuid();
            var basketDto = new BasketModel
            {
                Id = basketId
            };

            BasketOperations.BasketList.Add(basketDto);

            var categoryId    = Guid.NewGuid();
            var categoryTitle = "Technology";
            var categoryDto   = new CategoryModel
            {
                Id    = categoryId,
                Title = categoryTitle
            };

            var productId    = Guid.NewGuid();
            var productTitle = "Mobile Phone";
            var productDto   = new ProductModel
            {
                Id       = productId,
                Title    = productTitle,
                Category = categoryDto,
                Price    = 4900
            };

            var amount = 1;

            //Act
            var result = _basketOperations.BindProduct(basketDto.Id, productDto, amount);

            //Assert
            Assert.True(result);
        }
コード例 #28
0
        public List <BasketItemViewModel> GetBasketItems(HttpContextBase httpContext)
        {
            BasketModel basket = GetBasket(httpContext, false);

            if (basket != null)
            {
                var results = (from b in basket.BasketItems
                               join p in productContext.Collection() on b.ProductId equals p.Id
                               select new BasketItemViewModel()
                {
                    Id = b.Id,
                    Quantity = b.Quantity,
                    ProductName = p.Name,
                    Price = p.Price,
                    Image = p.Image
                }
                               ).ToList();
                return(results);
            }
            else
            {
                return(new List <BasketItemViewModel>());
            }
        }
コード例 #29
0
        public void AddToBasket(HttpContextBase httpContext, string productId)
        {
            BasketModel basket = GetBasket(httpContext, true);

            BasketItemModel item = basket.BasketItems.FirstOrDefault(i => i.ProductId == productId);

            if (item == null)
            {
                item = new BasketItemModel
                {
                    BasketId  = basket.Id,
                    ProductId = productId,
                    Quantity  = 1
                };

                basket.BasketItems.Add(item);
            }
            else
            {
                item.Quantity += 1;
            }

            basketContext.Commit();
        }
コード例 #30
0
        public void GetTotalPrice_WithValidBasket_ReturnsPrice()
        {
            // Arrange
            var basketId = "some-basketId";

            var basket = new BasketModel
            {
                Items = new List <BasketItemModel>
                {
                    new BasketItemModel {
                        ItemId = "", Quantity = 1, UnitPrice = 1
                    }
                }
            };

            this._storageServiceMock.Setup(x => x.Get <BasketModel>(basketId)).Returns(basket);
            this._basketPricingServiceMock.Setup(x => x.CalculateBasketTotalPrice(It.IsAny <BasketModel>())).Returns(3);

            // Act
            var result = this._subject.GetTotalPrice(basketId);

            // Assert
            Assert.AreEqual(3, result, "The basket total price is incorrect");
        }
コード例 #31
0
ファイル: AccountController.cs プロジェクト: itodorov/wwwtech
        public ActionResult LogOn(LogOnModel model)
        {
            string returnUrl = model.ReturnUrl;
            if (ModelState.IsValid)
            {
                using (ClothesShopEntities entities = new ClothesShopEntities())
                {
                    ClothesShop.User user = entities.Users.Where(x => x.Username == model.UserName && x.Password == model.Password).FirstOrDefault();
                    if (user != null)
                    {
                        Session["Username"] = model.UserName;
                        Session["UserID"] = user.ID;
                        Session["IsAuthenticated"] = true;
                        Session["IsAdmin"] = user.IsAdmin;
                        Session["Basket"] = new BasketModel();

                        if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                            && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                        {
                            return Redirect(returnUrl);
                        }
                        else
                        {
                            return RedirectToAction("Index", "Home");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "The user name or password provided is incorrect.");
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
コード例 #32
0
        public async Task <ResponseStructure> FreeUpCart(Microsoft.AspNetCore.Http.HttpRequest httpRequest, Microsoft.AspNetCore.Http.HttpResponse httpResponse)
        {
            StringValues data;



            BasketModel basket = new BasketModel();
            string      cookie;

            if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
            {
                if (cookie != null)
                {
                    httpResponse.Cookies.Delete("Cart");
                    string token = Barayand.Common.Services.CryptoJsService.EncryptStringToAES(JsonConvert.SerializeObject(basket));

                    httpResponse.Cookies.Append("Cart", token);
                }
            }



            return(ResponseModel.Success("Cart free."));
        }
コード例 #33
0
 public static BasketModel UpdateBasket(string id, BasketModel basket)
 {
     BasketSession[id] = basket;
     return(basket);
 }
コード例 #34
0
 public void SaveBasket(BasketModel basket)
 {
     HttpContext.Session.SetString("basket", JsonConvert.SerializeObject(basket));
 }
コード例 #35
0
ファイル: Basket.cs プロジェクト: artigat1/Basket
 /// <summary>
 /// Initializes a new instance of the <see cref="Basket"/> class.
 /// </summary>
 public Basket()
 {
     _basket = new BasketModel();
     _currentDiscounts = new CurrentDiscounts(_basket);
 }
コード例 #36
0
ファイル: AdminController.cs プロジェクト: itodorov/wwwtech
        public ActionResult OrderDetails(int id)
        {
            using (ClothesShopEntities entity = new ClothesShopEntities())
            {
                BasketModel model = new BasketModel();
                Order order = entity.Orders.Where(o => o.ID == id).FirstOrDefault();
                if (order != null)
                {
                    model.AddRange(order.OrderedProducts.Select(op => new BasketItem(new ProductModel(op.Product), op.Quantity, op.Size)));
                }

                return View(model);
            }
        }