public void DeleteFeedFiles(string secondFileName = null) { try { var extensions = new List <string>() { "xml", "csv" }; if (!extensions.Contains(BaseSettings.ExportFormat)) { extensions.Add(BaseSettings.ExportFormat); } var storeService = _ctx.Resolve <IStoreService>(); var stores = storeService.GetAllStores(); foreach (var store in stores) { foreach (var ext in extensions) { var feedFile = GetFeedFileByStore(store, secondFileName, ext); if (feedFile != null) { AppPath.Delete(feedFile.FileTempPath); AppPath.Delete(feedFile.FilePath); AppPath.Delete(feedFile.LogPath); if (secondFileName.HasValue()) { AppPath.Delete(feedFile.CustomProperties["SecondFilePath"] as string); AppPath.Delete(feedFile.CustomProperties["SecondFileTempPath"] as string); } } } } } catch (Exception exc) { Notifier.Error(exc.Message); } }
public void StartCreatingFeeds(Func <FeedFileCreationContext, bool> createFeed, string secondFileName = null) { try { using (var scope = new DbContextScope(autoDetectChanges: false, validateOnSave: false, forceNoTracking: true)) { _cachedPathes = null; _cachedCategories = null; var storeService = _ctx.Resolve <IStoreService>(); var stores = new List <Store>(); if (BaseSettings.StoreId != 0) { var storeById = storeService.GetStoreById(BaseSettings.StoreId); if (storeById != null) { stores.Add(storeById); } } if (stores.Count == 0) { stores.AddRange(storeService.GetAllStores()); } var context = new FeedFileCreationContext() { StoreCount = stores.Count, Progress = new Progress <FeedFileCreationProgress>(x => { AsyncState.Current.Set(x, SystemName); }) }; foreach (var store in stores) { var feedFile = GetFeedFileByStore(store, secondFileName); if (feedFile != null) { AppPath.Delete(feedFile.FileTempPath); if (secondFileName.HasValue()) { AppPath.Delete(feedFile.CustomProperties["SecondFileTempPath"] as string); } using (var stream = new FileStream(feedFile.FileTempPath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) using (var logger = new TraceLogger(feedFile.LogPath)) { context.Stream = stream; context.Logger = logger; context.Store = store; context.FeedFileUrl = feedFile.FileUrl; if (secondFileName.HasValue()) { context.SecondFilePath = feedFile.CustomProperties["SecondFileTempPath"] as string; } if (!createFeed(context)) { break; } } AppPath.Copy(feedFile.FileTempPath, feedFile.FilePath); if (secondFileName.HasValue()) { AppPath.Copy(context.SecondFilePath, feedFile.CustomProperties["SecondFilePath"] as string); } } } } } finally { AsyncState.Current.Remove <FeedFileCreationProgress>(SystemName); } }