public override FileSystem.Directory GetDirectory(string VirtualPath, bool CreateNew)
{
VirtualPath = VirtualPath.VirtualPathToDbPath();
FileSystem.FileStoreDb db = new FileSystem.FileStoreDb(this.connectionString);
if (string.IsNullOrWhiteSpace(VirtualPath))
{
var directory = db.FileStoreDirectories.FirstOrDefault(x => x.BlogID == Blog.CurrentInstance.Id && x.ParentID == null);
if (directory == null)
{
db.Dispose();
return this.CreateDirectory(VirtualPath);
}
var obj = directory.CopyToDirectory();
db.Dispose();
return obj;
}
else
{
var dir = db.FileStoreDirectories.FirstOrDefault(x => x.FullPath.ToLower() == VirtualPath.ToLower() && x.BlogID == Blog.CurrentInstance.Id);
if (dir == null)
{
var newDirectoryPieces = VirtualPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
var cPath = string.Empty;
foreach (var pieces in newDirectoryPieces)
{
cPath = string.Format("{0}/{1}", cPath, pieces);
if (!DirectoryExists(cPath))
CreateDirectory(cPath);
}
var nObj = GetDirectory(VirtualPath);
db.Dispose();
return nObj;
}
var obj = dir.CopyToDirectory();
db.Dispose();
return obj;
}
}