//push a single item to remote server private bool DoPush(Batch batch, DataItemPush item) { try { string result = Post(_url_push, new NameValueCollection() { {"secret_code", ConfigManager.Current.RemoteSecretKey}, {"sku", item.SKU.ToString()}, {"product_name", item.ProductName.ToString()}, {"description", item.Description.ToString()}, {"url", item.Url.ToString()}, {"original_url", item.OriginalUrl.ToString()}, {"image_url", item.ImageUrl.ToString()}, {"price", item.Price.ToString("#.##")}, {"delivery_cost", item.DeliveryCost.ToString()}, {"currency_code", item.CurrencyCode.ToString()}, {"brand", item.Brand.ToString()}, {"colour", item.Colour.ToString()}, {"gender", item.Gender.ToString()}, {"size", item.Size.ToString()}, {"mid", batch.Merchant.MerchantID.ToString()} }); if (result == "OK"){ return true; } else{ int trimLength = 100; if (result.Length < 100) { trimLength = result.Length; } Console.WriteLine("RemotePush.DoPush seems good, SKU: " + item.SKU + ", but remote server return: " + result.Substring(0, trimLength)); //truncate to up to 100 characters error return false; } } catch (Exception ex) { Console.WriteLine("RemotePush.DoPush has failed: " + ex.ToString()); return false; } }
//get list of data that ready to be pushed public List<DataItemPush> GetDataForPush(int batchId) { Console.WriteLine("DatabaseManager.GetDataForPush - read data for push"); List<DataItemPush> result = new List<DataItemPush>(); string sql = "Select PushId, BatchId, SKU, ProductName, Description, Url, OriginalUrl, ImageUrl, Price, DeliveryCost, " + "CurrencyCode, Brand, Colour, Gender, Size " + "From FeedChangePush where BatchId = " + batchId + " And DatePushed is Null"; SqlCommand cmd = new SqlCommand(sql, sqlConn); cmd.CommandType = CommandType.Text; try { using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (reader.Read()) { DataItemPush item = new DataItemPush(); item.PushId = (int)reader["PushId"]; item.BatchId = batchId; item.SKU = reader["SKU"].ToString(); item.ProductName = reader["ProductName"].ToString(); item.Description = reader["Description"].ToString(); item.Url = reader["Url"].ToString(); item.OriginalUrl = reader["OriginalUrl"].ToString(); item.ImageUrl = reader["ImageUrl"].ToString(); item.Price = (decimal)reader["Price"]; item.DeliveryCost = reader["DeliveryCost"].ToString(); item.CurrencyCode = reader["CurrencyCode"].ToString(); item.Brand = reader["Brand"].ToString(); item.Colour = reader["Colour"].ToString(); item.Gender = reader["Gender"].ToString(); item.Size = reader["Size"].ToString(); result.Add(item); } reader.Close(); } } catch (Exception ex) { Console.WriteLine("DatabaseManager.GetDataForPush is failed at BatchId: " + batchId.ToString() + " - " + ex.ToString()); } Console.WriteLine("DatabaseManager.GetDataForPush - Number of push items: " + result.Count.ToString()); return result; }