/// <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(); }
/// <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); }