Ejemplo n.º 1
0
        public bool CreateProduct(ProductModel product, long categoryId, List<KeyValuePair<string, string>> attributeList )
        {
            var service = new ProductServicePortClient();
            var response = service.SaveProduct(new SaveProductRequest
                                {
                                    auth = this.ProductAuthentication,
                                    product = new ProductRequest
                                    {
                                        productSellerCode = StockCodeToSellerCode(product.stockCode),
                                        title = product.title,
                                        subtitle = product.label,
                                        description = product.details,
                                        price = product.displayPrice,
                                        //approvalStatus = "",
                                        attributes = attributeList.Where(x => !String.IsNullOrWhiteSpace(x.Value))
                                                                    .Select(x => new ProductAttributeRequest
                                                                    {
                                                                        name = x.Key,
                                                                        value = x.Value
                                                                    }).ToArray(),
                                        //attributes = new ProductAttributeRequest[]
                                        //            {
                                        //                new ProductAttributeRequest
                                        //                {
                                        //                    name = "",
                                        //                    value = ""
                                        //                }
                                        //            },
                                        category = new CategoryRequest
                                                   {
                                                       id = categoryId
                                                   },
                                        //discount = new ProductDiscountRequest(),
                                        //expirationDate = "",
                                        images = new ProductImage[]
                                                 {
                                                     new ProductImage
                                                     {
                                                         order = "1",
                                                         url = product.picture1Path
                                                     },
                                                 },
                                        preparingDay = "3",                             //////////////////////////////////////
                                        productCondition = "1", // Yeni
                                        //productionDate = "",
                                        //saleEndDate = "",
                                        //saleStartDate = "",
                                        shipmentTemplate = "Ürün Listeleme",
                                        stockItems = new ProductSkuRequest[]
                                                     {
                                                         new ProductSkuRequest
                                                         {
                                                             quantity = product.stockAmount.ToString(),
                                                             sellerStockCode = product.stockCode,
                                                         }
                                                     },

                                    }
                                });
            var result = response.result.status == "success";
            if (!result)
                response.GetType();
            return result;

            //var url = "https://api.n11.com/rest/secure/product/createOrUpdate.json";
            //var paramStr = String.Format("");
            //var paramObj = new JObject();
            //paramObj["productSellerCode"] = StockCodeToSellerCode(product.stockCode);
            //paramObj["title"] = product.title;
            //paramObj["subtitle"] = product.label;
            //paramObj["description"] = product.details;
            //paramObj["category"] = JObject.Parse("{ 'id' : " + categoryId.ToString() + " }");
            //paramObj["price"] = product.displayPrice;
            //paramObj["preparingDay"] = 3;
            //paramObj["productCondition"] = "1";   // Yeni ürün
            //paramObj["images"] = JArray.Parse("[ { 'url': '" + product.picture1Path + "', 'order': 1 }  ]");
            //paramObj["stockItem"] = JObject.Parse("{ 'quantity': " + product.stockAmount.ToString() + " }");
            //var attStr = attributeList.Select(x => "{ 'name': '" + x.Key + "', 'value': '" + x.Value + "' }")
            //                            .Aggregate((a, b) => a + ", " + b);
            //paramObj["attributes"] = JArray.Parse("[" + attStr + "]");
            //paramObj["stockItem"] = JObject.Parse("{ 'quantity': " + product.stockAmount.ToString() + ", 'attributes': [" + "" + "] }");

            //paramObj["shipmentTemplate"] = "Ürün Listeleme";

            //var obj = callPost(url, paramObj.ToString());

            return true;
        }
Ejemplo n.º 2
0
        public object GetProduct(string sellerCode)
        {
            var url = "https://api.n11.com/rest/secure/product/get.json";
            url += String.Format("?appkey={0}&appsecret={1}&sellerCode={2}", appKey, appSecret, StockCodeToSellerCode(sellerCode));

            var req = WebRequest.Create(url);
            req.ContentType = "text/plain";
            //req.Headers.Add("Accept", "application/json");
            var res = req.GetResponse();

            var st = new System.IO.StreamReader(res.GetResponseStream());
            var result = st.ReadToEnd();
            st.Close();

            var obj = JObject.Parse(result);

            var data = obj["response"]["data"] as JObject;

            if (data == null)
                return null;

            var prod = new ProductModel {
                id = (int) data["id"],
                title = (string) data["title"],
                subtitle = (string) data["subtitle"],
                stockCode = sellerCode,
                //productSellerCode = (string)x["productSellerCode"],
                //saleStatus = (string)x["saleStatus"],
                displayPrice = (decimal) data["displayPrice"],

            };

            return prod;
        }
Ejemplo n.º 3
0
        private void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            var i = 0;
            bgw1.ReportProgress(0, "Yeni ürünler kaydediliyor.");
            foreach (DataRow dr in newProductsTable.Rows)
            {
                i++;
                var percent = (int)Math.Round((double)(i * 100 / newProductsTable.Rows.Count));
                if (dr["n11Category"] == System.DBNull.Value || String.IsNullOrWhiteSpace(dr["n11Category"].ToString()))
                {
                    bgw1.ReportProgress(percent, String.Format("{0} için kategori seçilmedi.", dr["stockCode"]));
                    continue;
                }
                if (!rowAttributeTable.ContainsKey((string) dr["stockCode"]))
                {
                    bgw1.ReportProgress(percent, String.Format("{0} için özellikler seçilmedi.", dr["stockCode"]));
                    continue;
                }
                var prod = new ProductModel
                {
                    stockCode = (string) dr["stockCode"],
                    label = (string) dr["label"],
                    brand = (string) dr["brand"],
                    title = (string)dr["label"],
                    //dr["category"] = String.Format("{0} / {1} / {2}", sourceProd.mainCategory, sourceProd.category, sourceProd.subCategory);
                    displayPrice = (decimal) dr["price"],
                    stockAmount = (int) dr["stockAmount"],
                    picture1Path = (string) dr["picture1Path"],
                    details = (string) dr["details"]
                };
                //var catId = long.Parse(((string)dr["n11Category"]).Split('-')[0]);
                var catIdStr = ((string) dr["n11Category"]).Split('-')[0];
                //var cat = categoryTable[catId];
                var cat = categoryTable.Values.First(x => x.Code == catIdStr);
                var attList = rowAttributeTable[(string) dr["stockCode"]];

                var result = service.CreateProduct(prod, long.Parse(cat.Code), attList);
                if (result == false)
                {
                    result.GetType();
                }
                bgw1.ReportProgress(percent, String.Format("{0} / {1} ({2} %)", i, newProductsTable.Rows.Count, percent));
                if (bgw1.CancellationPending)
                    return;
            }

            i = 0;
            bgw1.ReportProgress(0, "Ürün fiyat ve stok miktarları güncelleniyor.");
            foreach (DataRow dr in updateProductsTable.Rows)
            {
                i++;
                var percent = (int)Math.Round((double)(i * 100 / updateProductsTable.Rows.Count));

                var stockCode = (string)dr["stockCode"];
                var oldPrice = (decimal) dr["oldPrice"];
                var newPrice = (decimal)dr["newPrice"];
                var oldStock = (int)dr["oldStock"];
                var newStock = (int)dr["newStock"];
                var diff = (decimal)dr["diff"];

                if (oldPrice != newPrice)
                {
                    // update price
                    if (diff > 10)
                        diff.GetType();
                    if (!service.UpdateProduct(stockCode, newPrice))
                        oldPrice.GetType();
                }

                if (oldStock != newStock)
                {
                    // update stock
                    service.UpdateProductStock(stockCode, newStock);
                }

                bgw1.ReportProgress(percent, String.Format("{0} / {1} ({2} %)", i, updateProductsTable.Rows.Count, percent));
            }

            i = 0;
            bgw1.ReportProgress(0, "N11deki eski ürünlerin stok bilgileri sıfırlanıyor.");
            foreach (DataRow dr in oldProductsTable.Rows)
            {
                i++;
                var percent = (int)Math.Round((double)(i * 100 / oldProductsTable.Rows.Count));

                var productStockCode = (string)dr["stockCode"];
                var productTitle = (string)dr["label"];

                if (productTitle.Contains("Timberland"))
                {
                    bgw1.ReportProgress(percent, String.Format("{0} / {1} ({2} %) {3} SIFIRLANMADI.", i, oldProductsTable.Rows.Count, percent, productTitle));
                    if (bgw1.CancellationPending)
                        return;
                    continue;
                }

                var sourceProd = sourceList.FirstOrDefault(x => productStockCode.Contains("_" + x.stockCode + "_"));
                if (sourceProd == null)
                {
                    // Remove
                    service.RemoveProduct(productStockCode);
                    bgw1.ReportProgress(percent, String.Format("{0} / {1} ({2} %)", i, oldProductsTable.Rows.Count, percent));
                    Debug.WriteLine("{0} sıfırlandı\t{1}\t{2}", i, productStockCode, productTitle);
                }
                else
                {
                    bgw1.ReportProgress(percent, String.Format("{0} / {1} ({2} %) Ürün ES'de mevcut, sıfırlanmıyor.", i, oldProductsTable.Rows.Count, percent));
                    sourceProd.GetType();
                }

                if (bgw1.CancellationPending)
                    return;
            }

            bgw1.ReportProgress(100, "Bitti");
        }