/// <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);
        }
Ejemplo n.º 3
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        /// <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));
            }
        }
Ejemplo n.º 7
0
        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);
                }
            }
        }
Ejemplo n.º 8
0
        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";
            }
        }
Ejemplo n.º 9
0
        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);
            }
        }