コード例 #1
0
        public FileStream GetSingleFeed(object feed, AmazonEnvelopeMessageType amazonEnvelopeMessageType,
                                        AmazonEnvelopeMessageOperationType?amazonEnvelopeMessageOperationType)
        {
            if (feed != null)
            {
                var message = new AmazonEnvelopeMessage
                {
                    MessageID = "1",
                    Item      = feed
                };
                if (amazonEnvelopeMessageOperationType != null)
                {
                    message.OperationType = amazonEnvelopeMessageOperationType.Value;
                }
                var amazonEnvelope = new AmazonEnvelope
                {
                    Header = new Header
                    {
                        DocumentVersion    = "1.0",
                        MerchantIdentifier = _amazonSellerSettings.SellerId
                    },
                    MessageType = amazonEnvelopeMessageType,
                    Message     = new AmazonEnvelopeMessageCollection()
                    {
                        message
                    }
                };

                return(AmazonAppHelper.GetStream(amazonEnvelope, amazonEnvelopeMessageType));
            }
            return(null);
        }
コード例 #2
0
        public AmazonOrder ScheduleSync(Order order)
        {
            switch (order.OrderStatus)
            {
            case OrderStatusEnum.Unshipped:
            case OrderStatusEnum.PartiallyShipped:
            case OrderStatusEnum.Shipped:
            case OrderStatusEnum.Canceled:
            {
                if (!_importAmazonOrderService.IsCurrencyValid(order))
                {
                    _amazonLogService.Add(AmazonLogType.Orders, AmazonLogStatus.Stage, null, null,
                                          AmazonApiSection.Orders,
                                          null, null, null, null,
                                          string.Format(
                                              "Amazon Order #{0} uses different currency than current MrCMS Site.",
                                              order.AmazonOrderId));
                }
                else
                {
                    var amazonOrder     = _amazonOrderService.GetByAmazonOrderId(order.AmazonOrderId);
                    var amazonOrderData = _amazonOrderSyncInfoService.GetByAmazonOrderId(order.AmazonOrderId).ToList();

                    if (order.OrderStatus == OrderStatusEnum.Canceled)
                    {
                        return(amazonOrder);
                    }

                    var newAmazonOrderData = new AmazonOrderSyncData
                    {
                        OrderId   = order.AmazonOrderId,
                        Operation = (amazonOrder == null
                                            ? (amazonOrderData.Any(x => x.Operation == SyncAmazonOrderOperation.Add) ? SyncAmazonOrderOperation.Update : SyncAmazonOrderOperation.Add) : SyncAmazonOrderOperation.Update),
                        Status = SyncAmazonOrderStatus.Pending,
                        Data   = AmazonAppHelper.SerializeToJson(order),
                        Site   = CurrentRequestData.CurrentSite
                    };

                    if (amazonOrder != null)
                    {
                        newAmazonOrderData.AmazonOrder = amazonOrder;
                    }

                    _amazonOrderSyncInfoService.Add(newAmazonOrderData);

                    return(amazonOrder);
                }
            }
            break;
            }
            return(null);
        }
コード例 #3
0
 public ProductImage GetProductImage(AmazonListing listing)
 {
     if (listing.ProductVariant != null && listing.ProductVariant.Product != null && listing.ProductVariant.Product.Images.Any())
     {
         var image = listing.ProductVariant.Product.Images.First();
         if (image.FileExtension.Contains(".jpeg"))
         {
             return(new ProductImage()
             {
                 SKU = listing.SellerSKU,
                 ImageType = ProductImageImageType.Main,
                 ImageLocation = AmazonAppHelper.GetValidImageUrl(image.FileUrl)
             });
         }
     }
     return(null);
 }
コード例 #4
0
        public AmazonOrder UpdateOrder(AmazonOrderSyncData amazonOrderSyncData)
        {
            var existingAmazonOrder = _amazonOrderService.GetByAmazonOrderId(amazonOrderSyncData.OrderId);

            if (amazonOrderSyncData.Operation == SyncAmazonOrderOperation.Add && existingAmazonOrder != null)
            {
                amazonOrderSyncData.Status      = SyncAmazonOrderStatus.Synced;
                amazonOrderSyncData.AmazonOrder = existingAmazonOrder;
                _amazonOrderSyncDataService.Update(amazonOrderSyncData);
                _amazonOrderSyncDataService.Delete(amazonOrderSyncData);
                return(existingAmazonOrder);
            }

            if (amazonOrderSyncData.AmazonOrder == null && existingAmazonOrder != null)
            {
                amazonOrderSyncData.AmazonOrder = existingAmazonOrder;
                _amazonOrderSyncDataService.Update(amazonOrderSyncData);
            }

            var amazonOrder = amazonOrderSyncData.AmazonOrder = amazonOrderSyncData.AmazonOrder ?? new AmazonOrder();
            var order       = AmazonAppHelper.DeserializeFromJson <Order>(amazonOrderSyncData.Data);

            var success = ProcessOrder(order, ref amazonOrder, amazonOrderSyncData.Operation == SyncAmazonOrderOperation.Add);

            if (success)
            {
                amazonOrderSyncData.Status      = SyncAmazonOrderStatus.Synced;
                amazonOrderSyncData.AmazonOrder = amazonOrder;
                _amazonOrderSyncDataService.Update(amazonOrderSyncData);
                _amazonOrderSyncDataService.Delete(amazonOrderSyncData);
            }
            else
            {
                amazonOrderSyncData.Status      = SyncAmazonOrderStatus.Pending;
                amazonOrderSyncData.AmazonOrder = amazonOrder;
                _amazonOrderSyncDataService.Update(amazonOrderSyncData);
            }

            return(amazonOrder);
        }
コード例 #5
0
        public AmazonDashboardModel GetAmazonDashboardModel(DateTime?from, DateTime?to)
        {
            var model = new AmazonDashboardModel();

            if (from.HasValue)
            {
                model.FilterFrom = from.Value;
            }
            if (to.HasValue)
            {
                model.FilterUntil = to.Value;
            }
            model.NoOfActiveListings   = GetNumberOfActiveListings();
            model.NoOfApiCalls         = GetNumberOfApiCalls(model.FilterFrom, model.FilterUntil);
            model.NoOfOrders           = GetNumberOfOrders(model.FilterFrom, model.FilterUntil);
            model.NoOfUnshippedOrders  = GetNumberUnshippedOrders(model.FilterFrom, model.FilterUntil);
            model.AverageOrderAmount   = GetAverageOrderAmount(model.FilterFrom, model.FilterUntil);
            model.NoOfOrderedProducts  = GetNumberOfOrderedProducts(model.FilterFrom, model.FilterUntil);
            model.NoOfShippedProducts  = GetNumberOfShippedProducts(model.FilterFrom, model.FilterUntil);
            model.AppSettingsStatus    = AmazonAppHelper.CheckAppSettingsStatus(_amazonAppSettings);
            model.SellerSettingsStatus = AmazonAppHelper.CheckSellerSettingsStatus(_amazonSellerSettings);
            return(model);
        }
コード例 #6
0
        public FileStream GetFeed(IEnumerable <object> feeds, AmazonEnvelopeMessageType amazonEnvelopeMessageType,
                                  AmazonEnvelopeMessageOperationType?amazonEnvelopeMessageOperationType)
        {
            if (feeds != null && feeds.Any())
            {
                var messages   = new AmazonEnvelopeMessageCollection();
                var msgCounter = 1;
                foreach (var feed in feeds)
                {
                    var message = new AmazonEnvelopeMessage
                    {
                        MessageID = msgCounter.ToString(),
                        Item      = feed
                    };
                    if (amazonEnvelopeMessageOperationType != null)
                    {
                        message.OperationType = amazonEnvelopeMessageOperationType.Value;
                    }
                    messages.Add(message);
                    msgCounter++;
                }
                var amazonEnvelope = new AmazonEnvelope
                {
                    Header = new Header
                    {
                        DocumentVersion    = "1.0",
                        MerchantIdentifier = _amazonSellerSettings.SellerId
                    },
                    MessageType = amazonEnvelopeMessageType,
                    Message     = messages
                };

                return(AmazonAppHelper.GetStream(amazonEnvelope, amazonEnvelopeMessageType));
            }
            return(null);
        }