public BasketItemView(BasketItem basketItem)
        {
            BookRepository bookRepository;
            BookVariableInfoRepository bookVariableInfoRepository;
            BasketRepository basketRepository;
            PaymentRepository paymentRepository;

            bookRepository = new BookRepository();
            bookVariableInfoRepository = new BookVariableInfoRepository();
            basketRepository = new BasketRepository();
            paymentRepository = new PaymentRepository();

            this.Id = basketItem.Id;
            this.Amount = basketItem.Amount;
            this.BasketId = basketItem.BasketId;
            this.BookVariableInfoId = basketItem.BookVariableInfoId;
            this.ItemCount = basketItem.ItemCount;
            this.PaymentId = basketItem.PaymentId;

            this.BookVariableInfo = (BookVariableInfo)
                bookVariableInfoRepository.FindById(this.BookVariableInfoId);
            this.Book = (Book)bookRepository.FindById(this.BookVariableInfoId);
            if (this.BasketId != null)
                this.Basket = (Basket)basketRepository.FindById((Int32)this.BasketId);
            if (this.PaymentId != null)
                this.Payment = (Payment)paymentRepository.FindById((Int32)this.PaymentId);
        }
Beispiel #2
0
        protected void Apply(
            RootModel model,
            Taxonomy taxonomy,
            RepositoryManager repositoryManager,
            String username,
            String userEmail,
            SqlConnection connection,
            SecurityRepository securityRepository,
            BasketRepository basketRepository,
            PortfolioRepository portfolioRepository,
            ref CalculationInfo calculationInfo
            )
        {
            using (var transaction = connection.BeginTransaction())
            {
                var manager = this.dataManagerFactory.CreateDataManager(connection, transaction);

                var btChangesetOpt = this.btModelTransformer.TryTransformToChangeset(model, taxonomy);
                if (btChangesetOpt != null)
                {
                    // saving unsaved baskets and modified taxonomy
                    this.btChangesetApplier.Apply(btChangesetOpt, connection, transaction, repositoryManager);
                }

                var pstoChangesetOpt  = this.pstoModelTransformer.TryTransformToChangeset(model, username);
                var ttbbvChangesetOpt = this.ttbbvModelTransformer.TryTransformToChangeset(model, username);
                var ttbptChangesetOpt = this.ttbptModelTransformer.TryTransformToChangeset(model, username);

                if (pstoChangesetOpt == null && ttbbvChangesetOpt == null && ttbptChangesetOpt == null)
                {
                    return;                     // no changes to apply, why bother?
                }

                calculationInfo = this.calculationRequester.RequestCalculation(manager);

                if (pstoChangesetOpt != null)
                {
                    this.pstoChangesetApplier.Apply(calculationInfo.Id, pstoChangesetOpt, manager);
                }
                if (ttbbvChangesetOpt != null)
                {
                    this.ttbbvChangesetApplier.Apply(calculationInfo.Id, ttbbvChangesetOpt, manager);
                }
                if (ttbptChangesetOpt != null)
                {
                    this.ttbptChangesetApplier.Apply(calculationInfo.Id, ttbptChangesetOpt, manager);
                }

                SendNotification(model.TargetingType.Name, model.Portfolio.Name, pstoChangesetOpt, ttbbvChangesetOpt, ttbptChangesetOpt, manager, securityRepository, basketRepository, portfolioRepository, userEmail);
//#warning HACK!!! prevent test changes to DB
                //transaction.Rollback();
                transaction.Commit();
            }
        }
        public Taxonomy Deserialize(BasketRepository basketRepository, TaxonomyInfo taxonomyInfo)
        {
            var result = new Taxonomy(taxonomyInfo.Id);
            var xml    = taxonomyInfo.DefinitionXml;

            using (var reader = XmlReader.Create(new StringReader(xml)))
            {
                this.xmlDeserializer.ReadTaxonomy(basketRepository, reader, result);
            }
            return(result);
        }
 public TaxonomyRepository ClaimTaxonomyRepository(
     IOnDemand <IDataManager> ondemandManager,
     BasketRepository basketRepository,
     CountryRepository countryRepository
     )
 {
     return(this.taxonomyRepositoryStorage.Claim(TaxonomyRepositoryStorageKey, delegate
     {
         return this.CreateTaxonomyRepository(ondemandManager.Claim(), basketRepository, countryRepository);
     }));
 }
Beispiel #5
0
        public void TestLoadANormalBasket()
        {
            var fileReader = new Mock <IBasketFileReader>();

            fileReader.Setup(x => x.GetTextReader()).Returns(new BasketTestData().GetValidTestData);
            var testRepository = new BasketRepository(fileReader.Object);

            var catalog = testRepository.GetItems().ToList();

            Assert.IsTrue(catalog.Count() == 3);
        }
Beispiel #6
0
        public void GetBasket_Return_Throws_Exception_When_Empty_TransactioNumber_Is_Specified()
        {
            //Arrange
            Mock <IDataStoreContext> dataContext = new Mock <IDataStoreContext>();

            dataContext.Setup(ds => ds.Baskets).Returns(_fakeBaskets);
            var basketRepo = new BasketRepository(dataContext.Object);

            //Act
            var resource = basketRepo.GetBasket(Guid.Empty);
        }
 public Mail_IChangeResolver(ChangesetApplier applier, IDataManager manager, SecurityRepository securityRepository, BasketRepository basketRepository, List <String> mail, String username, DateTime date, String ttName)
 {
     this.applier            = applier;
     this.manager            = manager;
     this.mail               = mail;
     this.username           = username;
     this.date               = date;
     this.securityRepository = securityRepository;
     this.ttName             = ttName;
     this.basketRepository   = basketRepository;
 }
        public JsonResult SepetSayfasiUrunSil(int id)
        {
            string           cevap   = "";
            int              idUrun  = id;
            BasketRepository sepetim = (BasketRepository)HttpContext.Session["sepet"];

            sepetim.urunler.Remove(idUrun);
            HttpContext.Session["sepet"] = sepetim;
            cevap = "1";
            return(Json(new { success = true, responseText = cevap }, JsonRequestBehavior.AllowGet));
        }
        public void Allow_2_free_milk_when_8_milk_are_added()
        {
            var item             = new BasketItem(ProductData.Milk, 8);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);

            var actual = basketRepository.ComputeTotals();

            Assert.Equal(6.9M, actual);
        }
        public void Apply_4th_milk_free_offer_when_3_milk_are_added()
        {
            var item             = new BasketItem(ProductData.Milk, 4);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);

            var actual = basketRepository.ComputeTotals();

            Assert.Equal(3.45M, actual);
        }
        // GET: Basket
        public ActionResult Index()
        {
            var model  = BasketRepository.GetBasket();
            var amount = model.Sum(b => b.Amount);

            ViewBag.TotalAmount = amount;
            //decimal totalamount = 0;
            //foreach (var bas in model) {
            //    totalamount += bas.Amount;
            //}
            return(View(model));
        }
        public void Restore_quantity_of_milk_after_applying_discount()
        {
            var item             = new BasketItem(ProductData.Milk, 8);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);

            var items    = basketRepository.GetBasketItems();
            var milkItem = items.FirstOrDefault(x => x.Product.Name.Equals("Milk"));

            Assert.Equal(8, milkItem.Quantity);
        }
        public void Add_one_item_to_basket()
        {
            var p1               = new Product("Milk", 2.50);
            var item             = new BasketItem(p1, 3);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);

            List <BasketItem> actual = basketRepository.GetBasketItems();

            Assert.Single(actual);
        }
        private TaxonomyRepository CreateTaxonomyRepository(
            IDataManager manager,
            BasketRepository basketRepository,
            CountryRepository countryRepository
            )
        {
            var taxonomyInfos = manager.GetAllTaxonomies();
            var taxonomies    = taxonomyInfos.Select(x => this.deserializer.DeserializeTaxonomy(x, basketRepository, countryRepository));
            var result        = new TaxonomyRepository(taxonomies);

            return(result);
        }
 public RepositoryFactory(AllegrettoContext context)
 {
     _context   = context;
     Baskets    = new BasketRepository(_context);
     Categories = new CategoryRepository(_context);
     Customers  = new CustomerRepository(_context);
     Discounts  = new DiscountRepository(_context);
     Orders     = new OrderRepository(_context);
     Products   = new ProductRepository(_context);
     Users      = new UserRepository(_context);
     Countries  = new CountryReposytory(_context);
 }
Beispiel #16
0
        public UnitOfWork(DataDbContext context)
        {
            _context      = context;
            _repositories = new ConcurrentDictionary <Type, object>();

            Dish            = new DishRepository(context);
            Organization    = new OrganizationRepository(context);
            Basket          = new BasketRepository(context);
            BasketInventory = new BasketInventoryRepository(context);
            Ratings         = new RatingRepository(context);
            Comments        = new CommentRepository(context);
        }
        public void RemoveProductFromBasket_GivenProductAndBasketExist_ShouldRemoveTheProductToTheBasket()
        {
            // Arrange
            InMemoryProductDbContext ctx = CreateTestDatabase();
            BasketRepository         basketRepository = new BasketRepository(ctx);

            // Act
            // Add new product to database
            List <Product> productsToAdd = new List <Product>()
            {
                new Product()
                {
                    Title = "Product 1"
                },
                new Product()
                {
                    Title = "Product 2"
                },
                new Product()
                {
                    Title = "Product 3"
                }
            };

            foreach (var product in productsToAdd)
            {
                ctx.Products.Add(product);
            }
            ctx.SaveChanges();

            // Add new basket to database
            string ownerId = "george";

            basketRepository.CreateBasket(ownerId);

            // Add products to basket
            Basket basket = basketRepository.GetBasketByOwnerId(ownerId);

            foreach (var product in productsToAdd)
            {
                basketRepository.AddProductToBasket(product.ProductId, basket.OwnerID);
            }

            // Delete product from basket
            basketRepository.RemoveProductFromBasket(productsToAdd[1].ProductId, ownerId);
            basket = basketRepository.GetBasketByOwnerId(ownerId);

            // Assert
            Assert.AreEqual(2, basket.BasketItems.Count);
            Assert.AreEqual(1, basket.BasketItems[0].ProductId);
            Assert.AreEqual(3, basket.BasketItems[1].ProductId);
        }
        public void Apply_50_percent_discount_to_1_bread_when_2_butter_and_bread_are_added()
        {
            var item             = new BasketItem(ProductData.Bread, 1);
            var item2            = new BasketItem(ProductData.Butter, 2);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);
            basketRepository.AddItem(item2);

            var actual = basketRepository.ComputeTotals();

            Assert.Equal(2.10M, actual);
        }
        public void Apply_milk_offer_even_when_basket_contains_none_qualifying_items()
        {
            var item             = new BasketItem(ProductData.Bread, 1);
            var item2            = new BasketItem(ProductData.Milk, 4);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);
            basketRepository.AddItem(item2);

            var actual = basketRepository.ComputeTotals();

            Assert.Equal(4.45M, actual);
        }
Beispiel #20
0
        public void CreateWithNullRepositoryWillThrow()
        {
            // Fixture setup
            var fixture = new RepositoryFixture();
            BasketRepository nullRepository = null;

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() =>
                                                  fixture.Build <BasketService>()
                                                  .FromFactory((BasketDiscountPolicy bdp) => new BasketService(nullRepository, bdp))
                                                  .CreateAnonymous());
            // Teardown
        }
        public void GetBasketByOwnerId_GivenThatTheBasketDoesNotExist_ShouldReturnNull()
        {
            // Arrange
            InMemoryProductDbContext ctx = CreateTestDatabase();
            BasketRepository         basketRepository = new BasketRepository(ctx);

            // Act
            string ownerId = "george";
            Basket basket  = basketRepository.GetBasketByOwnerId(ownerId);

            // Assert
            Assert.AreEqual(null, basket);
        }
        public void DoesBasketExist_GivenThatBasketDoesNotExist_ShouldReturnFalse()
        {
            // Arrange
            InMemoryProductDbContext ctx = CreateTestDatabase();
            BasketRepository         basketRepository = new BasketRepository(ctx);

            // Act
            string ownerId         = "george";
            bool   doesBasketExist = basketRepository.DoesBasketExist(ownerId);

            // Assert
            Assert.AreEqual(false, doesBasketExist);
        }
Beispiel #23
0
        public Taxonomy DeserializeTaxonomy(
            TaxonomyInfo taxonomyInfo,
            BasketRepository basketRepository,
            CountryRepository countryRepository
            )
        {
            var taxonomy = new Taxonomy(taxonomyInfo.Id);

            using (var reader = XmlReader.Create(new StringReader(taxonomyInfo.DefinitionXml)))
            {
                this.xmlDeserializer.DeserializeTaxonomy(reader, basketRepository, countryRepository, taxonomy);
            }
            return(taxonomy);
        }
        public BasketServiceAdapter(BasketRepository repository, BasketDiscountPolicy discountPolicy)
        {
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }
            if (discountPolicy == null)
            {
                throw new ArgumentNullException("discountPolicy");
            }

            this.repository     = repository;
            this.discountPolicy = discountPolicy;
        }
Beispiel #25
0
        public ActionResult InsertUpdateBasket(List <ShoppingBasketModel> items)
        {
            BasketRepository br = new BasketRepository();

            var user = UserManager.FindByEmail(this.User.Identity.Name);

            if (user != null)
            {
                userId = user.Id;
            }
            var userBasket = br.LoadByUserId(userId).ToList();

            if (userBasket == null)
            {
                userBasket = new List <ShoppingBasket>();
            }

            userBasket = userBasket.Where(x => x.ArchiveDateUTC == null).ToList();

            foreach (var item in items.Where(x => x.Id > 0))
            {
                //updates
                ShoppingBasket m = userBasket.Where(y => y.Id == item.Id).FirstOrDefault();
                m.Name        = item.Name;
                m.Description = item.Description;
                m.Currency    = item.Currency;
                m.Price       = item.Price;
                m.Quantity    = item.Quantity;
                m.Url         = item.Url;
            }

            foreach (var item in items.Where(x => x.Id == 0))
            {
                //inserts
                var m = new ShoppingBasket();
                m.Id          = (item.Id > 0 ? item.Id : 0);
                m.Name        = item.Name;
                m.Description = item.Description;
                m.Currency    = item.Currency;
                m.Price       = item.Price;
                m.Quantity    = item.Quantity;
                m.Url         = item.Url;
                m.UserId      = userId;
                userBasket.Add(m);
            }

            br.InsertUpdateBasket(userBasket);

            return(Json(true));
        }
        public void DecrementProductQuantityInBasket_GivenProductExistsInBasket_ShouldDecrementProductQuantity()
        {
            // Arrange
            InMemoryProductDbContext ctx = CreateTestDatabase();
            BasketRepository         basketRepository = new BasketRepository(ctx);

            // Act
            List <Product> productsToAdd = new List <Product>()
            {
                new Product()
                {
                    Title = "Product 1"
                },
                new Product()
                {
                    Title = "Product 2"
                }
            };

            foreach (var product in productsToAdd)
            {
                ctx.Products.Add(product);
            }
            ctx.SaveChanges();

            // Add new basket to database
            string ownerId = "george";

            basketRepository.CreateBasket(ownerId);

            // Add products to basket
            Basket basket = basketRepository.GetBasketByOwnerId(ownerId);

            foreach (var product in productsToAdd)
            {
                basketRepository.AddProductToBasket(product.ProductId, basket.OwnerID);
            }

            int idOfProductToDecrement = 2;

            basketRepository.DecrementProductQuantityInBasket(idOfProductToDecrement, ownerId);
            basket = basketRepository.GetBasketByOwnerId(ownerId);

            // Assert
            Assert.AreEqual(1, basket.BasketItems[0].ProductId);
            Assert.AreEqual(1, basket.BasketItems[0].ProductQuantity);
            Assert.AreEqual(2, basket.BasketItems[1].ProductId);
            Assert.AreEqual(0, basket.BasketItems[1].ProductQuantity);
        }
        public void Compute_the_total_cost_of_3_different_items_added_to_basket()
        {
            var item             = new BasketItem(ProductData.Bread, 1);
            var item2            = new BasketItem(ProductData.Milk, 1);
            var item3            = new BasketItem(ProductData.Butter, 1);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);
            basketRepository.AddItem(item2);
            basketRepository.AddItem(item3);

            decimal actual = basketRepository.ComputeTotals();

            Assert.Equal(2.95M, actual);
        }
Beispiel #28
0
        public void GetAllBasket_WithDomain_Filters_Return_AllBasketsWithSpecifiedDomainNumber()
        {
            // Arrange
            Mock <IDataStoreContext> dataContext = new Mock <IDataStoreContext>();

            dataContext.Setup(ds => ds.Baskets).Returns(_fakeBaskets);

            var basketRepo = new BasketRepository(dataContext.Object);
            //Act
            var resource = basketRepo.GetAllBasket(10);

            //Assert
            Assert.IsNotNull(resource);
            Assert.AreEqual(2, resource.Count());
        }
        public void Apply_both_offers_when_basket_contains_qualifying_items()
        {
            var item             = new BasketItem(ProductData.Butter, 2);
            var item2            = new BasketItem(ProductData.Bread, 1);
            var item3            = new BasketItem(ProductData.Milk, 8);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);
            basketRepository.AddItem(item2);
            basketRepository.AddItem(item3);

            var actual = basketRepository.ComputeTotals();

            Assert.Equal(9.0M, actual);
        }
        public void Add_two_items_to_basket()
        {
            var p1               = new Product("Milk", 2.50);
            var p2               = new Product("Bread", 2.50);
            var item             = new BasketItem(p1, 3);
            var item2            = new BasketItem(p2, 3);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);
            basketRepository.AddItem(item2);

            var actual = basketRepository.GetBasketItems();

            Assert.Equal(2, actual.Count);
        }
        public void Update_quantity_when_the_same_item_is_added_twice_to_basket()
        {
            var p1               = new Product("Milk", 2.50);
            var p2               = new Product("Milk", 2.50);
            var item             = new BasketItem(p1, 3);
            var item2            = new BasketItem(p2, 3);
            var basketRepository = new BasketRepository();

            basketRepository.AddItem(item);
            basketRepository.AddItem(item2);

            var actual = basketRepository.GetBasketItems();

            Assert.Single(actual);
        }
        //Добавление экземпляров книги в корзину покупателя
        //Должна быть транзакция
        public bool AddBookItem(Basket basket, BasketItem basketItem)
        {
            Int32 allBasketItemCount;
            Book book;
            BookVariableInfo bookVariableInfo, newBookVariableInfo;
            BasketRepository basketRepository;

            if (basket != null && basketItem != null)
            {
                if (basket.BasketItems == null)
                    basket.BasketItems = new List<BasketItem>();
                bookVariableInfo = (BookVariableInfo)
                    base._bookVariableInfoRepository.FindById(
                        basketItem.BookVariableInfoId);
                book = (Book)this._bookRepository.FindById(bookVariableInfo.Id);

                //Валидация. Общее число заказанного товара не должно быть >= имеющегося числа
                allBasketItemCount = BasketItemCounting(basketItem);
                if (allBasketItemCount + basketItem.ItemCount >
                    bookVariableInfo.ProductCount)
                    return false;
                //Добавление заказанной книги
                basketItem.BasketId = basket.Id;
                basketItem.Amount =
                    bookVariableInfo.Price * basketItem.ItemCount;
                base._basketItemRepository.Add(basketItem);

                //Обновление корзины
                basket.TotalAmount += basketItem.Amount;
                basketRepository = new BasketRepository();
                basketRepository.Edit(basket);

                return true;
            }
            else
            {
                throw new Exception("Корзина или элемент корзины не заданы!");
            }

            return false;
        }