private static string BuildEbayLineSql(EbayOrderLineType eolType) { string sql = @"INSERT INTO [dbo].[EbayOrderLine] ([OrderID],[BuyerEmail],[BuyerFirstName],[BuyerLastName] ,[CreatedDate],[ExtendedOrderID],[FinalValueFee],[Gift] ,[GiftMessage],[InventoryReservationID] ,[InvoiceSentTime],[ItemID],[OrderLineItemID],[PrivateNotes] ,[Site],[LineID],[QuantityPurchased],[SKU],[VariationSKU] ,[VariationNameValueList],[Title] ,[VariationTitle],[TransactionID] ,[TransactionPrice],[EnterDate],[Updatedate]) VALUES ('" + eolType.OrderID + "','" + eolType.BuyerEmail + "','" + eolType.BuyerFirstName + "','" + eolType.BuyerLastName + "','" + eolType.CreatedDate + "','" + eolType.ExtendedOrderID + "','" + eolType.FinalValueFee + "','" + eolType.Gift + "','" + eolType.GiftMessage + "','" + eolType.InventoryReservationID + "','" + eolType.InvoiceSentTime + "','" + eolType.ItemID + "','" + eolType.OrderLineItemID + "','" + eolType.PrivateNotes + "','" + eolType.Site + "','" + eolType.LineID + "','" + eolType.QuantityPurchased + "','" + eolType.SKU + "','" + eolType.VariationSKU + "','" + eolType.VariationNameValueList + "','" + eolType.Title + "','" + eolType.VariationTitle + "','" + eolType.TransactionID + "','" + eolType.TransactionPrice + "','" + eolType.EnterDate + "','" + eolType.Updatedate + "')"; return(sql); }
public static List<EbayOrderType> GetOrderFromEbay(string token,string accountNum) { string senderEmail = ConfigurationManager.AppSettings["senderEmail"]; string messageFromPassword= ConfigurationManager.AppSettings["messageFromPassword"]; string messageToEmail = ConfigurationManager.AppSettings["messageToEmail"]; string smtpClient = ConfigurationManager.AppSettings["smtpClient"]; int smtpPortNum = ConvertUtility.ToInt(ConfigurationManager.AppSettings["smtpPortNum"]); List<EbayOrderType> OrderList = new List<EbayOrderType>(); ApiContext context = new ApiContext(); context.ApiCredential.eBayToken = token; context.SoapApiServerUrl = "https://api.ebay.com/wsapi"; context.Site = SiteCodeType.US; DateTime createTimeFrom, createTimeTo; GetOrdersCall GetOrderCall = new GetOrdersCall(context); GetOrderCall.DetailLevelList = new DetailLevelCodeTypeCollection(); GetOrderCall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); createTimeFrom = DateTime.Now.AddDays(-15).ToUniversalTime(); createTimeTo = DateTime.Now.ToUniversalTime(); int pageNumber = 1; int errorCount = 0; GetOrderCall.CreateTimeFrom = createTimeFrom; GetOrderCall.CreateTimeTo = createTimeTo; GetOrderCall.OrderStatus = OrderStatusCodeType.Completed; while (pageNumber<100) { try { PaginationType pagination = new PaginationType(); pagination.EntriesPerPage = 100; GetOrderCall.Pagination = pagination; pagination.PageNumber = pageNumber; GetOrderCall.Execute(); int totalPageNumber = GetOrderCall.PaginationResult.TotalNumberOfPages; if (pageNumber > totalPageNumber) { break; } else { if (GetOrderCall.ApiResponse.Ack != AckCodeType.Failure) { if (GetOrderCall.ApiResponse.OrderArray.Count != 0) { foreach (OrderType orderType in GetOrderCall.ApiResponse.OrderArray) { try { EbayOrderType ebayOrderType = new EbayOrderType(); string orderId = orderType.OrderID; DataRow checkDuplidatedDr = Db.Db.CheckDuplicatedOrderID(orderId); if (checkDuplidatedDr!=null) { if(checkDuplidatedDr["OrderStatus"].ToString() == "Completed") { continue; // continue if order already exist } else { Db.Db.DeleteUncompletedEbayOrder(orderId); } } else { EbayOrderHeaderType ebayOrderHeaderType = AddOrderHeader(orderType);//add header info foreach (ExternalTransactionType externalTransactionType in orderType.ExternalTransaction)//add external trasnaction info { EbayOrderPaymentTransactionType ebayOrderPaymentTransactionType = AddOrderPaymentTransaction(orderId, externalTransactionType); ebayOrderType.paymentTransaction.Add(ebayOrderPaymentTransactionType); } ebayOrderType.Header = ebayOrderHeaderType; int lineId = 0; foreach (TransactionType transactionType in orderType.TransactionArray)//add line info { lineId = lineId + 1; EbayOrderLineType ebayOrderLineType = AddOrderLine(orderId, transactionType, lineId); ebayOrderType.Line.Add(ebayOrderLineType); } OrderList.Add(ebayOrderType); } } catch(Exception ex) { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.CatchMethod(ex, accountNum + ": GetOrderCall--foreach ", ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); continue; //continue next single order if current order error } } } else { continue; // continue next account if no order } } else { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.ErrorWarningMethod("AckCodeType Failure: " + accountNum, "AckCodeType Failure: " + accountNum, senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); continue; // continue next account if ack error } } pageNumber = pageNumber + 1; } catch (Exception ex) { if (errorCount > 4) { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.CatchMethod(ex,accountNum+ ": While ",ex.Message.ToString(),senderEmail,messageFromPassword,messageToEmail,smtpClient,smtpPortNum); break; } else { errorCount = errorCount + 1; continue; // continue try if error less 4 times } } } return OrderList; }
private static EbayOrderLineType AddOrderLine(string orderID, TransactionType transactionType,int lineId) { EbayOrderLineType ebayOrderLineType = new EbayOrderLineType(); ebayOrderLineType.OrderID = orderID; ebayOrderLineType.BuyerEmail = transactionType.Buyer.Email == null ? "" : transactionType.Buyer.Email.ToString().Replace("'", "''"); ebayOrderLineType.BuyerFirstName = transactionType.Buyer.UserFirstName == null ? "" : transactionType.Buyer.UserFirstName.ToString().Replace("'", "''"); ebayOrderLineType.BuyerLastName = transactionType.Buyer.UserLastName==null?"":transactionType.Buyer.UserLastName.ToString().Replace("'", "''"); if (transactionType.CreatedDate.ToLocalTime() <= ConvertUtility.ToDateTime("1901-01-01 00:00:00")) { ebayOrderLineType.CreatedDate = (DateTime)SqlDateTime.MinValue; } else { ebayOrderLineType.CreatedDate = transactionType.CreatedDate.ToLocalTime(); } ebayOrderLineType.ExtendedOrderID = transactionType.ExtendedOrderID == null ? "" : transactionType.ExtendedOrderID.ToString(); ebayOrderLineType.FinalValueFee = transactionType.FinalValueFee == null ? 0 : transactionType.FinalValueFee.Value; ebayOrderLineType.Gift = transactionType.Gift == true ? 1 : 0; ebayOrderLineType.GiftMessage = transactionType.GiftSummary==null?"":transactionType.GiftSummary.Message.ToString().Replace("'", "''"); ebayOrderLineType.InventoryReservationID = transactionType.InventoryReservationID == null ? "" : transactionType.InventoryReservationID.ToString(); if (transactionType.InvoiceSentTime.ToLocalTime() <= ConvertUtility.ToDateTime("1901-01-01 00:00:00")) { ebayOrderLineType.InvoiceSentTime = (DateTime)SqlDateTime.MinValue; } else { ebayOrderLineType.InvoiceSentTime = transactionType.InvoiceSentTime.ToLocalTime(); } ebayOrderLineType.ItemID = transactionType.Item.ItemID == null ? "": transactionType.Item.ItemID.ToString(); ebayOrderLineType.OrderLineItemID = transactionType.OrderLineItemID == null ? "" : transactionType.OrderLineItemID.ToString(); ebayOrderLineType.PrivateNotes = transactionType.Item.PrivateNotes==null?"":transactionType.Item.PrivateNotes.ToString().Replace("'", "''"); ebayOrderLineType.Site = transactionType.Item.Site.ToString().Replace("'", "''"); ebayOrderLineType.LineID = lineId; ebayOrderLineType.QuantityPurchased = transactionType.QuantityPurchased; ebayOrderLineType.SKU = transactionType.Item.SKU == null ? "" : transactionType.Item.SKU.ToString(); if (transactionType.Variation == null) { ebayOrderLineType.VariationSKU = ""; ebayOrderLineType.VariationNameValueList = ""; ebayOrderLineType.VariationTitle = ""; } else { ebayOrderLineType.VariationSKU = transactionType.Variation.SKU == null ? "" : transactionType.Variation.SKU.ToString().Replace("'", "''"); string variationNameValueList = ""; foreach (NameValueListType nameValueListType in transactionType.Variation.VariationSpecifics) { variationNameValueList = variationNameValueList+nameValueListType.Name.ToString().Replace("'", "''") + ":"; foreach (string value in nameValueListType.Value) { variationNameValueList = variationNameValueList+value.ToString().Replace("'", "''") + ";"; } } ebayOrderLineType.VariationNameValueList = variationNameValueList; ebayOrderLineType.VariationTitle = transactionType.Variation.VariationTitle == null ? "" : transactionType.Variation.VariationTitle.ToString().Replace("'", "''"); } ebayOrderLineType.Title = transactionType.Item.Title == null ? "" : transactionType.Item.Title.ToString().Replace("'", "''"); ebayOrderLineType.TransactionID = transactionType.TransactionID == null ? "" : transactionType.TransactionID.ToString(); ebayOrderLineType.TransactionPrice = transactionType.TransactionPrice == null ? 0 : transactionType.TransactionPrice.Value; ebayOrderLineType.EnterDate = System.DateTime.Now; ebayOrderLineType.Updatedate = System.DateTime.Now; return ebayOrderLineType; }