public void UpdateStyleHiResImages() { var htmlScraper = new HtmlScraperService(_log, _time, _dbFactory); var imageManager = new ImageManager(_log, htmlScraper, _dbFactory, _time); imageManager.UpdateStyleLargeImage(); }
public void ReplaceStyleImageToHiRes() { var htmlScraper = new HtmlScraperService(_log, _time, _dbFactory); var imageManager = new ImageManager(_log, htmlScraper, _dbFactory, _time); imageManager.ReplaceStyleLargeImage(); }
public void BuildMultilistingUSFBAExcel(IList <FBAItemInfo> fbaItems) { var resultItems = new List <ExcelProductUSViewModel>(); var marketplaceManager = new MarketplaceKeeper(_dbFactory, false); marketplaceManager.Init(); IMarketApi api = new MarketFactory(marketplaceManager.GetAll(), _time, _log, _dbFactory, null) .GetApi(AccessManager.Company.Id, MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId); var htmlScraper = new HtmlScraperService(_log, _time, _dbFactory); var filename = String.Empty; using (var db = _dbFactory.GetRWDb()) { var parentASINList = fbaItems.Select(i => i.ParentASIN).Distinct().ToList(); foreach (var parentASIN in parentASINList) { var childFBAItems = fbaItems.Where(f => f.ParentASIN == parentASIN).ToList(); var newItems = ExcelProductUSViewModel.GetItemsFor(_log, _time, _categoryService, htmlScraper, api, db, _company, parentASIN, ExportToExcelMode.FBA, childFBAItems, MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId, UseStyleImageModes.Auto, out filename); resultItems.AddRange(newItems); } } var templateFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files/Templates/Flat.File.Clothing-full.OneSheet.US.xls"); var stream = ExcelHelper.ExportIntoFile(templateFile, "Template", resultItems); var outputFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, String.Format("USFBAListings_{0}.xls", _time.GetAppNowTime().ToString("MM_dd_yyyy_hh_mm_ss"))); stream.Seek(0, SeekOrigin.Begin); using (FileStream file = new FileStream(outputFile, FileMode.Create, System.IO.FileAccess.Write)) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, (int)stream.Length); file.Write(bytes, 0, bytes.Length); stream.Close(); } }
public void UpdateItemHiRes(MarketType market, string marketplaceId, string asin) { var htmlScraper = new HtmlScraperService(_log, _time, _dbFactory); var imageManager = new ImageManager(_log, htmlScraper, _dbFactory, _time); imageManager.UpdateItemsLargeImages(market, marketplaceId, new List <string>() { asin }, null); }
protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var settings = new SettingsService(dbFactory); var htmlScraper = new HtmlScraperService(GetLogger(), time, dbFactory); var log = GetLogger(); var imageManager = new ImageManager(GetLogger(), htmlScraper, dbFactory, time); var imageProcessingService = new ImageProcessingService(dbFactory, time, log, AppSettings.WalmartImageDirectory); var lastSyncDate = settings.GetImageUpdateDate(); LogWrite("Last sync date=" + lastSyncDate); log.Info("UpdateStyleImageTypes"); imageManager.UpdateStyleImageTypes(); //NOTE: call always (every 5 minutes) //if (!lastSyncDate.HasValue || // (time.GetUtcTime() - lastSyncDate) > _betweenProcessingInverval) { log.Info("UpdateListingsLargeImages"); imageManager.UpdateParentItemsLargeImages(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId, null, null); //imageManager.UpdateParentItemsLargeImages(MarketType.AmazonEU, null, null); imageManager.UpdateItemsLargeImages(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId, null, null); //imageManager.UpdateItemsLargeImages(MarketType.AmazonEU, null, null); //imageManager.UpdateItemsLargeImages(MarketType.Walmart, null, null); log.Info("UpdateStyleLargeImage"); imageManager.UpdateStyleLargeImage(); log.Info("UpdateDifferenceForAllImages"); imageProcessingService.UpdateDifferenceForAllImages(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId, null); //imageProcessingService.UpdateDifferenceForAllImages(MarketType.Walmart, "", null); log.Info("ReplaceStyleLargeImage"); imageManager.ReplaceStyleLargeImage(); settings.SetImageUpdateDate(time.GetUtcTime()); } }
protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); var settings = new SettingsService(dbFactory); var htmlScraper = new HtmlScraperService(log, time, dbFactory); var imageManager = new ImageManager(log, htmlScraper, dbFactory, time); var lastSyncDate = settings.GetListingsSendDate(_api.Market, _api.MarketplaceId); var pauseStatus = settings.GetListingsSyncPause(_api.Market, _api.MarketplaceId) ?? false; LogWrite("Last sync date=" + lastSyncDate); if (pauseStatus) { LogWrite("Listings sync in pause"); return; } if (!lastSyncDate.HasValue || (time.GetUtcTime() - lastSyncDate) > _betweenProcessingInverval) { var feed = new WalmartItemsFeed(GetLogger(), time, _api, dbFactory, AppSettings.WalmartFeedBaseDirectory, AppSettings.SwatchImageDirectory, AppSettings.SwatchImageBaseUrl, AppSettings.WalmartImageDirectory, AppSettings.WalmartImageBaseUrl); var feedDto = feed.CheckFeedStatus(TimeSpan.FromHours(24)); if (feedDto == null) //NOTE: no feed to check { //NOTE: Update Image Types, to get right image imageManager.UpdateStyleImageTypes(); feed.SubmitFeed(); settings.SetListingsSendDate(time.GetUtcTime(), _api.Market, _api.MarketplaceId); } } }
public void UpdateAllHiRes() { var htmlScraper = new HtmlScraperService(_log, _time, _dbFactory); var imageManager = new ImageManager(_log, htmlScraper, _dbFactory, _time); //var itemASINList = new List<string>(); //using (var db = _dbFactory.GetRWDb()) //{ // itemASINList = db.Items.GetAllViewAsDto(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId) // .Where(i => i.ParentASIN == parentASIN) // .Select(i => i.ASIN) // .ToList(); //} imageManager.UpdateItemsLargeImages(MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId, null, DateTime.Today.AddDays(-160)); //imageManager.UpdateParentItemsLargeImages(MarketType.Amazon, // new List<string>() //{ // "B01LYP1ADL", // "B01M0YW6HC" //}, null);//, DateTime.Today.AddDays(-7)); }
public void BuildMultilistingUKExcel(IList <string> usASINList) { var resultItems = new List <ExcelProductUKViewModel>(); var marketplaceManager = new MarketplaceKeeper(_dbFactory, false); marketplaceManager.Init(); IMarketApi api = new MarketFactory(marketplaceManager.GetAll(), _time, _log, _dbFactory, null) .GetApi(AccessManager.Company.Id, MarketType.Amazon, MarketplaceKeeper.AmazonUkMarketplaceId); var htmlScraper = new HtmlScraperService(_log, _time, _dbFactory); var filename = String.Empty; using (var db = _dbFactory.GetRWDb()) { foreach (var asin in usASINList) { var newItems = ExcelProductUKViewModel.GetItemsFor(_log, _time, _categoryService, htmlScraper, api, db, _company, asin, MarketType.Amazon, MarketplaceKeeper.AmazonComMarketplaceId, UseStyleImageModes.Auto, out filename); var resultList = new List <ExcelProductUKViewModel>(); foreach (var newItem in newItems) { if (newItem.StyleItemId.HasValue) { var styleItem = db.StyleItemCaches.GetForStyleItemId(newItem.StyleItemId.Value).FirstOrDefault(); if (styleItem != null && styleItem.RemainingQuantity > 0) { resultList.Add(newItem); } } else { //Parent record w/o StyleItemId resultList.Add(newItem); } } resultItems.AddRange(resultList); } } var templateFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files/Templates/Flat.File.Clothing.OneSheet.UK.xls"); var stream = ExcelHelper.ExportIntoFile(templateFile, "Template", resultItems); var outputFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, String.Format("UKListings_{0}.xls", _time.GetAppNowTime().ToString("MM_dd_yyyy_hh_mm_ss"))); stream.Seek(0, SeekOrigin.Begin); using (FileStream file = new FileStream(outputFile, FileMode.Create, System.IO.FileAccess.Write)) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, (int)stream.Length); file.Write(bytes, 0, bytes.Length); stream.Close(); } }
protected override void RunCallback() { _api.Connect(); var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); var syncInfo = new DbSyncInformer(dbFactory, log, time, SyncType.Orders, _api.MarketplaceId, _market, String.Empty); using (var db = dbFactory.GetRWDb()) { var serviceFactory = new ServiceFactory(); var settings = new SettingsService(dbFactory); var company = db.Companies.GetByIdWithSettingsAsDto(CompanyId); var companyAddress = new CompanyAddressService(company); var shipmentProviders = company.ShipmentProviderInfoList; var addressProviders = company.AddressProviderInfoList; var addressCheckServiceList = serviceFactory.GetAddressCheckServices(log, time, dbFactory, addressProviders); var addressService = new AddressService(addressCheckServiceList, companyAddress.GetReturnAddress(MarketIdentifier.Empty()), companyAddress.GetPickupAddress(MarketIdentifier.Empty())); var actionService = new SystemActionService(log, time); var priceService = new PriceService(dbFactory); var quantityManager = new QuantityManager(log, time); var emailService = new EmailService(log, SettingsBuilder.GetSmtpSettingsFromCompany(company, AppSettings.IsDebug, AppSettings.IsSampleLabels), addressService); var weightService = new WeightService(); var messageService = new SystemMessageService(log, time, dbFactory); var rateProviders = serviceFactory.GetShipmentProviders(log, time, dbFactory, weightService, shipmentProviders, null, null, null, null); var htmlScraper = new HtmlScraperService(log, time, dbFactory); var orderHistoryService = new OrderHistoryService(log, time, dbFactory); var validatorService = new OrderValidatorService(log, dbFactory, emailService, settings, orderHistoryService, actionService, priceService, htmlScraper, addressService, companyAddress.GetReturnAddress(MarketIdentifier.Empty()), rateProviders.FirstOrDefault(r => r.Type == ShipmentProviderType.Stamps), time, company); var cacheService = new CacheService(log, time, actionService, quantityManager); var orderSyncFactory = new OrderSyncFactory(); if (settings.GetOrdersSyncEnabled() != false) { if (!syncInfo.IsSyncInProgress()) //NOTE: for now it a few minutes ~10 { if (!IsPrintLabelsInProgress(db, actionService, time)) { try { var marketplaceId = _api.MarketplaceId; LogWrite("Set OrderSyncInProgress"); syncInfo.SyncBegin(null); var synchronizer = orderSyncFactory.GetForMarket(_api, GetLogger(), company, settings, syncInfo, rateProviders, quantityManager, emailService, validatorService, orderHistoryService, cacheService, actionService, companyAddress, time, weightService, messageService); var isFullSync = !_lastFullSync.HasValue || (time.GetUtcTime() - _lastFullSync) > _fullSyncInterval; var syncResult = synchronizer.Sync(isFullSync ? OrderSyncModes.Full : OrderSyncModes.Fast, CancellationToken); if (isFullSync) { _lastFullSync = time.GetUtcTime(); } var statusList = new List <string>() { OrderStatusEnum.Unshipped.Str() }; if (_market == MarketType.Walmart || _market == MarketType.WalmartCA) { statusList.Add(OrderStatusEnum.Pending.Str()); } var dbOrderIdList = (from o in db.Orders.GetAll() join sh in db.OrderShippingInfos.GetAll() on o.Id equals sh.OrderId where (sh.IsActive || sh.IsVisible) && statusList.Contains(o.OrderStatus) && o.Market == (int)_market && (o.MarketplaceId == marketplaceId || String.IsNullOrEmpty(marketplaceId)) select o.AmazonIdentifier).Distinct().ToList(); //var dbOrders = db.ItemOrderMappings.GetOrdersWithItemsByStatus(weightService, statusList.ToArray(), _market, marketplaceId).ToList(); //dbOrders = dbOrders.Where(o => o.ShippingInfos != null && o.ShippingInfos.Any(sh => sh.IsActive || sh.IsVisible)).ToList(); var unshippedMarketOrderIdList = syncResult.ProcessedOrders .Where(o => statusList.Contains(o.OrderStatus)) .Select(o => o.OrderId) .ToList(); if (syncResult.SkippedOrders != null) { unshippedMarketOrderIdList.AddRange(syncResult.SkippedOrders .Where(o => statusList.Contains(o.OrderStatus)) .Select(o => o.OrderId) .ToList()); } unshippedMarketOrderIdList = unshippedMarketOrderIdList.Distinct().ToList(); //var dbOrderIdList = dbOrders.Select(o => o.OrderId).Distinct().ToList(); LogDiffrents(unshippedMarketOrderIdList, dbOrderIdList, "Missing order: "); if (unshippedMarketOrderIdList.Count != dbOrderIdList.Count || !syncResult.IsSuccess) { emailService.SendSystemEmailToAdmin("PA Orders Sync has issue", "Market: " + _api.Market + " - " + _api.MarketplaceId + "<br/>" + "Sync message: " + syncResult.Message + "<br/>" + "Missing orders: " + (unshippedMarketOrderIdList.Count - dbOrderIdList.Count)); } //NOTE: otherwise if we have missed order (older than 2 hours that was hidden in next lite iteration) if (isFullSync) { settings.SetOrderCountOnMarket(unshippedMarketOrderIdList.Count, _market, marketplaceId); settings.SetOrderCountInDB(dbOrderIdList.Count, _market, marketplaceId); } if (syncResult.IsSuccess) { settings.SetOrderSyncDate(time.GetUtcTime(), _market, marketplaceId); } } catch (Exception ex) { emailService.SendSystemEmailToAdmin("PA Orders Sync has error", "Market: " + _api.Market + " - " + _api.MarketplaceId + "<br/>" + "Sync message: " + ExceptionHelper.GetAllMessages(ex)); LogError("RunCallback", ex); } finally { syncInfo.SyncEnd(); } } else { LogWrite("Labels printing in-progress"); } } else { LogWrite("Order Sync already runned"); } } } }