Esempio n. 1
0
        public ActionResult Create([Bind(Include = "ProductID,Quantity")] ProductInOrderCreateModel viewModel)
        {
            ProductInOrder productInOrder = new ProductInOrder();

            productInOrder.ProductID = viewModel.ProductID;
            productInOrder.Quantity  = viewModel.Quantity;

            string userID      = User.Identity.GetUserId();
            Order  activeOrder = db.Orders.FirstOrDefault(x => x.UserId == userID && x.OrderStatus == 0);

            if (activeOrder == null)
            {
                return(RedirectToAction("Warning", "Home", new { message = "No active order currently. Click New order below if you are a customer to proceed to an order. " }));
            }
            productInOrder.OrderID = activeOrder.OrderID;

            ProductInOrder p = db.ProductInOrders.FirstOrDefault(x => x.OrderID == activeOrder.OrderID && x.ProductID == productInOrder.ProductID);

            //If product is already in Order
            if (p != null)
            {
                p.Quantity = viewModel.Quantity;
                db.SaveChanges();
                return(RedirectToAction("Warning", "Home", new { message = "Product already in order, updated the amount order!" }));
            }


            db.ProductInOrders.Add(productInOrder);
            db.SaveChanges();

            ViewBag.Message = "Product added to order";
            return(RedirectToAction("Index", "Products"));
        }
Esempio n. 2
0
        public async Task <ActionResult <string> > AddToOrderStore([FromBody] ProductInOrder product)
        {
            string       OrganizationName = (string)RouteData.Values["OrganizationName"];
            Organization orgExist         = await _organizationRepository.OraganizationExist(OrganizationName);

            if (orgExist != null)
            {
                _orderProductRepository.setConnectionString(OrganizationName);

                byte[] error  = new byte[500];
                int    status = await _orderProductRepository.AddPotentialProduct(product, error);

                string z = System.Text.Encoding.ASCII.GetString(error);
                if (status != 0)
                {
                    return(BadRequest(z.Remove(z.IndexOf('\0'))));
                }
                else
                {
                    return(Ok("successfuly added"));
                }
            }
            else
            {
                return(NotFound("This organization does not exist"));
            }
        }
Esempio n. 3
0
        private void AddProductToOrder(Product product)
        {
            if (IsExistProductInOrder(product))
            {
                var productInOrder = GetProductInOrder(product);
                productInOrder.Quantity = productInOrder.Quantity + 1;
            }
            else
            {
                var productInOrder = new ProductInOrder {
                    ID        = product.Id,
                    Name      = product.Name,
                    ProductId = product.Id
                };
                if (product.Cost != null)
                {
                    productInOrder.Cost = (double)product.Cost;
                }
                _listProductsInOrder.Add(productInOrder);
                productInOrder.Quantity = productInOrder.Quantity + 1;
            }

            ProductInOrderListView.ItemsSource = null;
            ProductInOrderListView.ItemsSource = _listProductsInOrder;
        }
Esempio n. 4
0
        public async Task <IActionResult> Edit(int id, [Bind("ProductInOrderId,ProductId,OrderId")] ProductInOrder productInOrder)
        {
            if (id != productInOrder.ProductInOrderId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(productInOrder);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProductInOrderExists(productInOrder.ProductInOrderId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["OrderId"]   = new SelectList(_context.Order, "OrderId", "OrderGuid", productInOrder.OrderId);
            ViewData["ProductId"] = new SelectList(_context.Product, "ProductId", "Description", productInOrder.ProductId);
            return(View(productInOrder));
        }
Esempio n. 5
0
 private void SetInitialValues(ProductInOrder productToRemove)
 {
     productToRemove.SelectedQuantity = 0;
     productToRemove.SourceProductOnStore.UnitsInStock += productToRemove.SourceProductOnStore.UnitsOnOrder;
     productToRemove.SourceProductOnStore.UnitsOnOrder  = 0;
     TotalSum -= productToRemove.Sum;
 }
Esempio n. 6
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Quantity")] ProductInOrder productInOrder)
        {
            if (id != productInOrder.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(productInOrder);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProductInOrderExists(productInOrder.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(productInOrder));
        }
Esempio n. 7
0
        private void SaveChangesToProducts(ProductInOrder newProductInOrder, int newValue)
        {
            Product productToReplace = db.Products.First(x => x.ProductID == newProductInOrder.ProductID);

            productToReplace.UnitsInStock -= (short)newValue;

            db.SaveChanges();
        }
Esempio n. 8
0
        private void RemoveProduct(ProductInOrder productToRemove)
        {
            if (!productToRemove.IsSaled)
            {
                productToRemove.SourceProductOnStore.UnitsInStock += productToRemove.SelectedQuantity;
            }

            TotalSum -= productToRemove.Sum;
        }
Esempio n. 9
0
        public async Task <int> Create(T entity, byte[] error)
        {
            int status = 0;

            if (typeof(T) == typeof(Inventory))
            {
                Inventory inventory = (Inventory)(object)(entity);
                status = await Task.Run(() => Warehouse_Wrapper.addInventory(inventory, error, _ConnectionString));
            }
            if (typeof(T) == typeof(ProductInInventory))
            {
                ProductInInventory product = (ProductInInventory)(object)(entity);
                status = await Task.Run(() => Warehouse_Wrapper.addProductToInventory(product, error, _ConnectionString));
            }
            if (typeof(T) == typeof(Product))
            {
                Product product = (Product)(object)(entity);
                status = await Task.Run(() => Warehouse_Wrapper.addProduct(product, error, _ConnectionString));
            }

            if (typeof(T) == typeof(Order))
            {
                Order order = (Order)(object)(entity);
                status = await Task.Run(() => Warehouse_Wrapper.addOrder(order, error, _ConnectionString));
            }

            if (typeof(T) == typeof(ProductInOrder))
            {
                ProductInOrder product = (ProductInOrder)(object)(entity);
                status = await Task.Run(() => Warehouse_Wrapper.addProductToOrder(product, error, _ConnectionString));
            }

            if (typeof(T) == typeof(Customer))
            {
                Customer customer = (Customer)(object)entity;
                if (_ConnectionString != null)
                {
                    status = await Task.Run(() => Crm_Wrapper.AddCustomer(customer, error, _ConnectionString));
                }
            }

            if (typeof(T) == typeof(Opportunity))
            {
                Opportunity opportunity = (Opportunity)(object)(entity);
                status = await Task.Run(() => Crm_Wrapper.AddOpportunity(opportunity, error, _ConnectionString));
            }

            if (typeof(T) == typeof(OpportunityProduct))
            {
                OpportunityProduct product = (OpportunityProduct)(object)(entity);
                status = await Task.Run(() => Crm_Wrapper.AddOpportunityProduct(product, error, _ConnectionString));
            }

            return(status);
        }
Esempio n. 10
0
        public async Task <IActionResult> Create([Bind("Id,Quantity")] ProductInOrder productInOrder)
        {
            if (ModelState.IsValid)
            {
                _context.Add(productInOrder);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(productInOrder));
        }
Esempio n. 11
0
        private void SubscribeToChanges(ProductInOrder newProductInOrder)
        {
            newProductInOrder.WhenAnyValue(x => x.SelectedDiscount, x => x.SelectedQuantity)
            .Subscribe(a =>
            {
                int newSelectedDiscount = a.Item1;
                int newSelectedQuantity = a.Item2;

                //-UnitPrice или +UnitPrice к TotalSum и цене товара в заказке
                decimal newValue = (newSelectedQuantity - (short)newProductInOrder.SourceProductOnStore.UnitsOnOrder) * (decimal)newProductInOrder.UnitPrice;

                //-1% или +1% скидки от товара
                decimal percentageOff = (decimal)(newSelectedDiscount - newProductInOrder.PreviousSelectedDiscount) / 100;

                //Запускается когда меняется SelectedDiscount
                if (percentageOff != 0)
                {
                    newProductInOrder.Sum -= newProductInOrder.SelectedQuantity * (decimal)newProductInOrder.UnitPrice * percentageOff;
                    TotalSum -= newProductInOrder.SelectedQuantity * (decimal)newProductInOrder.UnitPrice * percentageOff;
                }
                //Запускается когда меняется SelectedQuantity и при этом SelectedDiscount больше нуля
                else if (newSelectedDiscount != 0)
                {
                    //
                    decimal sumOff   = ((decimal)newProductInOrder.PreviousSelectedDiscount / 100) * newProductInOrder.SelectedQuantity * (decimal)newProductInOrder.UnitPrice;
                    decimal sumToAdd = sumOff - newProductInOrder.Sum;

                    newProductInOrder.Sum = sumOff;
                    TotalSum += sumToAdd;

                    return;
                }

                newProductInOrder.PreviousSelectedDiscount = newSelectedDiscount;

                newProductInOrder.Sum += newValue;
                TotalSum += newValue;
            });

            newProductInOrder.WhenAnyValue(x => x.SelectedQuantity)
            .Select(newSelectedQuantity =>
            {
                short?unitsOnOrder = newProductInOrder.SourceProductOnStore.UnitsOnOrder;

                return(newSelectedQuantity - unitsOnOrder);
            })
            .Subscribe(newValue =>
            {
                newProductInOrder.SourceProductOnStore.UnitsInStock -= (short)newValue;
                newProductInOrder.SourceProductOnStore.UnitsOnOrder += (short)newValue;

                SaveChangesToProducts(newProductInOrder, (int)newValue);
            });
        }
        public async Task Do(int orderId, int productId)
        {
            var productInOrder = new ProductInOrder
            {
                OrderRefId   = orderId,
                ProductRefId = productId,
            };

            _context.ProductInOrders.Remove(productInOrder);
            await _context.SaveChangesAsync();
        }
        public async Task Do(ProductInOrdersViewModel vm)
        {
            var productInOrder = new ProductInOrder
            {
                OrderRefId   = vm.OrderRefId,
                ProductRefId = vm.ProductRefId,
                UsedQuantity = vm.UsedQuantity,
            };

            _context.ProductInOrders.Update(productInOrder);
            await _context.SaveChangesAsync();
        }
Esempio n. 14
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            if (!User.IsInRole("Administrator"))
            {
                return(RedirectToAction("Warning", "Home", new { message = "ACCESS DENIED - Restricted to administrator only!" }));
            }
            ProductInOrder productInOrder = await db.ProductInOrders.FindAsync(id);

            db.ProductInOrders.Remove(productInOrder);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Esempio n. 15
0
        public async Task <IActionResult> Create([Bind("ProductInOrderId,ProductId,OrderId")] ProductInOrder productInOrder)
        {
            if (ModelState.IsValid)
            {
                _context.Add(productInOrder);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["OrderId"]   = new SelectList(_context.Order, "OrderId", "OrderGuid", productInOrder.OrderId);
            ViewData["ProductId"] = new SelectList(_context.Product, "ProductId", "Description", productInOrder.ProductId);
            return(View(productInOrder));
        }
Esempio n. 16
0
        public async Task <ActionResult> RemoveFromOrder(int id, int orderID)
        {
            ProductInOrder productInOrder = await db.ProductInOrders.FindAsync(id);

            if (productInOrder.OrderID != orderID)
            {
                return(RedirectToAction("Warning", "Home", new { message = "ACCESS DENIED - NON VALID REMOVE-FROM-ORDER REQUEST" }));
            }

            db.ProductInOrders.Remove(productInOrder);
            await db.SaveChangesAsync();

            return(RedirectToAction("OrderDetails", "Orders"));
        }
Esempio n. 17
0
        private void AddToOrder(ProductOnStore product)
        {
            if (product == null)
            {
                return;
            }
            if (productsInOrder.Items.Any(o => o.ProductID == product.ProductID))
            {
                return;
            }

            ProductInOrder productInOrder = new ProductInOrder(product);

            productsInOrder.Add(productInOrder);
        }
Esempio n. 18
0
        // GET: ProductsInOrders/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            ProductInOrder productsInOrder = this.service.ProductInOrder(db.ProductsInOrders.Find(id));

            if (productsInOrder == null)
            {
                return(HttpNotFound());
            }

            return(View(productsInOrder));
        }
Esempio n. 19
0
        public async Task <ActionResult <string> > EditProductInOrder(ProductInOrder product)
        {
            byte[] error  = new byte[500];
            int    status = await _orderProductRepository.EditProductInOrder(product, error);

            string z = System.Text.Encoding.ASCII.GetString(error);

            if (status != 0)
            {
                return(BadRequest(z.Remove(z.IndexOf('\0'))));
            }
            else
            {
                return(Ok("successfuly added"));
            }
        }
Esempio n. 20
0
 /// <summary>
 /// Subscribes to the changes of added property
 /// </summary>
 /// <param name="productOnStore">
 /// New product that was added into products on store list
 /// </param>
 private void MakeSubscribtion(ProductOnStore productOnStore)
 {
     productOnStore.WhenAnyValue(a => a.Added).
     Subscribe(isInOrder =>
     {
         if (isInOrder)
         {
             ProductInOrder newProductInOrder = new ProductInOrder(productOnStore);
             productsInOrder.AddOrUpdate(newProductInOrder);
         }
         else
         {
             productsInOrder.Remove(productOnStore.ProductID);
         }
     });
 }
        /// <summary>
        /// Method to remove a selected product from the order
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonRemovefromOrder_Click(object sender, EventArgs e)
        {
            if (dataGridViewOrder.SelectedRows.Count == 0)
            {
                MessageBox.Show("No products in the order were selected");
                return;
            }

            foreach (DataGridViewRow row in dataGridViewOrder.SelectedRows)
            {
                ProductInOrder productInOrder = row.DataBoundItem as ProductInOrder;
                order.Products.Remove(productInOrder.Product);
            }

            //When a product is removed we map the order to the form
            MapOrderToForm();
        }
Esempio n. 22
0
        public async Task <ActionResult <int> > RemoveFromStock(ProductInOrder product)
        {
            byte[] error  = new byte[500];
            int    status = await _orderProductRepository.removeFromStock(product, error);

            string z = System.Text.Encoding.ASCII.GetString(error);
            string y = z.Remove(z.IndexOf('\0'));

            if (status == 0)
            {
                return(Ok("Succesfully removed"));
            }
            else
            {
                return(BadRequest(y));
            }
        }
Esempio n. 23
0
        public async Task <ActionResult> Edit([Bind(Include = "ProductInOrderID,ProductID,OrderID,Quantity")] ProductInOrder productInOrder)
        {
            if (!User.IsInRole("Administrator"))
            {
                return(RedirectToAction("Warning", "Home", new { message = "ACCESS DENIED - Restricted to administrator only!" }));
            }
            if (ModelState.IsValid)
            {
                db.Entry(productInOrder).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.OrderID   = new SelectList(db.Orders, "OrderID", "UserId", productInOrder.OrderID);
            ViewBag.ProductID = new SelectList(db.Products, "ProductID", "ProductName", productInOrder.ProductID);
            return(View(productInOrder));
        }
Esempio n. 24
0
        // GET: ProductInOrders/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (!User.IsInRole("Administrator"))
            {
                return(RedirectToAction("Warning", "Home", new { message = "ACCESS DENIED - Restricted to administrator only!" }));
            }
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductInOrder productInOrder = await db.ProductInOrders.FindAsync(id);

            if (productInOrder == null)
            {
                return(HttpNotFound());
            }
            return(View(productInOrder));
        }
Esempio n. 25
0
        // GET: ProductInOrders/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (!User.IsInRole("Administrator"))
            {
                return(RedirectToAction("Warning", "Home", new { message = "ACCESS DENIED - Restricted to administrator only!" }));
            }
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductInOrder productInOrder = await db.ProductInOrders.FindAsync(id);

            if (productInOrder == null)
            {
                return(HttpNotFound());
            }
            ViewBag.OrderID   = new SelectList(db.Orders, "OrderID", "UserId", productInOrder.OrderID);
            ViewBag.ProductID = new SelectList(db.Products, "ProductID", "ProductName", productInOrder.ProductID);
            return(View(productInOrder));
        }
Esempio n. 26
0
 private void Button_CompleteOrder_Click(object sender, RoutedEventArgs e)
 {
     if (ProductInOrderListView.ItemsSource == null)
     {
         MessageBox.Show("CART IS EMPTY!!!!");
     }
     else
     {
         ProductInOrderListView.IsEnabled   = false;
         ProductInOrderListView.ItemsSource = null;
         ButtonCompleteOrder.IsEnabled      = false;
         ButtonCancel.IsEnabled             = false;
         ButtonAddOrder.IsEnabled           = true;
         // Create new order
         int idOrder = _databaseHelper.CreateOrder();
         List <ProductInOrderTable> productInOrders = ProductInOrder.ConvertToProductInOrderTable(_listProductsInOrder, idOrder);
         // Add to list product in order to database after creating ordder
         this._databaseHelper.SaveListProductsInOrderTable(productInOrders);
         OrderList_UserControl.UpdateListOrder();
         _listProductsInOrder.Clear();
     }
 }
Esempio n. 27
0
 public static extern int removeFromStock(ProductInOrder product, byte[] error, ConnectionString connectionString);
Esempio n. 28
0
 public static extern int editProductInOrder(ProductInOrder product, byte[] error, ConnectionString connectionString);
Esempio n. 29
0
 public static extern int addPotentialProduct(ProductInOrder product, byte[] error, ConnectionString connectionString);
        public OrderInfo InsertOrder(OrderPost post)
        {
            var result = new OrderInfo();
            var userObjId = new ObjectId(post.userId);
            //获取最近一个订单信息
            var builderOrder = Builders<OrderMongo>.Filter;
            var filterOrder = builderOrder.Eq(x => x.UserId, userObjId);
            filterOrder &= builderOrder.Eq(x => x.IsDel, false);
            var colOrder = MongoDBHelper.Instance.GetOrder();
            try
            {
                //判断两个订单时间间隔,避免短时间频繁提交订单
                var queryOrder = colOrder.Find(filterOrder).SortByDescending(x => x.CreatedAt).FirstOrDefault();
                if (queryOrder != null)
                {
                    TimeSpan interval = DateTime.Now - queryOrder.CreatedAt;
                    if (interval.TotalSeconds < 10)
                        return null;
                }
                //根据产品Id获取产品信息
                var productObjIdList = post.productList.Select(x => new ObjectId(x.id)).ToList();
                var buiderProduct = Builders<ProductMongo>.Filter;
                var filterProduct = buiderProduct.In(x => x._id, productObjIdList);
                filterProduct &= buiderProduct.Eq(x => x.IsDel, false);
                var queryProduct = MongoDBHelper.Instance.GetProduct().Find(filterProduct).ToList();

                var productList = new List<ProductInOrder>();       //订单内产品信息列表
                var proDtoList = new List<ProductInOrderDto>();     //返回给前端的订单内产品信息列表
                foreach (var x in queryProduct)
                {
                    var product = new ProductInOrder
                    {
                        _id = x._id,
                        Name = x.Name,
                        Description = x.Description,
                        Price = x.Price
                    };
                    product.Num = post.productList.Find(s => s.id == x._id.ToString()).Num;
                    productList.Add(product);

                    var proDto = new ProductInOrderDto
                    {
                        Id = x._id.ToString(),
                        Name = x.Name,
                        Description = x.Description,
                        Price = x.Price,
                        Num=product.Num,
                    };
                    proDtoList.Add(proDto);
                }
<<<<<<< HEAD

                var order = new OrderMongo
                {
                    _id=ObjectId.GenerateNewId(),
                    CreatedAt = DateTime.Now.AddHours(8),
                    ProductList = productList,
                    UserId = userObjId
=======
                var ran = new Random();
                string tradeNo = string.Format("DT{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), ran.Next(9999));
                var order = new OrderMongo
                {
                    _id = ObjectId.GenerateNewId(),
                    CreatedAt = DateTime.Now.AddHours(8),
                    ProductList = productList,
                    UserId = userObjId,
                    TradeNo = tradeNo
>>>>>>> c26f92d240a523a1903a8e87db204683ad299860
                };
                order.TotalPrice = productList.Select(x => x.Num * x.Price).Sum();
                colOrder.InsertOne(order);

                order.ProductList = productList;
                var orderDto = new OrderDto
                {
                    Id = order._id.ToString(),
                    ProductList = proDtoList,
<<<<<<< HEAD
                    TotalPrice = order.TotalPrice
=======
                    TotalPrice = order.TotalPrice,
                    CreatedAt = order.CreatedAt,
                    TradeNo = order.TradeNo
>>>>>>> c26f92d240a523a1903a8e87db204683ad299860
                };
                result.order = orderDto;