Пример #1
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ItemsOrder itemsOrder   = db.ItemsOrders.Find(id);
            var        stockedItems = db.StockedItems.Where(si => si.ItemInOrder.ItemsOrderId == itemsOrder.ItemsOrderId);

            currentOrder = new OrderViewModel()
            {
                ChosenSupplier = itemsOrder.Supplier,
                ChosenStore    = itemsOrder.Store,
                ItemsInOrder   = itemsOrder.ItemInOrder.ToList(),
                ItemsOrder     = itemsOrder,
                StockedItems   = stockedItems.ToList()
            };

            if (itemsOrder == null)
            {
                return(HttpNotFound());
            }
            var completed = itemsOrder.ItemInOrder.All(io => io.StockedItem?.Count() > 0);

            ViewBag.Status = completed ? "Completed" : "Not completed";
            return(View(currentOrder));
        }
Пример #2
0
        public ActionResult Create(ItemsOrder itemsOrder)
        {
            var orderToAdd = new ItemsOrder();
            var date       = DateTime.UtcNow.Date;

            orderToAdd.StoreId    = currentOrder.ChosenStore.StoreId;
            orderToAdd.CreatedOn  = DateTime.UtcNow;
            orderToAdd.EmployeeId = db.Employees.Where(e => e.EmailAddress == User.Identity.Name).FirstOrDefault()?.EmployeeId ?? 60;
            orderToAdd.TotalSum   = (decimal?)currentOrder.GetTotalSum();
            if (currentOrder.ChosenSupplier?.SupplierId == 0)
            {
                currentOrder.ChosenSupplier = db.Suppliers.Add(currentOrder.ChosenSupplier);
            }
            orderToAdd.SupplierId = currentOrder.ChosenSupplier.SupplierId;
            var addedOrder = db.ItemsOrders.Add(orderToAdd);

            foreach (var itemInOrder in currentOrder.ItemsInOrder)
            {
                itemInOrder.ItemsOrderId = addedOrder.ItemsOrderId;
                db.ItemInOrders.Add(itemInOrder);
                db.SaveChanges();
            }
            db.SaveChanges();
            currentOrder   = null;
            ViewBag.Status = "Not completed";
            return(RedirectToAction("Details", new { id = addedOrder.ItemsOrderId }));
        }
Пример #3
0
        public static List <Item> SortItems(List <Item> items, ItemsOrder order)
        {
            switch (order)
            {
            case ItemsOrder.VolumeAsc:
            {
                return(items.OrderBy(x => x.Volume).ToList());
            }

            case ItemsOrder.VolumeDesc:
            {
                return(items.OrderByDescending(x => x.Volume).ToList());
            }

            case ItemsOrder.WeightAsc:
            {
                return(items.OrderBy(x => x.Weight).ToList());
            }

            case ItemsOrder.WeightDesc:
            {
                return(items.OrderByDescending(x => x.Weight).ToList());
            }

            case ItemsOrder.Random:
            {
                return(items.OrderBy(x => Guid.NewGuid()).ToList());
            }

            default:
            {
                throw new UnknownItemsSortMethodException(order);
            }
            }
        }
Пример #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            ItemsOrder itemsOrder = db.ItemsOrders.Find(id);

            db.ItemsOrders.Remove(itemsOrder);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #5
0
 public ActionResult Edit([Bind(Include = "TotalSum,CreatedOn,ModifiedOn,ItemsOrderId,SupplierId,EmployeeId")] ItemsOrder itemsOrder)
 {
     if (ModelState.IsValid)
     {
         db.Entry(itemsOrder).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "Name", itemsOrder.EmployeeId);
     ViewBag.SupplierId = new SelectList(db.Suppliers, "SupplierId", "Name", itemsOrder.SupplierId);
     return(View(itemsOrder));
 }
Пример #6
0
        // GET: ItemsOrders/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ItemsOrder itemsOrder = db.ItemsOrders.Find(id);

            if (itemsOrder == null)
            {
                return(HttpNotFound());
            }
            return(View(itemsOrder));
        }
Пример #7
0
        // GET: ItemsOrders/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ItemsOrder itemsOrder = db.ItemsOrders.Find(id);

            if (itemsOrder == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "Name", itemsOrder.EmployeeId);
            ViewBag.SupplierId = new SelectList(db.Suppliers, "SupplierId", "Name", itemsOrder.SupplierId);
            return(View(itemsOrder));
        }
        /// <summary>
        /// Обработчик изменения количества товара
        /// </summary>
        private void TextBoxCount_TextChanged(object sender, TextChangedEventArgs e)
        {
            var textBox         = sender as TextBox;
            var product         = textBox.DataContext as Items;
            var buttonBasketAdd = UIHelper.GetNearestObject <Button>(sender as DependencyObject, "ButtonBasketAdd");

            var        number     = int.Parse(String.IsNullOrWhiteSpace(textBox.Text) ? "0" : int.Parse(textBox.Text).ToString());
            ItemsOrder itemsOrder = null;

            if (product != null)
            {
                itemsOrder = ItemsOrderManager.Context.ItemsOrders.FirstOrDefault(v => v.Items.id == product.id);
            }

            if (number == 0 && itemsOrder != null)
            {
                // Сделать проверку на необходимость удаления, затем удалить
                if (MessageShow.Question("Вы точно хотите удалить товар из корзины?"))
                {
                    buttonBasketAdd.IsEnabled = true;
                    ItemsOrderManager.Context.ItemsOrders.Remove(itemsOrder);
                    ItemsOrderManager.Context.UpdateFull();
                    MessageShow.Success("Товар удален из корзины!");
                }
                else
                {
                    number    = itemsOrder.items_count;
                    e.Handled = true;
                }
            }

            textBox.Text = number.ToString();
            if (itemsOrder != null)
            {
                itemsOrder.items_count = number;
                ItemsOrderManager.Context.UpdateFull();
            }
        }
Пример #9
0
 public UnknownItemsSortMethodException(ItemsOrder order) : base(@$ "Couldn't find the sorting method: {order}!")
 {
 }
Пример #10
0
        public AlgoResult Solve(Instance instance, ItemsOrder order, bool loadConstraint = false, bool threeDimensional = true)
        {
            var items = instance.Items;

            // Start the algorithm
            // Measure time
            var watch = Stopwatch.StartNew();

            // Sort the items accordingly to "order" argument
            items = SortItems(items, order);

            // Choose packing direction
            var packingDirection =
                ChoosePackingDirection(instance.Truck.Width, instance.Truck.Height, instance.Truck.Depth);
            // Create necessary lists
            var notPackedItems = new List <Item>(items);
            var resultTrucks   = new List <Truck>();

            while (notPackedItems.Count > 0)
            {
                var itemsToPack = new List <Item>(notPackedItems);
                notPackedItems.Clear();
                // Create a new container
                var currentTruck = CreateTruck(instance.Truck);
                // Fill itemsToPack[0] item at (0, 0, 0) position
                currentTruck.FitInitialItem(itemsToPack.First());

                foreach (var currentItem in itemsToPack.Skip(1))
                {
                    var fitted = false;

                    for (var p = 0; p < 3; p++)
                    {
                        var k = 0;
                        while (k < currentTruck.Items.Count && !fitted)
                        {
                            var containerItem = currentTruck.Items[k];
                            var pivotNumber   = ChoosePivotNumber(packingDirection, p);
                            var pivot         = ChoosePivot(containerItem, pivotNumber, threeDimensional: threeDimensional);

                            fitted = currentTruck.TryToPackItem(currentItem, pivot, loadConstraint);

                            k++;
                        }
                    }

                    if (!fitted)
                    {
                        notPackedItems.Add(currentItem);
                    }
                }

                resultTrucks.Add(currentTruck);
            }
            watch.Stop();
            return(new AlgoResult
            {
                Trucks = resultTrucks,
                Time = watch.Elapsed
            });
        }