public async Task <DropshipOrder[]> GetOrders(string username)
        {
            var orders = new List <DropshipOrder>();

            //Get unfulfilled orders & dropship items from db
            var shopifyTask  = shopify.GetOrders(username);
            var dropshipTask = dbItems.GetMultipleByUsername(username);

            if (shopifyTask.IsFaulted || dropshipTask.IsFaulted)
            {
                return(new DropshipOrder[0]);
            }

            var dropshipItems = await dropshipTask;
            var shopifyItems  = await shopifyTask;

            foreach (var shopifyOrder in shopifyItems)
            {
                var dropshipItemsOnOrder = new List <DropshipItemModel>();
                shopifyOrder.LineItems.ForEach(x =>
                {
                    var dropshipItem = dropshipItems.FirstOrDefault(ds => ds.ListingID == x.ProductID);

                    if (dropshipItems != null)
                    {
                        dropshipItemsOnOrder.Add(dropshipItem);
                    }
                });

                if (dropshipItemsOnOrder.Count == 0)
                {
                    continue;
                }

                orders.Add(new DropshipOrder()
                {
                    Order = shopifyOrder,
                    Items = dropshipItemsOnOrder.ToArray()
                });
            }

            return(orders.ToArray());
        }
示例#2
0
        static void Main(string[] args)
        {
            Logger logger = LogManager.GetCurrentClassLogger();
            try
            {
                JObject o1 = JObject.Parse(File.ReadAllText($"{AppDomain.CurrentDomain.BaseDirectory}/appSettings.json"));
                string kellyConnString = o1.First.First.ToString();

                ShopifyService Sservice = new ShopifyService(kellyConnString, logger);
                int result = 0;
                switch (args[0])
                {
                    case "/GP":
                        Sservice.GetProducts();
                        break;
                    case "/STOCK":
                        if (args.Length > 1)
                            result = int.Parse(args[1]);
                        Sservice.UpdateStock(result);
                        break;
                    case "/PRICE":
                        if (args.Length > 1)
                            result = int.Parse(args[1]);
                        Sservice.UpdatePrice(result);
                        break;
                    case "/ORDER":
                        if (args.Length > 1)
                            result = int.Parse(args[1]);
                        Sservice.GetOrders(result);
                        break;
                    case "/UPLOAD":
                        logger.Info("Updating product information at " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        if (args.Length > 1)
                            result = int.Parse(args[1]);
                        Sservice.UploadProduct(result,false);
                        logger.Info("Finished at " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        break;
                    case "/ALL":
                        Sservice.GetProductImage();
                        Sservice.GetProducts();
                        Sservice.UploadProduct(result,true);
                        //Sservice.generateDuplicateTable();
                        break;
                    case "/IMAGE":
                        Sservice.GetProductImage();
                        break;
                    case "/PF":
                        logger.Info("Getting product filters at " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        Sservice.GetProductFilter();
                        logger.Info("Finished at " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        break;
                    case "/DELETE":
                        logger.Info("Deleting products at " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        Sservice.DeleteDuplicate();
                        logger.Info("Finished at " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                        break;
                    case "/MISSING":
                        Sservice.DeleteMissing();
                        break;
                    case "/WEBHOOK":
                        Sservice.CreateWebhook();
                        break;
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Stopped program because of exception");
                throw;
            }
            finally
            {
                LogManager.Shutdown();
            }            
        }