public JsonResult _GetProductsInfo(MarketplaceFeed model)
        {
            // get the products's ASINs
            var infoFeeds = _productService.GetProductInfoFeeds(model);

            // create the file to save the list of product's ASIN
            var fileFullPath = string.Format("{0}\\Products_ASINS_{1:yyyyMMdd_HHmmss}.txt", _systemJobsRoot, DateTime.Now);

            // write the asins to the file
            using (var streamWriter = new StreamWriter(fileFullPath))
            {
                var writer = new CsvHelper.CsvWriter(streamWriter);
                foreach (var info in infoFeeds)
                {
                    writer.WriteField(info.EisSKU);
                    writer.WriteField(info.ASIN);
                    writer.WriteField(info.UPC);
                    writer.NextRecord();
                }
            }

            // create new job for the Amazon Get Info for the asins
            var systemJob = new SystemJobDto
            {
                JobType     = JobType.AmazonGetInfo,
                Parameters  = fileFullPath,
                SubmittedBy = User.Identity.Name
            };

            _systemJobService.CreateSystemJob(systemJob);

            return(Json(new { Success = "Amazon Get Info has been passed to EIS System Jobs for execution." },
                        JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        public IEnumerable <MarketplaceInventoryFeed> GetProductInventoryFeed(MarketplaceFeed param)
        {
            var products    = getProductFeed(param);
            var productList = products.Where(o => !o.IsBlacklisted).ToList();

            return(Mapper.Map <List <MarketplaceInventoryFeed> >(productList));
        }
        public JsonResult _DeleteProducts(MarketplaceFeed model)
        {
            try
            {
                // get product's EIS SKU
                var productEisSkus = _productService.GetProductsEisSku(model);

                var fileFullPath = string.Format("{0}\\BulkDeleteProducts_{1:yyyyMMdd_HHmmss}.txt", _systemJobsRoot, DateTime.Now);

                using (var streamWriter = new StreamWriter(fileFullPath))
                {
                    var writer = new CsvHelper.CsvWriter(streamWriter);
                    foreach (var eisSku in productEisSkus)
                    {
                        writer.WriteField(eisSku);
                        writer.NextRecord();
                    }
                }

                // create new job for the Amazon Get Info for the asins
                var systemJob = new SystemJobDto
                {
                    JobType     = JobType.BulkDeleteProduct,
                    Parameters  = fileFullPath,
                    SubmittedBy = User.Identity.Name
                };
                _systemJobService.CreateSystemJob(systemJob);

                return(Json("Bulk deletion of products has been passed to EIS System Jobs for execution.", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Error = "Error in deleting products! - Message: " + EisHelper.GetExceptionMessage(ex) }, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #4
0
        public IEnumerable <eBayCategoryFeed> GeteBaySuggestedCategoryFeed(MarketplaceFeed feed)
        {
            var products    = getProductFeed(feed);
            var productList = products.ToList();

            return(Mapper.Map <List <eBayCategoryFeed> >(productList));
        }
Beispiel #5
0
        public List <string> GetProductsEisSku(MarketplaceFeed param)
        {
            // get the product items from the list of EIS SKUs
            var products = getProductFeed(param);

            return(products.Select(x => x.EisSKU).ToList());
        }
Beispiel #6
0
        public IEnumerable <ItemFeed> GeteBayItemFeeds(MarketplaceFeed feed)
        {
            // get the product list
            var products    = getProductFeed(feed);
            var productList = products.Where(o => !o.IsBlacklisted).ToList();

            return(Mapper.Map <List <ItemFeed> >(productList));
        }
Beispiel #7
0
        public IEnumerable <MarketplacePriceFeedDto> GetProductPriceFeed(MarketplaceFeed param)
        {
            // get the product list
            var products    = getProductFeed(param);
            var productList = products.Where(o => !o.IsBlacklisted).ToList();

            return(Mapper.Map <List <MarketplacePriceFeedDto> >(productList));
        }
Beispiel #8
0
        private IQueryable <product> getProductFeed(MarketplaceFeed param)
        {
            IQueryable <product> products = null;

            if (param.IsAllProductItems)
            {
                if (!string.IsNullOrEmpty(param.SearchString))
                {
                    products = _context.products
                               .Where(x => x.EisSKU.Contains(param.SearchString) ||
                                      x.UPC.Contains(param.SearchString) ||
                                      x.Category.Contains(param.SearchString) ||
                                      x.Name.Contains(param.SearchString));
                }
                else if (param.ProductGroupId != -1)
                {
                    products = getGroupedProducts(param.ProductGroupId,
                                                  param.SearchString,
                                                  param.CompanyId ?? -1,
                                                  //param.VendorId ?? -1,
                                                  //param.QuantityFrom ?? -1,
                                                  //param.QuantityTo ?? -1,
                                                  param.ExcludedEisSKUs,
                                                  param.WithImages,
                                                  param.IsKit,
                                                  param.SkuType,
                                                  param.IsAmazonEnabled,
                                                  param.HasASIN);
                }
                else
                {
                    products = getFilteredProducts(param.SearchString,
                                                   param.CompanyId ?? -1,
                                                   //param.VendorId ?? -1,
                                                   //param.QuantityFrom ?? -1,
                                                   //param.QuantityTo ?? -1,
                                                   param.ExcludedEisSKUs,
                                                   param.WithImages,
                                                   param.IsKit,
                                                   param.SkuType,
                                                   param.IsSKULinked,
                                                   param.IsAmazonEnabled,
                                                   param.HasASIN);
                }
            }
            else
            {
                products = _context.products.Where(x => param.SelectedEisSKUs.Contains(x.EisSKU) &&
                                                   (!param.ExcludedEisSKUs.Any() || param.ExcludedEisSKUs.Contains(x.EisSKU)));
            }

            return(products.AsQueryable());
        }
        public void ShouldFilter_ProductDataFeed_ASIN()
        {
            //Arrange
            ProductService  service = new ProductService(null, null);
            MarketplaceFeed param   = new MarketplaceFeed();

            param.HasASIN = true;

            //Act
            var result = service.GetProductPostFeeds(param).ToList();


            //Assert
            Debug.WriteLine(result.Count);
            Assert.True(result.Count > 0, "No Items Found.");
        }
        //[TestMethod]
        public void ShouldReturnProductsSubmitPriceFeed_NotBlacklisted()
        {
            //Arrange
            ProductService  service = new ProductService(null, null);
            MarketplaceFeed param   = new MarketplaceFeed();

            param.IsAllProductItems = true;
            param.ProductGroupId    = -1;

            //Act
            var result = service.GetProductPostFeeds(param).ToList();


            //Assert
            Debug.WriteLine(result.Count);
            //Assert.IsTrue(result.Count > 0, "No Items Found.");
        }
        public JsonResult _SubmiteBayProductReListing(MarketplaceFeed model)
        {
            try
            {
                // get the eBay products for the relisting
                var productItems = _productService.GeteBayItemFeeds(model).ToList();

                var fileFullPath = string.Format("{0}\\eBayProductReListing_{1:yyyyMMdd_HHmmss}.csv",
                                                 _systemJobsRoot,
                                                 DateTime.Now);

                using (var streamWriter = new StreamWriter(fileFullPath))
                {
                    var writer = new CsvHelper.CsvWriter(streamWriter);
                    foreach (var item in productItems)
                    {
                        writer.WriteField(item.EisSKU);
                        writer.WriteField(item.ItemId);
                        writer.NextRecord();
                    }
                }

                // create new job for eBay suggested categories
                var systemJob = new SystemJobDto
                {
                    JobType              = JobType.eBayProductsReListing,
                    Parameters           = fileFullPath,
                    SupportiveParameters = model.Mode,
                    SubmittedBy          = User.Identity.Name
                };
                var jobId = _systemJobService.CreateSystemJob(systemJob);

                return(Json(new
                {
                    Success = "eBay Product ReListing has been passed to EIS System Jobs for execution.",
                    JobId = jobId
                },
                            JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Error = "Error in submitting eBay product relisting! - Message: " + EisHelper.GetExceptionMessage(ex) },
                            JsonRequestBehavior.AllowGet));
            }
        }
        public async Task SubmitPriceFeedAsync(MarketplaceFeed marketplaceFeed, string userName)
        {
            LAST_PRICE_UPDATE_FEED_TIME = DateTime.Now;

            // get all products with the specified eisProduct types
            var products = _productService.GetProductPriceFeed(marketplaceFeed).ToList();

            if (!products.Any())
            {
                return;
            }

            // iterate first to the selected marketplaces
            foreach (var crendentialType in marketplaceFeed.Marketplaces)
            {
                // get the marketplace provider
                var marketplaceProvider = getMarketInventoryProvider(crendentialType);

                // then list to the list of selected companies
                foreach (var companyId in marketplaceFeed.Companies)
                {
                    // get the marketplace credential define for the company
                    var credential = _credentialService.GetCredential(crendentialType, companyId, marketplaceFeed.Mode);
                    if (credential == null)
                    {
                        _logger.LogWarning(LogEntryType.MarketplaceInventoryManager,
                                           string.Format("Company with ID {0} has no credentials for {1} - {2} mode.",
                                                         companyId, crendentialType, marketplaceFeed.Mode));
                        continue;
                    }

                    marketplaceProvider.Credential = credential;

                    // execute the it asynchroounously
                    Task.Factory.StartNew(() =>
                    {
                        // Create a worker object
                        var worker = new MarketplaceWorker(marketplaceProvider, userName);
                        worker.SubmitPriceFeeds(products);
                    });
                }
            }
        }
Beispiel #13
0
        public List <AmazonInfoFeed> GetProductInfoFeeds(MarketplaceFeed feed)
        {
            var products = getProductFeed(feed);

            if (!products.Any())
            {
                return(null);
            }

            // just return products only with ASIN
            return(products.Select(x => x.productamazon)
                   .Select(x => new AmazonInfoFeed
            {
                EisSKU = x.EisSKU,
                ASIN = x.ASIN,
                UPC = x.product.UPC
            })
                   .ToList());
        }
        public JsonResult _GeteBayBulkSuggestedCategories(MarketplaceFeed model)
        {
            try
            {
                // get the product feed for bul eBay suggested categories
                var productKeywordFeeds = _productService.GeteBaySuggestedCategoryFeed(model);

                var fileFullPath = string.Format("{0}\\BulkeBaySuggestedCategories_{1:yyyyMMdd_HHmmss}.csv",
                                                 _systemJobsRoot,
                                                 DateTime.Now);

                using (var streamWriter = new StreamWriter(fileFullPath))
                {
                    var writer = new CsvHelper.CsvWriter(streamWriter);
                    foreach (var item in productKeywordFeeds)
                    {
                        writer.WriteField(item.EisSKU);
                        writer.WriteField(item.Keyword);
                        writer.NextRecord();
                    }
                }

                // create new job for eBay suggested categories
                var systemJob = new SystemJobDto
                {
                    JobType     = JobType.BulkeBaySuggestedCategories,
                    Parameters  = fileFullPath,
                    SubmittedBy = User.Identity.Name
                };
                var jobId = _systemJobService.CreateSystemJob(systemJob);

                return(Json(new { Success = "Bulk eBay get suggested categories has been passed to EIS System Jobs for execution.",
                                  JobId = jobId },
                            JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Error = "Error in getting bulk eBay suggested categories! - Message: " + EisHelper.GetExceptionMessage(ex) },
                            JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #15
0
        public IEnumerable <MarketplaceProductFeedDto> GetProductPostFeeds(MarketplaceFeed param)
        {
            var products    = getProductFeed(param);
            var productList = products.Where(o => o.IsBlacklisted == false).ToList();

            // convert it first into product feed
            var productsFeed = Mapper.Map <List <MarketplaceProductFeedDto> >(productList);

            // iterate and get its images
            foreach (var product in productsFeed)
            {
                var images = GetProductImages(product.EisSKU);
                product.ImageUrls = images.Select(x => x.Url).ToList();

                var shadow = _context.shadows.FirstOrDefault(x => x.ShadowSKU == product.EisSKU);

                if (shadow != null)
                {
                    product.FactorQuantity = shadow.FactorQuantity;
                }
            }

            return(productsFeed);
        }
        public async Task <JsonResult> _SubmitPriceFeed(MarketplaceFeed model)
        {
            await _inventoryManager.SubmitPriceFeedAsync(model, User.Identity.Name);

            return(Json(new { Success = "Price feeds have been successfully posted to marketplaces" }, JsonRequestBehavior.AllowGet));
        }