public void DoImport(UserImportOptions options, UserImportStatus status) { status.State = JobState.Initializing; try { UserCSVSheetItem userCsvSheetItem = Factory.GetDatabase(options.Database).GetItem(options.CsvSheetItemId); status.State = JobState.Running; if (options.DownloadLatestFile) { userCsvSheetItem.DownloadLatestCsv(options.IgnoreFileDate); } FileInfo file = new FileInfo(userCsvSheetItem.CsvFileFullPath); if (!file.Exists) { status.ErrorMessage = userCsvSheetItem.FileName + ": File cannot be found."; } status.CsvFileName = file.FullName; status.CsvFileDate = file.LastWriteTime; userCsvSheetItem.ImportUsersFromCsv(options.IgnoreFileDate, status); } catch (Exception e) { status.ErrorMessage = e.Message; Log.Error("Error importing users", e, this); } status.State = JobState.Finished; }
public static Handle ImportUsers(string userSheetItemId, string database, bool downloadFile, bool ignoreDate) { UserImportStatus importStatus = new UserImportStatus(); UserImportOptions options = new UserImportOptions() { CsvSheetItemId = userSheetItemId, Database = database, DownloadLatestFile = downloadFile, IgnoreFileDate = ignoreDate }; JobOptions options1 = new JobOptions("ImportCsvUsers", "UserImportManager", "shell", (object)new UserImportManager(), "DoImport", new object[2] { (object) options, (object) importStatus }); options1.ContextUser = Context.User; options1.ClientLanguage = Context.Language; options1.AfterLife = TimeSpan.FromMilliseconds(1000); options1.Priority = ThreadPriority.Normal; options1.ExecuteInManagedThreadPool = true; importStatus.State = JobState.Queued; Job job = JobManager.Start(options1); job.Options.CustomData = (object)importStatus; return job.Handle; }