private async void ExecuteStatusChanged(object obj) { if (obj != null && obj.GetType() == typeof(Models.Models.ClientOrder)) { Models.Models.ClientOrder clientOrder = (Models.Models.ClientOrder)obj; if (clientOrder.CurrentStatus != clientOrder.Status) { bool res = await RestClient.Instance.Put <Models.Models.ClientOrder>(clientOrder, clientOrder.Id); if (res) { clientOrder.CurrentStatus = clientOrder.Status; refreshItem(clientOrder); (List <Models.Models.Product>, List <Models.Models.Product>)products = await updateStock(clientOrder); List <Models.Models.Product> updatedProducts = products.Item1; List <Models.Models.Product> failedProducts = products.Item2; if (updatedProducts.Count == clientOrder.ClientOrderItems.Count) { this.productsUpdated = updatedProducts; OnPropertyChanged("ShowProductsVisibility"); updateResponseMessage("Tous les produits ont été mis à jour", Colors.VALID_COLOR); } else { this.failedProducts = failedProducts; OnPropertyChanged("ShowFailedProductsVisibility"); updateResponseMessage((clientOrder.ClientOrderItems.Count - updatedProducts.Count) + " produits n'ont pas été mis à jour", Colors.INVALID_COLOR); } } } } }
protected override void OnNavigatedTo(NavigationEventArgs e) { Models.Models.ClientOrder clientOrder = (Models.Models.ClientOrder)e.Parameter; if (clientOrder != null) { clientOrderViewModel.SetClientOrder(clientOrder); } }
private void refreshItem(Models.Models.ClientOrder clientOrder) { int index = ClientOrders.IndexOf(clientOrder); if (index > 0) { ClientOrders.RemoveAt(index); ClientOrders.Insert(index, clientOrder); } }
private async Task <(List <Models.Models.Product>, List <Models.Models.Product>)> updateStock(Models.Models.ClientOrder clientOrder) { List <Models.Models.Product> updatedProducts = new List <Models.Models.Product>(); List <Models.Models.Product> failedProducts = new List <Models.Models.Product>(); foreach (Models.Models.ClientOrderItem clientOrderItem in clientOrder.ClientOrderItems) { clientOrderItem.Product.Quantity -= clientOrderItem.Quantity; bool res = await RestClient.Instance.Put(clientOrderItem.Product, clientOrderItem.Product.Id); if (res) { updatedProducts.Add(clientOrderItem.Product); } else { failedProducts.Add(clientOrderItem.Product); } } return(updatedProducts, failedProducts); }