Beispiel #1
0
        public override void Process(IMarketApi api, ITime time, AmazonReportInfo reportInfo, IList <IReportItemDTO> reportItems)
        {
            using (var uow = new UnitOfWork(Log))
            {
                var items = reportItems.Cast <ItemDTO>().ToList();

                Log.Debug("Begin process items");
                ProcessItems(uow, api, items);
                Log.Debug("End process items");
            }
        }
Beispiel #2
0
        public AmazonReportService(AmazonReportType reportType,
                                   long companyId,
                                   AmazonApi api,
                                   ILogService log,
                                   ITime time,
                                   IDbFactory dbFactory,
                                   ISyncInformer syncInfo,
                                   IStyleManager styleManager,
                                   INotificationService notificationService,
                                   IStyleHistoryService styleHistoryService,
                                   IItemHistoryService itemHistoryService,
                                   ISystemActionService actionService,
                                   IReportParser parser,
                                   string path = "")
        {
            _log       = log;
            _time      = time;
            _dbFactory = dbFactory;

            _api = api;

            _reportInfo = new AmazonReportInfo();
            _reportInfo.ReportRequestId = String.Empty;

            _path          = path;
            _companyId     = companyId;
            _syncInfo      = syncInfo;
            _reportType    = reportType;
            _parser        = parser;
            _actionService = actionService;

            var parseContext = new ParseContext()
            {
                Log                 = log,
                Time                = time,
                DbFactory           = dbFactory,
                ActionService       = actionService,
                StyleManager        = styleManager,
                NotificationService = notificationService,
                StyleHistoryService = styleHistoryService,
                ItemHistoryService  = itemHistoryService,
                SyncInformer        = syncInfo,
                CompanyId           = companyId
            };

            _parser.Init(parseContext);

            _log.Info(string.Format("Path: {0}", path));
        }
        public override void Process(IMarketApi api, ITime time, AmazonReportInfo reportInfo, IList <IReportItemDTO> reportItems)
        {
            var listingProcessor = new ListingLineProcessing(Context, time, _canCreateStyleInfo);

            using (var uow = new UnitOfWork(Log))
            {
                uow.DisableValidation();

                var items = reportItems.Cast <ItemDTO>().ToList();

                if (!_isProcessInactive)
                {
                    items = items.Where(i => i.PublishedStatus != (int)PublishedStatuses.PublishedInactive).ToList();
                }

                foreach (var item in items)
                {
                    item.MarketplaceId        = api.MarketplaceId;
                    item.Market               = (int)api.Market;
                    item.CurrentPriceCurrency = "USD";
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonCaMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "CAD";
                    }
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonUkMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "GBP";
                    }
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonMxMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "MXN";
                    }
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonAuMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "AUD";
                    }
                    item.CurrentPriceInUSD = PriceHelper.RougeConvertToUSD(item.CurrentPriceCurrency, item.CurrentPrice);
                }

                Log.Debug("Begin process items");
                ProcessItems(uow, api, time, listingProcessor, items, reportInfo.WasModified);
                Log.Debug("End process items");
            }
        }
Beispiel #4
0
        public override void Process(IMarketApi api, ITime time, AmazonReportInfo reportInfo, IList <IReportItemDTO> reportItems)
        {
            var listingProcessor = new ListingLineProcessing(Context, time, _canCreateStyleInfo);

            var items = reportItems.Cast <ItemDTO>().ToList();

            if (!_isProcessInactive)
            {
                items = items.Where(i => i.PublishedStatus != (int)PublishedStatuses.PublishedInactive).ToList();
            }

            //NOTE: Exclude all Rusty
            items = items.Where(i => !StringHelper.ContainsNoCase(i.Name, "Rusty")).ToList();

            foreach (var item in items)
            {
                item.MarketplaceId        = api.MarketplaceId;
                item.Market               = (int)api.Market;
                item.CurrentPriceCurrency = "USD";
                if (api.MarketplaceId == MarketplaceKeeper.AmazonCaMarketplaceId)
                {
                    item.CurrentPriceCurrency = "CAD";
                }
                if (api.MarketplaceId == MarketplaceKeeper.AmazonUkMarketplaceId)
                {
                    item.CurrentPriceCurrency = "GBP";
                }
                if (api.MarketplaceId == MarketplaceKeeper.AmazonMxMarketplaceId)
                {
                    item.CurrentPriceCurrency = "MXN";
                }
                if (api.MarketplaceId == MarketplaceKeeper.AmazonAuMarketplaceId)
                {
                    item.CurrentPriceCurrency = "AUD";
                }
                item.CurrentPriceInUSD = PriceHelper.RougeConvertToUSD(item.CurrentPriceCurrency, item.CurrentPrice);
            }

            Log.Debug("Begin process items");
            ProcessItems(api, time, listingProcessor, items, reportInfo.WasModified);
            Log.Debug("End process items");
        }
        public override void Process(IMarketApi api,
                                     ITime time,
                                     AmazonReportInfo reportInfo,
                                     IList <IReportItemDTO> sourceItems)
        {
            using (var db = new UnitOfWork(Log))
            {
                var returnItems = sourceItems.Select(i => (ReturnRequestDTO)i).ToList();

                var updatedList = new List <string>(returnItems.Count);
                foreach (var item in returnItems)
                {
                    var returnRequest = db.ReturnRequests.GetAll()
                                        .OrderByDescending(r => r.CreateDate)
                                        .FirstOrDefault(r => r.OrderNumber == item.OrderNumber);

                    if (returnRequest != null)
                    {
                        if (!updatedList.Contains(item.OrderNumber))
                        {
                            Log.Info("Return request has been updated, orderNumber=" + item.OrderNumber);
                            returnRequest.HasPrepaidLabel  = item.HasPrepaidLabel;
                            returnRequest.PrepaidLabelCost = item.PrepaidLabelCost;
                            returnRequest.PrepaidLabelBy   = item.PrepaidLabelBy;

                            updatedList.Add(item.OrderNumber);
                        }
                        else
                        {
                            Log.Info("Order has multiple returns: " + item.OrderNumber);
                        }
                    }
                    else
                    {
                        Log.Info("Return request == null, orderNumber=" + item.OrderNumber);
                    }
                }
                db.Commit();
            }
        }
Beispiel #6
0
        public override void Process(IMarketApi api, ITime time, AmazonReportInfo reportInfo, IList <IReportItemDTO> reportItems)
        {
            using (var uow = new UnitOfWork(Log))
            {
                uow.DisableValidation();

                var items = reportItems.Cast <ListingDefectDTO>().ToList();

                string reportId = reportInfo.ReportId;

                foreach (var item in items)
                {
                    item.MarketplaceId = api.MarketplaceId;
                    item.MarketType    = (int)api.Market;
                    item.ReportId      = reportId;
                }

                Log.Debug("Begin process items");
                ProcessItems(uow, reportId, items);
                Log.Debug("End process items");
            }
        }
Beispiel #7
0
        public override void Process(IMarketApi api, ITime time, AmazonReportInfo reportInfo, IList <IReportItemDTO> reportItems)
        {
            using (var uow = new UnitOfWork(Log))
            {
                uow.DisableValidation();

                var items = reportItems.Cast <ItemDTO>().ToList();

                foreach (var item in items)
                {
                    item.MarketplaceId        = api.MarketplaceId;
                    item.Market               = (int)api.Market;
                    item.CurrentPriceCurrency = "USD";
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonCaMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "CAD";
                    }
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonUkMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "GBP";
                    }
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonMxMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "MXN";
                    }
                    if (api.MarketplaceId == MarketplaceKeeper.AmazonAuMarketplaceId)
                    {
                        item.CurrentPriceCurrency = "AUD";
                    }
                    item.CurrentPriceInUSD = PriceHelper.RougeConvertToUSD(item.CurrentPriceCurrency, item.CurrentPrice);
                }

                Log.Debug("Begin process items");
                ProcessItems(uow, api, time, items);
                Log.Debug("End process items");
            }
        }
Beispiel #8
0
        public override void Process(IMarketApi api,
                                     ITime time,
                                     AmazonReportInfo reportInfo,
                                     IList <IReportItemDTO> sourceItems)
        {
            using (var db = new UnitOfWork(Log))
            {
                var returnItems = sourceItems.Select(i => (ReturnRequestDTO)i).ToList();

                // var updatedList = new List<string>(returnItems.Count);
                foreach (var returnItem in returnItems)
                {
                    var existReturnRequest = db.ReturnRequests.GetAll()
                                             .OrderByDescending(r => r.CreateDate)
                                             .FirstOrDefault(r => r.OrderNumber == returnItem.OrderNumber &&
                                                             (r.SKU == returnItem.SKU ||
                                                              r.ItemName == returnItem.ItemName));

                    if (existReturnRequest != null)
                    {
                        //if (!updatedList.Contains(returnItem.OrderNumber))
                        //{
                        Log.Info("Return request has been updated, orderNumber=" + returnItem.OrderNumber);
                        existReturnRequest.HasPrepaidLabel  = returnItem.HasPrepaidLabel;
                        existReturnRequest.PrepaidLabelCost = returnItem.PrepaidLabelCost;
                        existReturnRequest.PrepaidLabelBy   = returnItem.PrepaidLabelBy;
                        existReturnRequest.MarketReturnId   = returnItem.MarketReturnId;

                        //updatedList.Add(returnItem.OrderNumber);
                        //}
                        //else
                        //{
                        //    Log.Info("Order has multiple returns: " + returnItem.OrderNumber);
                        //}
                    }
                    else
                    {
                        //TODO: create request
                        Log.Info("Exist Return request == null, orderNumber=" + returnItem.OrderNumber);

                        var order          = db.Orders.GetByOrderNumber(returnItem.OrderNumber);
                        var orderItems     = db.Listings.GetOrderItems(order.Id);
                        var orderShippings = db.OrderShippingInfos.GetByOrderIdAsDto(order.Id).Where(sh => sh.IsActive).ToList();

                        var itemToCheck = orderItems.FirstOrDefault(i => i.SKU == returnItem.SKU);
                        //If not found check all items
                        if (itemToCheck == null && orderItems.Count == 1)
                        {
                            itemToCheck = orderItems.FirstOrDefault();
                        }
                        Log.Info("Item to check=" + (itemToCheck != null ? itemToCheck.SKU : "[null}"));

                        if (itemToCheck != null)
                        {
                            returnItem.StyleId     = itemToCheck.StyleId;
                            returnItem.StyleItemId = itemToCheck.StyleItemId;
                            returnItem.SKU         = itemToCheck.SKU;
                            returnItem.StyleString = itemToCheck.StyleID;
                        }

                        var requestDb = new ReturnRequest()
                        {
                            ItemName         = StringHelper.Substring(returnItem.ItemName, 255),
                            MarketReturnId   = returnItem.MarketReturnId,
                            OrderNumber      = returnItem.OrderNumber,
                            Quantity         = returnItem.Quantity,
                            Reason           = returnItem.Reason,
                            CustomerComments = StringHelper.Substring(returnItem.CustomerComments, 255),
                            Details          = StringHelper.Substring(returnItem.Details, 255),
                            ReceiveDate      = returnItem.ReceiveDate,
                            CreateDate       = time.GetAppNowTime(),

                            StyleId     = returnItem.StyleId,
                            StyleItemId = returnItem.StyleItemId,
                            SKU         = returnItem.SKU,

                            HasPrepaidLabel  = returnItem.HasPrepaidLabel,
                            PrepaidLabelCost = returnItem.PrepaidLabelCost,
                            PrepaidLabelBy   = returnItem.PrepaidLabelBy
                        };

                        db.ReturnRequests.Add(requestDb);
                        db.Commit();
                    }
                }
                db.Commit();
            }
        }
 public abstract void Process(IMarketApi api, ITime time, AmazonReportInfo reportInfo, IList <IReportItemDTO> reportItems);