コード例 #1
0
        }         // constructor

        public static IEnumerable <string> GetTopSealedProductItems(EbayDatabaseOrdersList orders, int countTopItems = 10)
        {
            return(orders.AsParallel().Where(o => o.TransactionData != null)
                   .SelectMany(o => o.TransactionData)
                   .GroupBy(tr => tr.ItemID, (key, group) => new { ItemId = key, Sum = group.Sum(t => t.QuantityPurchased) })
                   .OrderByDescending(x => x.Sum)
                   .Take(countTopItems)
                   .Where(a => a.ItemId != null).Select(a => a.ItemId).ToList());
        }         // GetTopSealedProductItems
コード例 #2
0
        public EbayDatabaseOrdersList GetAllEBayOrders(DateTime submittedDate, IDatabaseCustomerMarketPlace databaseCustomerMarketPlace)
        {
            var orders = new EbayDatabaseOrdersList(submittedDate);

            var dbOrders = _MP_EbayOrderRepository.GetOrdersItemsByMakretplaceId(databaseCustomerMarketPlace.Id);

            orders.AddRange(dbOrders.Select(o =>
            {
                EBayOrderStatusCodeType orderStatus;
                Enum.TryParse(o.OrderStatus, out orderStatus);
                return(new EbayDatabaseOrderItem
                {
                    PaymentMethod = o.PaymentMethod,
                    AmountPaid = _CurrencyConvertor.ConvertToBaseCurrency(o.AmountPaid, o.CreatedTime),
                    OrderStatus = orderStatus,
                    PaymentHoldStatus = o.PaymentHoldStatus,
                    ShippingAddressData = Convert(o.ShippingAddress),
                    BuyerName = o.BuyerName,
                    CheckoutStatus = o.CheckoutStatus,
                    PaymentMethods = o.PaymentMethod,
                    SubTotal = _CurrencyConvertor.ConvertToBaseCurrency(o.SubTotal, o.CreatedTime),
                    Total = _CurrencyConvertor.ConvertToBaseCurrency(o.Total, o.CreatedTime),
                    AdjustmentAmount = _CurrencyConvertor.ConvertToBaseCurrency(o.AdjustmentAmount, o.CreatedTime),
                    PaymentTime = o.PaymentTime,
                    TransactionData = new EbayDatabaseTransactionDataList(o.Transactions.Select(t => new EbayDatabaseTransactionDataItem
                    {
                        CreatedDate = t.CreatedDate,
                        PaymentHoldStatus = t.PaymentHoldStatus,
                        QuantityPurchased = t.QuantityPurchased,
                        PaymentMethodUsed = t.PaymentMethodUsed,
                        TransactionPrice = _CurrencyConvertor.ConvertToBaseCurrency(t.TransactionPrice, t.CreatedDate),
                        ItemID = t.ItemID,
                        ItemPrivateNotes = t.ItemPrivateNotes,
                        ItemSKU = t.ItemSKU,
                        ItemSellerInventoryID = t.ItemSellerInventoryID,
                        eBayTransactionId = t.eBayTransactionId,
                        OrderItemDetail = t.OrderItemDetail
                    })),
                    CreatedTime = o.CreatedTime,
                    PaymentStatus = o.PaymentStatus,
                    ShippedTime = o.ShippedTime,
                    ExternalTransactionData = new EBayDatabaseExternalTransactionList(o.ExternalTransactions.Select(t => new EBayDatabaseExternalTransactionItem
                    {
                        FeeOrCreditAmount = t.FeeOrCreditAmount,
                        PaymentOrRefundAmount = t.PaymentOrRefundAmount,
                        TransactionID = t.TransactionID,
                        TransactionTime = t.TransactionTime
                    }))
                });
            }));

            return(orders);
        }
コード例 #3
0
        }         // FetchOnePeriodTransactions

        private EbayDatabaseOrdersList ParseOrdersInfo(ResultInfoOrders data)
        {
            var rez = new EbayDatabaseOrdersList(data.SubmittedDate)
            {
                RequestsCounter = data.RequestsCounter,
            };

            foreach (OrderType o in data)
            {
                if (o == null)
                {
                    continue;
                }

                var item = new EbayDatabaseOrderItem {
                    CreatedTime      = o.CreatedTimeSpecified ? o.CreatedTime.ToUniversalTime() : (DateTime?)null,
                    ShippedTime      = o.ShippedTimeSpecified ? o.ShippedTime.ToUniversalTime() : (DateTime?)null,
                    PaymentTime      = o.PaidTimeSpecified ? o.PaidTime.ToUniversalTime() : (DateTime?)null,
                    BuyerName        = o.BuyerUserID,
                    AdjustmentAmount = ConvertToBaseCurrency(o.AdjustmentAmount, o.CreatedTime),
                    AmountPaid       = ConvertToBaseCurrency(o.AmountPaid, o.CreatedTime),
                    SubTotal         = ConvertToBaseCurrency(o.Subtotal, o.CreatedTime),
                    Total            = ConvertToBaseCurrency(o.Total, o.CreatedTime),
                    OrderStatus      = o.OrderStatusSpecified
                                                ? (EBayOrderStatusCodeType)Enum.Parse(typeof(EBayOrderStatusCodeType), o.OrderStatus.ToString())
                                                : EBayOrderStatusCodeType.Default,
                    PaymentHoldStatus = o.PaymentHoldStatusSpecified ? o.PaymentHoldStatus.ToString() : string.Empty,
                    CheckoutStatus    = o.CheckoutStatus != null && o.CheckoutStatus.StatusSpecified
                                                ? o.CheckoutStatus.Status.ToString()
                                                : string.Empty,
                    PaymentMethod = o.CheckoutStatus != null && o.CheckoutStatus.PaymentMethodSpecified
                                                ? o.CheckoutStatus.PaymentMethod.ToString()
                                                : string.Empty,
                    PaymentStatus = o.CheckoutStatus != null && o.CheckoutStatus.eBayPaymentStatusSpecified
                                                ? o.CheckoutStatus.eBayPaymentStatus.ToString()
                                                : string.Empty,
                    PaymentMethods      = o.PaymentMethods == null ? null : string.Join(",", o.PaymentMethods),
                    ShippingAddressData = o.ShippingAddress == null ? null : o.ShippingAddress.ConvertToDatabaseType(),
                };

                if (o.ExternalTransaction != null && o.ExternalTransaction.Length > 0)
                {
                    item.ExternalTransactionData = new EBayDatabaseExternalTransactionList();
                    foreach (var et in o.ExternalTransaction)
                    {
                        if (et == null)
                        {
                            continue;
                        }

                        var exItem = new EBayDatabaseExternalTransactionItem();

                        exItem.TransactionID   = et.ExternalTransactionID;
                        exItem.TransactionTime = et.ExternalTransactionTimeSpecified
                                                        ? et.ExternalTransactionTime
                                                        : (DateTime?)null;
                        exItem.FeeOrCreditAmount     = ConvertToBaseCurrency(et.FeeOrCreditAmount, et.ExternalTransactionTime);
                        exItem.PaymentOrRefundAmount = ConvertToBaseCurrency(
                            et.PaymentOrRefundAmount,
                            et.ExternalTransactionTime
                            );

                        item.ExternalTransactionData.Add(exItem);
                    }             // for each
                }                 // if

                if (o.TransactionArray != null && o.TransactionArray.Length > 0)
                {
                    item.TransactionData = new EbayDatabaseTransactionDataList();

                    foreach (var td in o.TransactionArray)
                    {
                        if (td == null || td.Item == null)
                        {
                            continue;
                        }

                        var itemType = td.Item;

                        var trItem = new EbayDatabaseTransactionDataItem {
                            CreatedDate       = td.CreatedDate,
                            QuantityPurchased = td.QuantityPurchased,
                            PaymentHoldStatus = td.Status != null && td.Status.PaymentHoldStatusSpecified
                                                                ? td.Status.PaymentHoldStatus.ToString()
                                                                : string.Empty,
                            PaymentMethodUsed = td.Status != null && td.Status.PaymentMethodUsedSpecified
                                                                ? td.Status.PaymentMethodUsed.ToString()
                                                                : string.Empty,
                            TransactionPrice      = ConvertToBaseCurrency(td.TransactionPrice, td.CreatedDate),
                            ItemSKU               = itemType.SKU,
                            ItemID                = itemType.ItemID,
                            ItemPrivateNotes      = itemType.PrivateNotes,
                            ItemSellerInventoryID = itemType.SellerInventoryID,
                            eBayTransactionId     = td.TransactionID
                        };

                        item.TransactionData.Add(trItem);
                    }             // for each
                }                 // if

                rez.Add(item);
            }             // for each o in data

            return(rez);
        }         // ParseOrdersInfo
コード例 #4
0
        }         // class FetchResultCounters

        private FetchResultCounters FetchOnePeriodTransactions(
            int mpID,
            IDatabaseCustomerMarketPlace databaseCustomerMarketPlace,
            ElapsedTimeInfo elapsedTimeInfo,
            DataProviderCreationInfo info,
            MP_CustomerMarketplaceUpdatingHistory historyRecord,
            FetchPeriod period
            )
        {
            this.log.Debug("Fetching eBay orders '{0}'@{1}...", mpID, period);

            ResultInfoOrders orders = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                mpID,
                ElapsedDataMemberType.RetrieveDataFromExternalService,
                () => DataProviderGetOrders.GetOrders(
                    info,
                    new ParamsDataInfoGetOrdersFromDateToDateCreated(period.From, period.To)
                    )
                );

            EbayDatabaseOrdersList databaseOrdersList = ParseOrdersInfo(orders);

            DateTime?max = null;
            DateTime?min = null;

            foreach (EbayDatabaseOrderItem o in databaseOrdersList.Where(x => x.CreatedTime != null))
            {
                DateTime c = o.CreatedTime.Value;

                if ((min == null) || (c < min.Value))
                {
                    min = c;
                }

                if ((max == null) || (c > max.Value))
                {
                    max = c;
                }
            }             // for each

            this.log.Debug(
                "Fetching eBay orders '{0}'@{1}: {2} are ready to be stored; " +
                "min order date is '{3}', max order date is '{4}'.",
                mpID,
                period,
                Grammar.Number(databaseOrdersList.Count, "order"),
                (min == null) ? "N/A" : min.Value.ToString("d/MMM/yyyy H:mm:ss", CultureInfo.InvariantCulture),
                (max == null) ? "N/A" : max.Value.ToString("d/MMM/yyyy H:mm:ss", CultureInfo.InvariantCulture)
                );

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                mpID,
                ElapsedDataMemberType.StoreDataToDatabase,
                () => Helper.AddEbayOrdersData(databaseCustomerMarketPlace, databaseOrdersList, historyRecord)
                );

            this.log.Debug(
                "Fetching eBay orders '{0}'@{1}: {2} were stored.",
                mpID,
                period,
                Grammar.Number(databaseOrdersList.Count, "order")
                );

            EbayDatabaseOrdersList allEBayOrders = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                mpID,
                ElapsedDataMemberType.RetrieveDataFromDatabase,
                () => Helper.GetAllEBayOrders(orders.SubmittedDate, databaseCustomerMarketPlace)
                );

            this.log.Debug(
                "Fetching eBay orders '{0}'@{1}: {2} were loaded from DB.",
                mpID,
                period,
                Grammar.Number(allEBayOrders.Count, "order")
                );

            if (this.settings.DownloadCategories)
            {
                IEnumerable <string> topSealedProductItems = GetTopSealedProductItems(allEBayOrders);

                if (topSealedProductItems != null)
                {
                    List <MP_EBayOrderItemDetail> orderItemDetails = topSealedProductItems.Select(
                        item => FindEBayOrderItemInfo(
                            databaseCustomerMarketPlace,
                            info,
                            item,
                            databaseOrdersList.RequestsCounter,
                            elapsedTimeInfo
                            )
                        ).Where(d => d != null)
                                                                     .ToList();

                    Helper.UpdateOrderItemsInfo(orderItemDetails, elapsedTimeInfo, mpID);
                }         // if
            }             // if

            var frc = new FetchResultCounters(
                databaseOrdersList.RequestsCounter,
                (orders.Orders == null) ? 0 : orders.Orders.Count
                );

            this.log.Debug(
                "Done fetching eBay orders '{0}'@{1}: {2} fetched.",
                mpID,
                period,
                Grammar.Number(frc.OrderCount, "order")
                );

            return(frc);
        }         // FetchOnePeriodTransactions
コード例 #5
0
        public void AddEbayOrdersData(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, EbayDatabaseOrdersList data, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id);

            LogData("Orders Data", customerMarketPlace, data);

            if (data == null)
            {
                return;
            }

            var mpOrder = new MP_EbayOrder
            {
                CustomerMarketPlace = customerMarketPlace,
                Created             = data.SubmittedDate.ToUniversalTime(),
                HistoryRecord       = historyRecord
            };

            if (data.Count != 0)
            {
                data.ForEach(
                    databaseOrder =>
                {
                    var mpOrderItem = new MP_EbayOrderItem
                    {
                        Order              = mpOrder,
                        CreatedTime        = databaseOrder.CreatedTime,
                        PaymentTime        = databaseOrder.PaymentTime,
                        ShippedTime        = databaseOrder.ShippedTime,
                        BuyerName          = databaseOrder.BuyerName,
                        AdjustmentAmount   = databaseOrder.AdjustmentAmount,
                        AmountPaid         = databaseOrder.AmountPaid,
                        SubTotal           = databaseOrder.SubTotal,
                        Total              = databaseOrder.Total,
                        CheckoutStatus     = databaseOrder.CheckoutStatus,
                        OrderStatus        = databaseOrder.OrderStatus.ToString(),
                        PaymentStatus      = databaseOrder.PaymentStatus,
                        PaymentHoldStatus  = databaseOrder.PaymentHoldStatus,
                        PaymentMethod      = databaseOrder.PaymentMethod,
                        PaymentMethodsList = databaseOrder.PaymentMethods,
                        ShippingAddress    = CreateAddressInDatabase(databaseOrder.ShippingAddressData),
                    };

                    if (databaseOrder.TransactionData != null && databaseOrder.TransactionData.HasData)
                    {
                        mpOrderItem.Transactions.AddAll(databaseOrder.TransactionData.Select(t =>
                        {
                            var tr = new MP_EbayTransaction
                            {
                                OrderItem             = mpOrderItem,
                                CreatedDate           = t.CreatedDate,
                                PaymentHoldStatus     = t.PaymentHoldStatus,
                                PaymentMethodUsed     = t.PaymentMethodUsed,
                                QuantityPurchased     = t.QuantityPurchased,
                                TransactionPrice      = t.TransactionPrice,
                                ItemID                = t.ItemID,
                                ItemPrivateNotes      = t.ItemPrivateNotes,
                                ItemSKU               = t.ItemSKU,
                                ItemSellerInventoryID = t.ItemSellerInventoryID,
                                eBayTransactionId     = t.eBayTransactionId,
                            };
                            return(tr);
                        }).ToArray());
                    }

                    if (databaseOrder.ExternalTransactionData != null && databaseOrder.ExternalTransactionData.HasData)
                    {
                        mpOrderItem.ExternalTransactions.AddAll(databaseOrder.ExternalTransactionData.Select(t =>
                                                                                                             new MP_EbayExternalTransaction
                        {
                            OrderItem             = mpOrderItem,
                            TransactionID         = t.TransactionID,
                            TransactionTime       = t.TransactionTime,
                            FeeOrCreditAmount     = t.FeeOrCreditAmount,
                            PaymentOrRefundAmount = t.PaymentOrRefundAmount
                        }).ToArray());
                    }
                    mpOrder.OrderItems.Add(mpOrderItem);
                }
                    );
            }

            customerMarketPlace.EbayOrders.Add(mpOrder);

            _CustomerMarketplaceRepository.Update(customerMarketPlace);
        }