コード例 #1
0
        /// <summary>
        /// On stock item dialog action
        /// </summary>
        /// <param name="action">Action.</param>
        /// <param name="product">Product.</param>
        void OnStockItemDialogAction(StockItemDialog.StockItemDialogAction action, Product product, string driverStockId)
        {
            _stockItemDialog.Dismiss();

            DriverStockService.UpdateDriverStock(_repository, driverStockId, product);
            _adapter.NotifyDataSetChanged();
        }
コード例 #2
0
        /// <summary>
        /// Refresh trailer
        /// </summary>
        void RefreshTrailer()
        {
            // get all trailer stock
            var driverStock = _repository.DriverStock
                              .Where(x => x.TrailerNumber == _trailer.TrailerNumber)
                              .ToList();

            // get all products
            var products   = _repository.Products.ToList();
            var orderItems = _repository.OrderItems.ToList();
            var profile    = _repository.Profiles.First();

            // iterate over the products, if no stock item exists create a stock item
            products.ForEach(product =>
            {
                var stockItem = driverStock.FirstOrDefault(x => x.ProductCode == product.ProductCode);

                if (stockItem == null)
                {
                    stockItem = DriverStockService.CreateTrailerStockItem(_repository, _trailer.TrailerNumber, product);
                    driverStock.Add(stockItem);

                    _repository.Add(stockItem);
                }
            });

            // set the stock item sequence
            for (var i = 0; i < products.Count; i++)
            {
                var product   = products[i];
                var stockItem = driverStock.FirstOrDefault(x => x.ProductCode == product.ProductCode);
                stockItem.Sequence = product.Sequence.GetValueOrDefault();
            }

            // bind order quantities
            foreach (var stockItem in driverStock)
            {
                stockItem.OrderQuantity = orderItems.Where(x => x.ProductCode == stockItem.ProductCode &&
                                                           x.RunNumber == profile.CurrentRunNumber)
                                          .Sum(x => x.Quantity);
            }

            _repository.SaveChanges();

            // refresh stock to sort by sequence
            driverStock = _repository.DriverStock
                          .Where(x => x.TrailerNumber == _trailer.TrailerNumber)
                          .OrderByDescending(x => x.OrderQuantity)
                          .ThenBy(x => x.Sequence)
                          .ToList();

            // we need to create a new adapter when changing trailer
            _driverStock.Clear();
            _driverStock.AddRange(driverStock);

            Activity.RunOnUiThread(_adapter.NotifyDataSetChanged);
        }