public FileExplorerMoveResult Rename(string path, string newPath) { var srcRealPath = GetRealPath(path); var srcWebPath = GetWebPath(srcRealPath); var srcDlPath = GetDownloadPath(srcRealPath); var srcName = GetItemName(srcWebPath); var tgtRealPath = GetRealPath(newPath); var tgtWebPath = GetWebPath(tgtRealPath); var tgtDlPath = GetDownloadPath(tgtRealPath); var tgtName = GetItemName(tgtWebPath); if (Directory.Exists(srcRealPath)) { var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, true, null); if (!Directory.Exists(tgtRealPath)) { var tgtDirContainer = Path.GetDirectoryName(tgtRealPath); if (tgtDirContainer != null && !Directory.Exists(tgtDirContainer)) { Directory.CreateDirectory(tgtDirContainer); } Directory.Move(srcRealPath, tgtRealPath); var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true, null); var result = new FileExplorerMoveResult(bef, aft); return(result); } else { var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true, new[] { $"ProtoCMS: directory '{tgtWebPath}' already exists." }); var result = new FileExplorerMoveResult(bef, aft); return(result); } } if (File.Exists(srcRealPath)) { var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, null); if (!File.Exists(tgtRealPath)) { var tgtFileContainingDir = Path.GetDirectoryName(tgtRealPath); if (tgtFileContainingDir != null && !Directory.Exists(tgtFileContainingDir)) { Directory.CreateDirectory(tgtFileContainingDir); } File.Move(srcRealPath, tgtRealPath); var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false, null); var result = new FileExplorerMoveResult(bef, aft); return(result); } else { var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false, new[] { $"ProtoCMS: file '{tgtWebPath}' already exists." }); var result = new FileExplorerMoveResult(bef, aft); return(result); } } return(new FileExplorerMoveResult( new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, null), new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, new[] { $"ProtoCMS: file or directory '{srcWebPath}' doesn't exists." }) )); }
public FileExplorerMoveResult[] CopyToDir(string[] paths, string targetDir) { var results = new List <FileExplorerMoveResult>(); var tgtBasePath = GetRealPath(targetDir); foreach (var path in paths) { var srcRealPath = GetRealPath(path); var srcWebPath = GetWebPath(srcRealPath); var srcDlPath = GetDownloadPath(srcRealPath); var srcName = GetItemName(srcWebPath); var tgtRealPath = Path.Combine(tgtBasePath, srcName); var tgtWebPath = GetWebPath(tgtRealPath); var tgtDlPath = GetDownloadPath(tgtRealPath); var tgtName = GetItemName(tgtWebPath); if (Directory.Exists(srcRealPath)) { var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, true, null); var dirCopyErrs = new List <string>(); if (!Directory.Exists(tgtRealPath)) { var allSrcFiles = Directory.EnumerateFiles(srcRealPath, "*.*", SearchOption.AllDirectories) .ToArray(); foreach (var srcFileRealPath in allSrcFiles) { var srcFileWebPath = GetWebPath(srcFileRealPath); var srcFileName = GetItemName(srcFileWebPath); var tgtFileRealPath = Path.Combine(tgtRealPath, srcFileName); var tgtFileWebPath = GetWebPath(tgtFileRealPath); if (!File.Exists(tgtFileRealPath)) { var tgtFileContainingDir = Path.GetDirectoryName(tgtFileRealPath); if (tgtFileContainingDir != null && !Directory.Exists(tgtFileContainingDir)) { Directory.CreateDirectory(tgtFileContainingDir); } File.Copy(srcFileRealPath, tgtFileRealPath); } else { dirCopyErrs.Add($"ProtoCMS: file '{tgtFileWebPath}' already exists."); } } var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true, dirCopyErrs.Count == 0 ? null : dirCopyErrs.ToArray()); var result = new FileExplorerMoveResult(bef, aft); results.Add(result); } else { var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, true, new[] { $"ProtoCMS: directory '{tgtWebPath}' already exists." }); var result = new FileExplorerMoveResult(bef, aft); results.Add(result); } } else if (File.Exists(srcRealPath)) { var bef = new FileExplorerOperationResult(srcRealPath, srcWebPath, srcName, srcDlPath, false, null); if (!File.Exists(tgtRealPath)) { var tgtFileContainingDir = Path.GetDirectoryName(tgtRealPath); if (tgtFileContainingDir != null && !Directory.Exists(tgtFileContainingDir)) { Directory.CreateDirectory(tgtFileContainingDir); } else { File.Copy(srcRealPath, tgtRealPath); } var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false, null); var result = new FileExplorerMoveResult(bef, aft); results.Add(result); } else { var aft = new FileExplorerOperationResult(tgtRealPath, tgtWebPath, tgtName, tgtDlPath, false, new[] { $"ProtoCMS: file '{tgtWebPath}' already exists." }); var result = new FileExplorerMoveResult(bef, aft); results.Add(result); } } } return(results.ToArray()); }