Пример #1
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     Models.Models.ProviderOrder providerOrder = (Models.Models.ProviderOrder)e.Parameter;
     if (providerOrder != null)
     {
         providerOrderViewModel.SetProviderOrder(providerOrder);
     }
 }
Пример #2
0
        private void refreshItem(Models.Models.ProviderOrder providerOrder)
        {
            int index = ProviderOrders.IndexOf(providerOrder);

            if (index >= 0)
            {
                ProviderOrders.RemoveAt(index);
                ProviderOrders.Insert(index, providerOrder);
            }
        }
Пример #3
0
        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
            });
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
                        }
                    }
                }
            }
        }
Пример #6
0
        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();
        }
Пример #7
0
        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);
        }