public void Backup(string projectFile, List <SyncItem> syncItems, Constants.SyncOperation syncOperation) { DateTime timeStamp = DateTime.Now; string projectDirectory = Path.GetDirectoryName(projectFile); string backupSubFolder = ConfigSettings.ProjectBackupFolder; string targetDirectory = GenerateDirectoryPath(timeStamp, projectDirectory, backupSubFolder, syncOperation, Constants.FileCategory.TargetFile); string workingDirectory = GenerateDirectoryPath(timeStamp, projectDirectory, backupSubFolder, syncOperation, Constants.FileCategory.WorkingFile); foreach (SyncItem item in syncItems) { if (File.Exists(item.TargetFile)) { if (!Directory.Exists(targetDirectory)) { Directory.CreateDirectory(targetDirectory); } File.Copy(item.TargetFile, Path.Combine(targetDirectory, item.TargetTitle)); } if (File.Exists(item.WorkingFile)) { if (!Directory.Exists(workingDirectory)) { Directory.CreateDirectory(workingDirectory); } File.Copy(item.WorkingFile, Path.Combine(workingDirectory, item.WorkingTitle)); } } if (syncOperation == Constants.SyncOperation.ProjectEdit) { File.Copy(projectFile, Path.Combine(GenerateDirectoryPath(timeStamp, projectDirectory, backupSubFolder, syncOperation, Constants.FileCategory.ProjectFile), Path.GetFileName(projectFile))); } }
private string GenerateDirectoryPath(DateTime timeStamp, string projectDirectory, string backupSubFolder, Constants.SyncOperation syncOperation, Constants.FileCategory fileSource) { string directory = string.Empty; if (syncOperation == Constants.SyncOperation.SyncLeftToRight) { if (fileSource == Constants.FileCategory.TargetFile) { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_LtoR", "Target"); } else if (fileSource == Constants.FileCategory.WorkingFile) { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_LtoR", "Working"); } else { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_LtoR"); } } else if (syncOperation == Constants.SyncOperation.SyncRightToLeft) { if (fileSource == Constants.FileCategory.TargetFile) { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_RtoL", "Target"); } else if (fileSource == Constants.FileCategory.WorkingFile) { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_RtoL", "Working"); } else { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_RtoL"); } } else if (syncOperation == Constants.SyncOperation.ProjectEdit) { if (fileSource == Constants.FileCategory.TargetFile) { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_edit", "Target"); } else if (fileSource == Constants.FileCategory.WorkingFile) { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_edit", "Working"); } else { directory = Path.Combine(projectDirectory, backupSubFolder, TodayPart(timeStamp) + "__" + TimePart(timeStamp) + "_edit"); } } return(directory); }