protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); var settings = new SettingsService(dbFactory); var styleHistoryService = new StyleHistoryService(log, time, dbFactory); var styleManager = new StyleManager(log, time, styleHistoryService); var lastSyncDate = settings.GetListingsQuantityToAmazonSyncDate(_api.Market, _api.MarketplaceId); LogWrite("Last sync date=" + lastSyncDate); if (!lastSyncDate.HasValue || (time.GetUtcTime() - lastSyncDate) > _betweenProcessingInverval) { var sync = new eBayItemsSync(log, time, _api, dbFactory, styleManager, null, null, null); sync.SendInventoryUpdates(); settings.SetListingsQuantityToAmazonSyncDate(time.GetUtcTime(), _api.Market, _api.MarketplaceId); } }
protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); var settings = new SettingsService(dbFactory); var styleHistoryService = new StyleHistoryService(log, time, dbFactory); var styleManager = new StyleManager(log, time, styleHistoryService); var lastSyncDate = settings.GetListingsReadDate(_api.Market, _api.MarketplaceId); LogWrite("Last sync date=" + lastSyncDate); var sync = new eBayItemsSync(log, time, _api, dbFactory, styleManager, AppSettings.eBayImageDirectory, AppSettings.eBayImageBaseUrl, AppSettings.LabelDirectory); if (!lastSyncDate.HasValue || (time.GetUtcTime() - lastSyncDate) > _betweenProcessingInverval) { sync.ReadItemsInfo(); settings.SetListingsReadDate(time.GetUtcTime(), _api.Market, _api.MarketplaceId); } }
protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); CompanyDTO company = null; using (var db = dbFactory.GetRDb()) { company = db.Companies.GetFirstWithSettingsAsDto(); } var settings = new SettingsService(dbFactory); var styleHistoryService = new StyleHistoryService(log, time, dbFactory); var lastSyncDate = settings.GetListingsReadDate(_api.Market, _api.MarketplaceId); LogWrite("Last sync date=" + lastSyncDate); if (!lastSyncDate.HasValue || (time.GetUtcTime() - lastSyncDate) > _betweenProcessingInverval) { try { var itemSyncService = new ShopifyItemsImporter(log, time, dbFactory, styleHistoryService, null); var isImportDescription = company.ShortName != PortalEnum.HDEA.ToString() && company.ShortName != PortalEnum.BS.ToString(); itemSyncService.Import(_api, null, ShopifyItemsImporter.ImportModes.Full, processOnlyNewStyles: false, overrideStyleIds: true, overrideStyleTitles: true, importDescription: isImportDescription); settings.SetListingsReadDate(time.GetUtcTime(), _api.Market, _api.MarketplaceId); } catch (Exception ex) { LogError(ex.Message, ex); } } }
protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); var settings = new SettingsService(dbFactory); var styleHistoryService = new StyleHistoryService(log, time, dbFactory); var styleManager = new StyleManager(log, time, styleHistoryService); var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.Combine(AppSettings.TemplateDirectory, TemplateHelper.EBayDescriptionTemplateName)); var templateMultiListingPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.Combine(AppSettings.TemplateDirectory, TemplateHelper.EBayDescriptionMultiListingTemplateName)); var lastSyncDate = settings.GetListingsSendDate(_api.Market, _api.MarketplaceId); var isManualSyncRequested = settings.GetListingsManualSyncRequest(_api.Market, _api.MarketplaceId); var pauseStatus = settings.GetListingsSyncPause(_api.Market, _api.MarketplaceId) ?? false; LogWrite("Last sync date=" + lastSyncDate + ", manually sync=" + isManualSyncRequested); if (pauseStatus) { LogWrite("Listings sync in pause"); return; } if (!lastSyncDate.HasValue || (time.GetUtcTime() - lastSyncDate) > _betweenProcessingInverval || isManualSyncRequested == true) { var sync = new eBayItemsSync(log, time, _api, dbFactory, styleManager, AppSettings.eBayImageDirectory, AppSettings.eBayImageBaseUrl, AppSettings.LabelDirectory); sync.SendItemUpdates(); settings.SetListingsSendDate(time.GetUtcTime(), _api.Market, _api.MarketplaceId); settings.SetListingsManualSyncRequest(false, _api.Market, _api.MarketplaceId); } }
protected override void RunCallback() { var dbFactory = new DbFactory(); var time = new TimeService(dbFactory); var log = GetLogger(); var settings = new SettingsService(dbFactory); var styleHistoryService = new StyleHistoryService(log, time, dbFactory); var itemHistoryService = new ItemHistoryService(log, time, dbFactory); var styleManager = new StyleManager(log, time, styleHistoryService); var notificationService = new NotificationService(log, time, dbFactory); var actionService = new SystemActionService(log, time); var lastSyncDate = _reportSettings.GetLastSyncDate(settings, _api.Market, _api.MarketplaceId); var isManualSyncRequested = _reportSettings.IsManualSyncRequested(settings, _api.Market, _api.MarketplaceId); LogWrite("Market=" + _api.Market + ", marketplaceId=" + _api.MarketplaceId); LogWrite("Last sync date=" + lastSyncDate.ToString() + ", isManualSyncRequested=" + isManualSyncRequested); if (!lastSyncDate.HasValue || (DateTime.UtcNow - lastSyncDate) > _reportSettings.RequestInterval || isManualSyncRequested == true) { if (_reportSettings.RequestMode == ReportRequestMode.Sheduled) { //TODO: add //http://docs.developer.amazonservices.com/en_US/reports/Reports_Overview.html //NOTE: Trying to get last existing report from Amazon LogWrite("Check Sheduled"); _reportService = new AmazonReportService(_reportSettings.ReportType, CompanyId, _api, log, time, dbFactory, _syncInfo, styleManager, notificationService, styleHistoryService, itemHistoryService, actionService, _reportSettings.GetParser(), _reportSettings.ReportDirectory); var lastReports = _reportService.GetReportList(); if (lastReports.Any()) { var reportId = lastReports[0].ReportId; LogWrite("Getting last exist report, ReportId=" + reportId); if (_reportService.SaveScheduledReport(reportId)) { using (var db = dbFactory.GetRWDb()) { LogWrite("Add sheduled report"); db.InventoryReports.AddSheduledReport(reportId, (int)_reportSettings.ReportType, _api.MarketplaceId, _reportService.ReportFileName); ProcessReport(settings); _reportSettings.SetLastSyncDate(settings, _api.Market, _api.MarketplaceId, DateTime.UtcNow); db.InventoryReports.MarkProcessedByReportId(_reportService.ReportId, ReportProcessingResultType.Success); _reportService = null; } } } else { LogWrite("Do not have any reports of type=" + _reportService.ReportType.ToString()); _reportSettings.SetLastSyncDate(settings, _api.Market, _api.MarketplaceId, DateTime.UtcNow); _reportService = null; } } if (_reportSettings.RequestMode == ReportRequestMode.Requested) { if (_reportService == null) { LogWrite("Create reportService"); _syncInfo = new DbSyncInformer(dbFactory, log, time, SyncType.Listings, _api.MarketplaceId, _api.Market, String.Empty); _reportService = new AmazonReportService(_reportSettings.ReportType, CompanyId, _api, log, time, dbFactory, _syncInfo, styleManager, notificationService, styleHistoryService, itemHistoryService, actionService, _reportSettings.GetParser(), _reportSettings.ReportDirectory); using (var db = dbFactory.GetRWDb()) { var lastUnsavedReport = db.InventoryReports.GetLastUnsaved((int)_reportService.ReportType, _api.MarketplaceId); if (lastUnsavedReport == null || (time.GetUtcTime() - lastUnsavedReport.RequestDate) > _reportSettings.AwaitInterval) { LogWrite("Request report"); _syncInfo.SyncBegin(null); _syncInfo.AddInfo("", "Request report from Amazon"); _reportService.RequestReport(); db.InventoryReports.AddRequestedReport(_reportService.ReportRequestId, (int)_reportService.ReportType, _api.MarketplaceId); } else { LogWrite("Use last report request, id=" + lastUnsavedReport.Id + ", marketplaceId=" + lastUnsavedReport.MarketplaceId); _syncInfo.OpenLastSync(); _syncInfo.AddInfo("", "Use last Amazon report request"); _reportService.UseReportRequestId(lastUnsavedReport.RequestIdentifier); } } } else { using (var db = dbFactory.GetRWDb()) { LogWrite("Save report"); if (_reportService.SaveRequestedReport()) { LogWrite("Save success, reportId=" + _reportService.ReportId + ", reportName=" + _reportService.ReportFileName); db.InventoryReports.Update(_reportService.ReportRequestId, _reportService.ReportFileName, _reportService.ReportId); ProcessReport(settings); db.InventoryReports.MarkProcessedByReportId(_reportService.ReportId, ReportProcessingResultType.Success); _reportSettings.SetLastSyncDate(settings, _api.Market, _api.MarketplaceId, time.GetUtcTime()); _reportService = null; } else { LogWrite("Could not save report"); var requestStatus = _reportService.GetRequestStatus(); if (requestStatus == null) { LogWrite("Request status empty, reportId=" + _reportService); db.InventoryReports.MarkProcessedByRequestId(_reportService.ReportRequestId, ReportProcessingResultType.Cancelled); _reportSettings.SetLastSyncDate(settings, _api.Market, _api.MarketplaceId, time.GetUtcTime()); _reportService = null; } else { if (requestStatus.Status == "_CANCELLED_") { LogWrite("Mark as cancelled (requestStatus = _CANCELLED_"); db.InventoryReports.MarkProcessedByRequestId(_reportService.ReportRequestId, ReportProcessingResultType.Cancelled); _reportSettings.SetLastSyncDate(settings, _api.Market, _api.MarketplaceId, DateTime.UtcNow); _reportService = null; } else { if (_reportService.SaveReportAttempts > _reportSettings.MaxRequestAttempt) { LogWrite("Mark as failed (MaxAttampts), saveReportAttempts > maxRequestAttempt"); db.InventoryReports.MarkProcessedByRequestId(_reportService.ReportRequestId, ReportProcessingResultType.MaxAttampts); _reportSettings.SetLastSyncDate(settings, _api.Market, _api.MarketplaceId, DateTime.UtcNow); _reportService = null; } else { Thread.Sleep(TimeSpan.FromMinutes(Int32.Parse(AppSettings.ReportRequestAttemptIntervalMinutes))); } } } } } } } } }