protected override void OnNavigatedTo(NavigationEventArgs e) { Models.Models.ProviderOrder providerOrder = (Models.Models.ProviderOrder)e.Parameter; if (providerOrder != null) { providerOrderViewModel.SetProviderOrder(providerOrder); } }
private void refreshItem(Models.Models.ProviderOrder providerOrder) { int index = ProviderOrders.IndexOf(providerOrder); if (index >= 0) { ProviderOrders.RemoveAt(index); ProviderOrders.Insert(index, providerOrder); } }
private Models.Models.ProviderOrderItem getOrCreateFromProvider(Models.Models.ProviderOrder providerOrder, Models.Models.Product product) { foreach (Models.Models.ProviderOrderItem providerOrderItem in providerOrder.ProviderOrderItems) { if (providerOrderItem.Product.Id == product.Id) { return(providerOrderItem); } } return(new Models.Models.ProviderOrderItem { ProviderOrder = providerOrder, Product = product }); }
private async Task <Models.Models.ProviderOrder> getOrCreateOrderFromProduct(Models.Models.Product product) { Models.Models.ProviderOrder providerOrder; List <Models.Models.ProviderOrder> providerOrders = (await RestClient.Instance.Get <Models.Models.ProviderOrder>("providerorder?lastProviderOrder=true&providerId=" + product.ProviderId)).model; if (providerOrders.Count == 0) { providerOrder = new Models.Models.ProviderOrder { Provider = product.Provider, Status = Models.Utils.OrderStatus.NONE }; } else { providerOrder = providerOrders[0]; } return(providerOrder); }
private async void executeStatusChanged(object obj) { Debug.WriteLine("Status changed ???"); if (obj != null && obj is Models.Models.ProviderOrder) { Debug.WriteLine(((Models.Models.ProviderOrder)obj).Price); Models.Models.ProviderOrder providerOrder = (Models.Models.ProviderOrder)obj; Debug.WriteLine("CurrentStatus " + providerOrder.CurrentStatus + " NewStatus " + providerOrder.Status); if (providerOrder.CurrentStatus != providerOrder.Status) { bool res = await RestClient.Instance.Put <Models.Models.ProviderOrder>(providerOrder, providerOrder.Id); if (res) { providerOrder.CurrentStatus = providerOrder.Status; refreshItem(providerOrder); (List <Models.Models.Product>, List <Models.Models.Product>)products = await updateStock(providerOrder); List <Models.Models.Product> updatedProducts = products.Item1; List <Models.Models.Product> failedProducts = products.Item2; if (updatedProducts.Count == providerOrder.ProviderOrderItems.Count) { this.productsUpdated = updatedProducts; OnPropertyChanged("ShowProductsVisibility"); updateResponseMessage("Les produits ont bien été réapprovisionnés", Colors.VALID_COLOR); } else { this.failedProducts = failedProducts; OnPropertyChanged("ShowFailedProductsVisibility"); updateResponseMessage((providerOrder.ProviderOrderItems.Count - updatedProducts.Count) + " produits n'ont pas été mis à jour", Colors.INVALID_COLOR); } } } } }
private async void executeRegularizeStock(object obj) { List <Models.Models.Product> productsToUpdate = (await RestClient.Instance.Get <Models.Models.Product>("product?toUpdate=true")).model; if (productsToUpdate.Count == 0) { updateResponseMessage("Aucun produit ne nécessite une régularisation du stock", Colors.VALID_COLOR); return; } int providerOrdersAdded = 0; int providerOrdersUpdated = 0; foreach (Models.Models.Product product in productsToUpdate) { int quantityToAdd = (int)Math.Floor((double)(product.MaxStockAvailable - product.Quantity) / product.PackedQuantity); Models.Models.ProviderOrder providerOrder = await getOrCreateOrderFromProduct(product); Models.Models.ProviderOrderItem providerOrderItem = getOrCreateFromProvider(providerOrder, product); if (providerOrderItem.Id != default) { if (providerOrderItem.Quantity < quantityToAdd) { providerOrderItem.Quantity += (quantityToAdd - providerOrderItem.Quantity); } } else { providerOrderItem.Quantity = quantityToAdd; providerOrder.ProviderOrderItems.Add(providerOrderItem); } if (providerOrder.Id == default) { bool res = await RestClient.Instance.Post(providerOrder); if (res) { providerOrdersAdded++; } } else { bool res = await RestClient.Instance.Put(providerOrder, providerOrder.Id); if (res) { providerOrdersUpdated++; } } } if (providerOrdersAdded > 0 || providerOrdersUpdated > 0) { string plurOrSingEnd = providerOrdersAdded > 1 ? "s" : ""; string femPlurOrSingEnd = providerOrdersAdded > 1 ? "es" : "e"; updateResponseMessage( (providerOrdersAdded > 0 ? providerOrdersAdded + " commande" + plurOrSingEnd + " ajoutée" + plurOrSingEnd : "") + (providerOrdersUpdated > 0 ? providerOrdersUpdated + " commande" + plurOrSingEnd + " mis" + femPlurOrSingEnd + " à jour" : ""), Colors.VALID_COLOR); } else { updateResponseMessage("Aucune commande n'a pu être ajoutée ou mise à jour", Colors.INVALID_COLOR); } loadProviderOrdersByProvider(); }
private async Task <(List <Models.Models.Product>, List <Models.Models.Product>)> updateStock(Models.Models.ProviderOrder providerOrder) { List <Models.Models.Product> updatedProducts = new List <Models.Models.Product>(); List <Models.Models.Product> failedProducts = new List <Models.Models.Product>(); foreach (Models.Models.ProviderOrderItem providerOrderItem in providerOrder.ProviderOrderItems) { providerOrderItem.Product.Quantity += providerOrderItem.Quantity * providerOrderItem.Product.PackedQuantity; bool res = await RestClient.Instance.Put <Models.Models.Product>(providerOrderItem.Product, providerOrderItem.Product.Id); if (res) { updatedProducts.Add(providerOrderItem.Product); } else { failedProducts.Add(providerOrderItem.Product); } } return(updatedProducts, failedProducts); }