/// <summary> /// Handles the fetched user's data. /// </summary> /// <param name="command">The command.</param> public void Handle(EbayGetUserData3dPartyCommandResponse command) { int marketPlaceUpdatingHistoryId = -1; if (!command.HasErrors) { int marketPlaceId = (int)command.Payload[MarketplaceId]; marketPlaceUpdatingHistoryId = (int)command.Payload[MarketPlaceUpdatingHistoryId]; int customerId = (int)command.Payload[CustomerId]; command.EbayUserAccountData.CustomerMarketPlaceId = marketPlaceId; command.EbayUserAccountData.CustomerMarketPlaceUpdatingHistoryRecordId = marketPlaceUpdatingHistoryId; command.EbayUserData.CustomerMarketPlaceId = marketPlaceId; command.EbayUserData.CustomerMarketPlaceUpdatingHistoryRecordId = marketPlaceUpdatingHistoryId; bool isOk = EbayQueries.SaveUserData(command.EbayUserData, command.EbayUserRegistrationAddressData, command.EbayUserSellerPaymentAddressData); if (isOk) { isOk = EbayQueries.SaveUserAccounts(command.EbayUserAccountData, command.AdditionalUserAccounts); } if (isOk) { isOk = EbayQueries.SaveFeedbacks(command.EbayFeedback, command.EbayFeedbackItems, command.EbayRatings); } if (isOk) { EbayOrder order = new EbayOrder { Created = DateTime.UtcNow, //TODO: check it out CustomerMarketPlaceId = marketPlaceId, CustomerMarketPlaceUpdatingHistoryRecordId = marketPlaceUpdatingHistoryId }; isOk = EbayQueries.SaveOrders(order, command.EbayOrders); } if (isOk) { ReplyToOrigin(command, resp => resp.IsAccountValid = true); } else { ReplyToOrigin(command, resp => { resp.IsAccountValid = true; //if we got here account is valid resp.Errors = new[] { "could not save account data" }; }); } } var updatingHistory = MarketPlaceQueries.GetMarketPlaceUpdatingHistoryById(marketPlaceUpdatingHistoryId); updatingHistory.UpdatingEnd = DateTime.UtcNow; MarketPlaceQueries.UpsertMarketPlaceUpdatingHistory(updatingHistory); }
/// <summary> /// Adds an order /// </summary> /// <param name="obj">Get Order Response model </param> /// <returns>Ebay Order Entity</returns> public EbayOrder AddOrder(GetOrderResponseModel obj) { var o = _orderRepo.FindOne(x => x.OrderId == obj.orderId) as EbayOrder; if (o != null) { return(o); } var entity = new EbayOrder { LegacyOrderId = obj.legacyOrderId, SalesRecordReference = obj.salesRecordReference, OrderId = obj.orderId, OrderDate = obj.creationDate, BuyerUsername = obj.buyer.username, Subtotal = obj.pricingSummary.priceSubtotal.ToDecimal(), Shipping = obj.pricingSummary.deliveryCost.ToDecimal() - obj.pricingSummary.deliveryDiscount?.ToDecimal() ?? 0, Deductions = obj.pricingSummary.priceDiscount?.ToDecimal() ?? 0, ExtraCosts = obj.pricingSummary.adjustment?.ToDecimal() ?? 0, GrandTotal = obj.pricingSummary.total?.ToDecimal() ?? 0, Status = obj.cancelStatus.cancelState != "NONE_REQUESTED" ? OrderStatus.Cancelled : obj.orderFulfillmentStatus == "NOT_STARTED" ? OrderStatus.InProgress : OrderStatus.Complete }; if (obj.fulfillmentStartInstructions != null && obj.fulfillmentStartInstructions.Any() && obj.fulfillmentStartInstructions?[0].shippingStep?.shipTo != null) { entity.BuyerName = obj.fulfillmentStartInstructions?[0].shippingStep.shipTo.fullName; entity.BuyerEmail = obj.fulfillmentStartInstructions?[0].shippingStep.shipTo.email; } var items = obj.lineItems.Select(x => new EbayOrderItem { Order = entity, LineItemId = x.lineItemId, LegacyItemId = x.legacyItemId, LegacyVariationId = x.legacyVariationId ?? "0", SKU = x.sku, Image = "", CharacterName = "", Name = x.title, Quantity = x.quantity, UnitPrice = x.lineItemCost.ToDecimal() }).ToList(); entity = _orderRepo.AddOrderWithItems(entity, items); return(_orderRepo.FindOne(x => x.Id == entity.Id) as EbayOrder); }
private void RemoveParentOrder(OrderType orderDto) { if (orderDto.TransactionArray.Count > 1) { var orderItems = orderDto.TransactionArray.ToArray().Select(p => p.OrderLineItemID).ToList(); foreach (string orderItemID in orderItems) { EbayOrder order = _dataContext.EbayOrders.SingleOrDefault(p => p.MarketplaceID == _marketplace.ID && p.Code.Equals(orderItemID)); if (order != null) { _dataContext.EbayOrders.DeleteObject(order); } } } }
private EbayOrderItem CreateOrderItem(EbayOrder order, TransactionType orderItemDto) { EbayOrderItem orderItem = new EbayOrderItem(); string sku = orderItemDto.Variation == null ? orderItemDto.Item.SKU : orderItemDto.Variation.SKU; string listingID = orderItemDto.Item.ItemID; EbayListing listing = _marketplace.Listings.Single(p => p.Code.Equals(listingID)); orderItem.ListingItem = listing.ListingItems.Single(p => p.Sku.Equals(sku)); orderItem.Order = order; orderItem.CreatedDate = orderItemDto.CreatedDate; orderItem.Code = orderItemDto.OrderLineItemID; return(orderItem); }
public EbayOrder AddOrderWithItems(EbayOrder orderEntity, List <EbayOrderItem> orderItemEntities) { orderEntity = _ctx.EbayOrders.Add(orderEntity); foreach (var item in orderItemEntities) { if (item.Part != null) { item.Part = _ctx.PartInventorys.Attach(item.Part); } _ctx.EbayOrderItems.Add(item); } _ctx.SaveChanges(); return(orderEntity); }
/// <summary> /// Saves the orders. /// </summary> /// <param name="order">The order.</param> /// <param name="orderInfos">The order infos.</param> /// <returns></returns> public bool SaveOrders(EbayOrder order, IEnumerable <EbayOrderInfo> orderInfos) { using (var sqlConnection = GetOpenedSqlConnection2()) { Optional <SqlCommand> cmd = GetInsertCommand(order, sqlConnection.SqlConnection(), "MP_EbayOrder", "Id"); if (!cmd.HasValue) { return(false); } int orderId; using (var sqlCommand = cmd.GetValue()) { var res = ExecuteScalarAndLog <int>(sqlCommand); if (!res.HasValue || res.GetValue() < 1) { return(false); } orderId = res.GetValue(); } return(SaveOrderItems(orderInfos, orderId)); } }
private void ProcessOrders(ERPContext context, string accountName, List <Order> orders, List <EbayOrderdetail> orderDetails) { foreach (Order order in orders) { try { if (order.OrderStatus == "Unshipped" || order.OrderStatus == "PartiallyShipped") { var q = from ebayOrder in context.EbayOrder where ebayOrder.EbayOrdersn == order.AmazonOrderId select ebayOrder; if (q.Count() == 0) { EbayOrder ebayOrder = new EbayOrder(); ebayOrder.EbayOrdersn = order.AmazonOrderId; ebayOrder.Recordnumber = order.AmazonOrderId; ebayOrder.EbayCreatedtime = Convert.ToInt32(order.PurchaseDate.ToUniversalTime().Subtract(new DateTime(1970, 1, 1)).TotalSeconds); ebayOrder.EbayPaidtime = ebayOrder.EbayCreatedtime.ToString(); ebayOrder.EbayUserid = order.BuyerName; ebayOrder.EbayUsername = order.ShippingAddress.Name; ebayOrder.EbayUsermail = order.BuyerEmail; ebayOrder.EbayPhone = order.ShippingAddress.Phone; ebayOrder.EbayStreet = order.ShippingAddress.AddressLine1; ebayOrder.EbayStreet1 = order.ShippingAddress.AddressLine2; ebayOrder.EbayCity = order.ShippingAddress.City; ebayOrder.EbayState = order.ShippingAddress.StateOrRegion; ebayOrder.EbayCouny = order.ShippingAddress.CountryCode; if (ebayOrder.EbayCouny == "US") { ebayOrder.EbayCountryname = "United States"; } ebayOrder.EbayPostcode = order.ShippingAddress.PostalCode; ebayOrder.EbayCurrency = order.OrderTotal.CurrencyCode; ebayOrder.EbayTotal = Convert.ToDouble(order.OrderTotal.Amount); ebayOrder.EbayStatus = 1; ebayOrder.EbayUser = "******"; ebayOrder.EbayAccount = accountName; ebayOrder.Status = "0"; ebayOrder.EbayCarrier2 = ""; ebayOrder.EbayTracknumber2 = ""; ebayOrder.IsYichang = "0"; ebayOrder.Ishide = 0; ebayOrder.EbayCombine = "0"; m_logger.Info("Proccess Amazon order " + ebayOrder.EbayUsername); ListOrderItemsRequest listOrderItemsRequest = new ListOrderItemsRequest(); listOrderItemsRequest.SellerId = sellerIdDictionary[accountName]; listOrderItemsRequest.MWSAuthToken = mwsAuthTokenDictionary[accountName]; listOrderItemsRequest.AmazonOrderId = order.AmazonOrderId; int retryCount = 0; ListOrderItemsResponse itemResponse = null; while (retryCount <= m_maxRetry && itemResponse == null) { if (retryCount > 0) { Thread.Sleep(TimeSpan.FromSeconds(retryCount * 2)); } try { itemResponse = client.ListOrderItems(listOrderItemsRequest); } catch (Exception e) { if (retryCount >= m_maxRetry) { throw e; } retryCount++; } } int i = 0; foreach (OrderItem orderItem in itemResponse.ListOrderItemsResult.OrderItems) { EbayOrderdetail orderDetail = new EbayOrderdetail(); orderDetail.EbayOrdersn = order.AmazonOrderId; if (i > 0) { orderDetail.Recordnumber = order.AmazonOrderId + i.ToString(); } else { orderDetail.Recordnumber = order.AmazonOrderId; } orderDetail.EbayItemid = orderItem.OrderItemId; orderDetail.EbayItemtitle = orderItem.Title; orderDetail.Sku = orderItem.SellerSKU; if (orderItem.ItemPrice != null) { orderDetail.EbayItemprice = (Convert.ToDouble(orderItem.ItemPrice.Amount) / Convert.ToInt32(orderItem.QuantityOrdered)).ToString(); } else { orderDetail.EbayItemprice = "0.0"; } orderDetail.EbayAmount = orderItem.QuantityOrdered.ToString(); orderDetail.EbayUser = "******"; orderDetail.Shipingfee = orderItem.ShippingPrice.Amount; orderDetail.EbayAccount = accountName; orderDetail.Istrue = 1; context.EbayOrderdetail.Add(orderDetail); orderDetails.Add(orderDetail); m_logger.Info(orderItem.SellerSKU + "," + orderItem.QuantityOrdered.ToString()); i++; } context.EbayOrder.Add(ebayOrder); } } } catch (Exception e) { m_logger.Error(e.Message); } } }
private void PersistOrder(OrderType orderDto) { EbayOrder order = _dataContext.EbayOrders.SingleOrDefault(p => p.Code.Equals(orderDto.OrderID) && p.MarketplaceID == _marketplace.ID); if (order == null) { order = new EbayOrder(); order.Code = orderDto.OrderID; order.MarketplaceID = _marketplace.ID; order.CreatedTime = orderDto.CreatedTime; } order.BuyerID = orderDto.BuyerUserID; order.OrderStatus = orderDto.OrderStatus.ToString(); order.SalesRecordNumber = orderDto.ShippingDetails.SellingManagerSalesRecordNumber.ToString(); order.EbayPaymentStatus = orderDto.CheckoutStatus.eBayPaymentStatus.ToString(); order.CheckoutStatus = orderDto.CheckoutStatus.Status.ToString(); order.PaymentMethod = orderDto.CheckoutStatus.PaymentMethod.ToString(); order.PaidTime = orderDto.PaidTimeSpecified ? (DateTime?)orderDto.PaidTime : null; order.ShippedTime = orderDto.ShippedTimeSpecified ? (DateTime?)orderDto.ShippedTime : null; order.PaidAmount = Convert.ToDecimal(orderDto.AmountPaid.Value); order.CompanyName = orderDto.ShippingAddress.CompanyName; order.Street1 = orderDto.ShippingAddress.Street1; order.Street2 = orderDto.ShippingAddress.Street2; order.CityName = orderDto.ShippingAddress.CityName; order.StateOrProvince = orderDto.ShippingAddress.StateOrProvince; order.PostalCode = orderDto.ShippingAddress.PostalCode; order.CountryCode = orderDto.ShippingAddress.Country.ToString(); order.CountryName = orderDto.ShippingAddress.CountryName; order.UserName = orderDto.ShippingAddress.Name; order.Phone = orderDto.ShippingAddress.Phone; order.Subtotal = Convert.ToDecimal(orderDto.Subtotal.Value); order.AdjustmentAmount = Convert.ToDecimal(orderDto.AdjustmentAmount.Value); order.Total = Convert.ToDecimal(orderDto.Total.Value); order.ShippingService = orderDto.ShippingServiceSelected != null ? orderDto.ShippingServiceSelected.ShippingService : "N/A"; order.ExpeditedService = orderDto.ShippingServiceSelected != null && orderDto.ShippingServiceSelected.ExpeditedServiceSpecified ? orderDto.ShippingServiceSelected.ExpeditedService : order.ExpeditedService; order.ShippingInsuranceCost = orderDto.ShippingServiceSelected.ShippingInsuranceCost != null? Convert.ToDecimal(orderDto.ShippingServiceSelected.ShippingInsuranceCost.Value) : 0; order.ShippingServiceCost = orderDto.ShippingServiceSelected.ShippingServiceCost != null? Convert.ToDecimal(orderDto.ShippingServiceSelected.ShippingServiceCost.Value) : 0; order.ShippingServiceAdditionalCost = orderDto.ShippingServiceSelected.ShippingServiceAdditionalCost != null? Convert.ToDecimal(orderDto.ShippingServiceSelected.ShippingServiceAdditionalCost.Value) : 0; order.ShippingSurcharge = orderDto.ShippingServiceSelected.ShippingSurcharge != null? Convert.ToDecimal(orderDto.ShippingServiceSelected.ShippingSurcharge.Value) : 0; order.LastSyncTime = DateTime.UtcNow; foreach (TransactionType orderItemDto in orderDto.TransactionArray) { EbayOrderItem orderItem = order.OrderItems.SingleOrDefault(p => p.Code.Equals(orderItemDto.OrderLineItemID)); if (orderItem == null) { orderItem = CreateOrderItem(order, orderItemDto); } orderItem.TransactionPrice = orderItemDto.TransactionPrice != null?decimal.Parse(orderItemDto.TransactionPrice.Value.ToString()) : orderItem.TransactionPrice; orderItem.QuantityPurchased = orderItemDto.QuantityPurchased; orderItem.UnpaidItemDisputeStatus = orderItemDto.UnpaidItem != null?orderItemDto.UnpaidItem.Status.ToString() : "N/A"; orderItem.UnpaidItemDisputeType = orderItemDto.UnpaidItem != null?orderItemDto.UnpaidItem.Type.ToString() : "N/A"; } }
private void fnGrabarOrder(OrderType order) { bool nuevo = false; ApplicationDbContextSql dbContext = new ApplicationDbContextSql(); EbayOrder ebayOrder; ebayOrder = dbContext.EbayOrder.Where(w => w.OrderID == order.OrderID).FirstOrDefault(); if (ebayOrder == null) { ebayOrder = new EbayOrder(); nuevo = true; } Debug.WriteLine(order.BuyerUserID); ebayOrder.AmountPaid = (decimal)order.AmountPaid.Value; ebayOrder.AmountSaved = (decimal)order.AmountSaved.Value; ebayOrder.BuyerCheckoutMessage = order.BuyerCheckoutMessage; ebayOrder.BuyerUserID = order.BuyerUserID; if (order.CancelStatusSpecified) { ebayOrder.CancelStatus = order.CancelStatus.ToString(); } ebayOrder.checkoutStatus = new CheckoutStatus(); if (order.CheckoutStatus.LastModifiedTimeSpecified) { ebayOrder.checkoutStatus.LastModifiedTime = order.CheckoutStatus.LastModifiedTime; } if (order.CheckoutStatus.PaymentMethodSpecified) { ebayOrder.checkoutStatus.PaymentMethod = order.CheckoutStatus.PaymentMethod.ToString(); } if (order.CheckoutStatus.StatusSpecified) { ebayOrder.checkoutStatus.Status = order.CheckoutStatus.Status.ToString(); } if (order.CreatedTimeSpecified) { ebayOrder.CreatedTime = order.CreatedTime; } ebayOrder.OrderID = order.OrderID; if (order.OrderStatusSpecified) { ebayOrder.OrderStatus = order.OrderStatus.ToString(); } if (order.PaidTimeSpecified) { ebayOrder.PaidTime = order.PaidTime; } if (order.PaymentHoldStatusSpecified) { ebayOrder.PaymentHoldStatus = order.PaymentHoldStatus.ToString(); } ebayOrder.SellerUserID = order.SellerUserID; if (order.ShippedTimeSpecified) { ebayOrder.ShippedTime = order.ShippedTime; } ebayOrder.shippingAddress = new ShippingAddress(); ebayOrder.shippingAddress.AddressID = order.ShippingAddress.AddressID; ebayOrder.shippingAddress.CityName = order.ShippingAddress.CityName; ebayOrder.shippingAddress.CompanyName = order.ShippingAddress.CompanyName; ebayOrder.shippingAddress.Country = order.ShippingAddress.Country.ToString(); ebayOrder.shippingAddress.CountryName = order.ShippingAddress.CountryName; ebayOrder.shippingAddress.FirstName = order.ShippingAddress.FirstName; ebayOrder.shippingAddress.LastName = order.ShippingAddress.LastName; ebayOrder.shippingAddress.Name = order.ShippingAddress.Name; ebayOrder.shippingAddress.Phone = order.ShippingAddress.Phone; ebayOrder.shippingAddress.Phone2 = order.ShippingAddress.Phone2; ebayOrder.shippingAddress.PostalCode = order.ShippingAddress.PostalCode; ebayOrder.shippingAddress.StateOrProvince = order.ShippingAddress.StateOrProvince; ebayOrder.shippingAddress.Street = order.ShippingAddress.Street; ebayOrder.shippingAddress.Street1 = order.ShippingAddress.Street1; ebayOrder.shippingAddress.Street2 = order.ShippingAddress.Street2; ebayOrder.shippingDetails = new ShippingDetails(); ebayOrder.shippingDetails.SellingManagerSalesRecordNumber = order.ShippingDetails.SellingManagerSalesRecordNumber; ebayOrder.shippingServiceSelected = new ShippingServiceSelected(); if (order.ShippingServiceSelected.ExpeditedServiceSpecified) { ebayOrder.shippingServiceSelected.ExpeditedService = order.ShippingServiceSelected.ExpeditedService; } if (order.ShippingServiceSelected.FreeShippingSpecified) { ebayOrder.shippingServiceSelected.FreeShipping = order.ShippingServiceSelected.FreeShipping; } ebayOrder.shippingServiceSelected.ShippingService = order.ShippingServiceSelected.ShippingService; if (order.ShippingServiceSelected.ShippingServiceAdditionalCost != null) { ebayOrder.shippingServiceSelected.ShippingServiceAdditionalCost = (decimal)order.ShippingServiceSelected.ShippingServiceAdditionalCost.Value; } if (order.ShippingServiceSelected.ShippingServiceCost != null) { ebayOrder.shippingServiceSelected.ShippingServiceCost = (decimal)order.ShippingServiceSelected.ShippingServiceCost.Value; } ebayOrder.Subtotal = (decimal)order.Subtotal.Value; ebayOrder.Total = (decimal)order.Total.Value; // ebayOrder.externalTransaction.ExternalTransactionID = order.ExternalTransaction[0].ExternalTransactionID; ebayOrder.externalTransaction = new ExternalTransaction(); if (order.ExternalTransaction.Count > 0) { ebayOrder.externalTransaction.ExternalTransactionStatus = order.ExternalTransaction[0].ExternalTransactionStatus.ToString(); ebayOrder.externalTransaction.ExternalTransactionTime = order.ExternalTransaction[0].ExternalTransactionTime; ebayOrder.externalTransaction.FeeOrCreditAmount = (decimal)order.ExternalTransaction[0].FeeOrCreditAmount.Value; ebayOrder.externalTransaction.PaymentOrRefundAmount = (decimal)order.ExternalTransaction[0].PaymentOrRefundAmount.Value; } if (nuevo) { dbContext.EbayOrder.Add(ebayOrder); } dbContext.SaveChanges(); // { "No se puede convertir un objeto de tipo 'eBay.Service.Core.Soap.TransactionType' al tipo 'MyEntityModel.EbayOrderLinea'."} foreach (TransactionType ebayOrderLinea in order.TransactionArray) { fnGrabarOrderLinea(ebayOrderLinea); } }