コード例 #1
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 public FileSystemViewModel AddNode(IPrincipal user, long parentId, string nodeName, bool isFolder)
 {
     using (var db = new StebsDbContext())
     {
         //Validate input and get necessary information
         var fileSystem = LoadFileSystem(user, db);
         var parent = fileSystem.Nodes.FirstOrDefault(folder => folder.Id == parentId);
         if (parent != null && parent is Folder && ValideNodeName(nodeName))
         {
             //Create node
             if (isFolder)
             {
                 var node = new Folder() { FileSystem = fileSystem, Folder = parent as Folder, Name = nodeName };
                 fileSystem.Nodes.Add(node);
                 db.Folders.Add(node);
             }
             else
             {
                 var node = new File() { FileSystem = fileSystem, Folder = parent as Folder, Name = nodeName };
                 fileSystem.Nodes.Add(node);
                 db.Files.Add(node);
             }
             db.SaveChanges();
         }
         return fileSystem?.ToViewModel();
     }
 }
コード例 #2
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 public FileSystemViewModel GetFileSystem(IPrincipal user)
 {
     using (var db = new StebsDbContext())
     {
         return LoadFileSystem(user, db)?.ToViewModel();
     }
 }
コード例 #3
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 public FileSystemViewModel ChangeNodeName(IPrincipal user, long nodeId, string newNodeName)
 {
     using(var db = new StebsDbContext())
     {
         var fileSystem = LoadFileSystem(user, db);
         var node = fileSystem.Nodes.FirstOrDefault(n => n.Id == nodeId);
         if(node != null && ValideNodeName(newNodeName))
         {
             node.Name = newNodeName;
             db.SaveChanges();
         }
         return fileSystem?.ToViewModel();
     }
 }
コード例 #4
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 public FileSystemViewModel DeleteNode(IPrincipal user, long nodeId)
 {
     using (var db = new StebsDbContext())
     {
         var fileSystem = LoadFileSystem(user, db);
         var node = fileSystem.Nodes.FirstOrDefault(n => n.Id == nodeId);
         //Only delete folders if they're empty
         var validFolder = (!(node is Folder) || !(node as Folder).Children.Any());
         //The root folder will not be deleted
         if (node != null && validFolder && fileSystem.Root.Id != node.Id)
         {
             node.Folder.Children.Remove(node);
             fileSystem.Nodes.Remove(node);
             if(node is Folder) { db.Folders.Remove(node as Folder); }
             else if(node is File) { db.Files.Remove(node as File); }
             db.SaveChanges();
         }
         return fileSystem?.ToViewModel();
     }
 }
コード例 #5
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 private FileSystem LoadFileSystem(IPrincipal user, StebsDbContext db) => LoadFileSystem(user.Identity.GetUserId(), db);
コード例 #6
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 /// <summary>
 /// Returns the filesystem of the given user.
 /// </summary>
 /// <param name="user"></param>
 /// <param name="db"></param>
 /// <returns></returns>
 private FileSystem LoadFileSystem(string userId, StebsDbContext db) => db.Users
     .Where(u => u.Id == userId)
     .Include(u => u.FileSystem)
     .Select(u => u.FileSystem)
     .Include(fileSystem => fileSystem.Nodes)
     .FirstOrDefault();
コード例 #7
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 public void SaveFileContent(IPrincipal user, long fileId, string fileContent)
 {
     using (var db = new StebsDbContext())
     {
         var fileSystem = LoadFileSystem(user, db);
         var node = fileSystem.Nodes.FirstOrDefault(n => n.Id == fileId);
         if (node != null && node is File)
         {
             (node as File).Content = fileContent;
             db.SaveChanges();
         }
     }
 }
コード例 #8
0
ファイル: FileManager.cs プロジェクト: TheJP/stebs
 public string GetFileContent(IPrincipal user, long fileId)
 {
     using (var db = new StebsDbContext())
     {
         var fileSystem = LoadFileSystem(user, db);
         var node = fileSystem.Nodes.FirstOrDefault(n => n.Id == fileId);
         if (node != null && node is File)
         {
             return (node as File).Content ?? "";
         }
         return "Invalid file";
     }
 }