コード例 #1
0
        public void TestCanAddNewOrder()
        {
            // prepare
            var ordersProduct = new OrdersProduct(14, 8.1818m)
            {
                Item_id = 3, Order_id = 29
            };
            IOrdersProductRepository repository = new OrdersProductRepository();

            // run
            repository.Add(ordersProduct);

            // validate
            // use session to try to load the product

            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get <OrdersProduct>(ordersProduct.Id);

                // Test that the product was successfully inserted

                Assert.IsNotNull(fromDb);
                Assert.AreNotSame(ordersProduct, fromDb);
                Assert.AreEqual(ordersProduct.Id, fromDb.Id);
                Assert.AreEqual(ordersProduct.Amount, fromDb.Amount);
            }
        }
コード例 #2
0
        public void TestCanUpdate()
        {
            //Prepare
            OrdersProduct originalOrdersProduct = new OrdersProduct(2, 10m)
            {
                Item_id = 3, Order_id = 29
            };
            OrdersProduct testOrdersProduct = new OrdersProduct(3, 8.1818m)
            {
                Item_id = 3, Order_id = 29
            };
            OrdersProductRepository repository = new OrdersProductRepository();

            //Run
            using (ISession session = _sessionFactory.OpenSession())
            {
                session.Save(originalOrdersProduct);
                testOrdersProduct.Id = originalOrdersProduct.Id;
                repository.Update(testOrdersProduct);
            }
            //Validate
            using (ISession session = _sessionFactory.OpenSession())
            {
                //second session is used so fromDB get to take the changed table entry
                var fromDb = session.Get <OrdersProduct>(originalOrdersProduct.Id);

                Assert.IsNotNull(fromDb);
                Assert.AreEqual(testOrdersProduct.Amount, fromDb.Amount);
            }
        }
コード例 #3
0
 private void OpenFilter()
 {
     if (!(OrdersProduct is null))
     {
         OrdersProduct.Clear();
     }
     LoadOrdersAsync();
     OpenFilterWindow?.Invoke(this, EventArgs.Empty);
 }
コード例 #4
0
        public ActionResult Index(ProductModel model)
        {
            using (AppStoreEntities entities = new AppStoreEntities())
            {
                if (User.Identity.IsAuthenticated)
                {
                    AspNetUser currentUser = entities.AspNetUsers.Single(x => x.UserName == User.Identity.Name);
                    Order      o           = currentUser.Orders.FirstOrDefault(x => x.TimeCompleted == null);
                    if (o == null)
                    {
                        o             = new Order();
                        o.OrderNumber = Guid.NewGuid();
                        currentUser.Orders.Add(o);
                    }
                    var product = o.OrdersProducts.FirstOrDefault(x => x.ProductID == model.ID);
                    if (product == null)
                    {
                        product           = new OrdersProduct();
                        product.ProductID = model.ID ?? 0;
                        product.Quantity  = 0;
                        o.OrdersProducts.Add(product);
                    }
                    product.Quantity += 1;
                }
                else
                {
                    Order o = null;
                    if (Request.Cookies.AllKeys.Contains("orderNumber"))
                    {
                        Guid orderNumber = Guid.Parse(Request.Cookies["orderNumber"].Value);
                        o = entities.Orders.FirstOrDefault(x => x.TimeCompleted == null && x.OrderNumber == orderNumber);
                    }
                    if (o == null)
                    {
                        o             = new Order();
                        o.OrderNumber = Guid.NewGuid();
                        entities.Orders.Add(o);
                        Response.Cookies.Add(new HttpCookie("orderNumber", o.OrderNumber.ToString()));
                    }
                    var product = o.OrdersProducts.FirstOrDefault(x => x.ProductID == model.ID);
                    if (product == null)
                    {
                        product           = new OrdersProduct();
                        product.ProductID = model.ID ?? 0;
                        product.Quantity  = 0;
                        o.OrdersProducts.Add(product);
                    }
                    product.Quantity += 1;
                }

                entities.SaveChanges();
                TempData.Add("AddedToCart", true);
            }
            return(RedirectToAction("Index", "Cart"));
        }
コード例 #5
0
        //////////

        public ActionResult RemoveItem(int?id)
        {
            using (AppStoreEntities entities = new AppStoreEntities())
            {
                if (User.Identity.IsAuthenticated)
                {
                    AspNetUser    currentUser = entities.AspNetUsers.Single(x => x.UserName == User.Identity.Name);
                    Order         o           = currentUser.Orders.FirstOrDefault(x => x.TimeCompleted == null);
                    OrdersProduct item        = o.OrdersProducts.FirstOrDefault(x => x.ProductID == id);
                    if (item.Quantity == 1)
                    {
                        item.Product.OrdersProducts = null;
                        if (o.OrdersProducts.Count == 1)
                        {
                            o.OrdersProducts = null;
                        }
                    }
                    else
                    {
                        item.Quantity -= 1;
                    }
                }
                else
                {
                    if (Request.Cookies.AllKeys.Contains("orderNumber"))
                    {
                        Guid          orderNumber = Guid.Parse(Request.Cookies["orderNumber"].Value);
                        Order         o           = entities.Orders.FirstOrDefault(x => x.TimeCompleted == null && x.OrderNumber == orderNumber);
                        OrdersProduct item        = o.OrdersProducts.FirstOrDefault(x => x.ProductID == id);
                        if (item.Quantity == 1)
                        {
                            item.Product.OrdersProducts = null;
                            if (o.OrdersProducts.Count == 1)
                            {
                                o.OrdersProducts = null;
                            }
                        }
                        else
                        {
                            item.Quantity -= 1;
                        }
                    }
                }
                entities.SaveChanges();
            }
            return(RedirectToAction("Index", "Cart"));
        }
コード例 #6
0
 public void Remove(OrdersProduct ordersProduct)
 {
     using (var session = NHibernateSession.OpenSession())
     {
         using (var tx = session.BeginTransaction()) // met transactions
         {
             try
             {
                 session.Delete(ordersProduct);
                 tx.Commit();
             }
             catch (Exception ex)
             {
                 tx.Rollback();
                 throw ex;
             }
         }
     }
 }
コード例 #7
0
 public void Add(OrdersProduct ordersProduct)
 {
     using (var session = NHibernateSession.OpenSession())
     {
         //session.Save(product); // zonder transactions
         using (var tx = session.BeginTransaction()) // met transactions
         {
             try
             {
                 session.Save(ordersProduct);
                 tx.Commit();
             }
             catch (Exception ex)
             {
                 tx.Rollback();
                 throw ex;
             }
         }
     }
 }
コード例 #8
0
        public void TestGetById()
        {
            // prepare
            OrdersProduct ordersProduct = new OrdersProduct(1, 8.1818m)
            {
                Item_id = 3, Order_id = 29
            };

            using (ISession session = _sessionFactory.OpenSession())
            {
                session.Save(ordersProduct);
            }
            IPurchaseRepository repository = new PurchaseRepository();

            // run
            var result = repository.GetById(ordersProduct.Id);

            // validate
            Assert.NotNull(result);
            Assert.AreEqual(ordersProduct, result);
        }
コード例 #9
0
        private async Task ChangeStateOfOrderAsync()
        {
            try
            {
                var order = (OrderDto)SelectedOrder;
                order.Items = OrdersProduct.ToList();
                if (await _service.FullFillOrders(order))
                {
                    LoadOrdersAsync();
                    if (SelectedSubCat != null)
                    {
                        LoadProductAsync(SelectedSubCat);
                    }
                }
            }

            catch (Exception ex) when(ex is NetworkException || ex is HttpRequestException)
            {
                OnMessageApplication($"Unexpected error occured! ({ex.Message})");
            }
        }
コード例 #10
0
        public void TestCanDelete()
        {
            //prepare
            OrdersProduct testOrdersProduct = new OrdersProduct(4, 8.1818m)
            {
                Item_id = 3, Order_id = 29
            };
            OrdersProductRepository repository = new OrdersProductRepository();

            //run
            using (ISession session = _sessionFactory.OpenSession())
            {
                session.Save(testOrdersProduct);
                repository.Remove(testOrdersProduct);
            }
            //validate
            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get <Purchase>(testOrdersProduct.Id);
                Assert.IsNull(fromDb);
            }
        }
コード例 #11
0
        public ActionResult Create(CartModelView collection)
        {
            try
            {
                var pro     = ComicDB.GetStoreProduct(collection.Product.Id);
                var product = new OrdersProduct
                {
                    Name          = pro.Name,
                    Price         = pro.Price,
                    InventorySize = 1,
                    OrdersId      = ComicDB.GetOrderss()
                };

                ComicDB.ProuductAdded(collection.Product);
                ComicDB.AddOrderProduct(product);

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View());
            }
        }