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); }
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"; } }