//Deletes specific folder and every file and folder in it public bool DeleteFolder(int FolderID) { Folder TheFolder = GetFolderByID(FolderID); //Get folder with FolderID and its project Project TheProject = DB.Projects.Where(x => x.ID == TheFolder.ProjectStructure.ID).FirstOrDefault(); if (TheFolder == null || TheProject == null) { return(false); } List <Folder> AllFolders = DB.Folders.Where(x => x.ProjectStructure.ID == TheProject.ID).ToList(); foreach (Folder Fold in AllFolders) //Loops through all folders in the project and if a folder is { //a child of the folder to delete it is added to the function recursively if (Fold.FolderStructure != null && Fold.FolderStructure.ID == FolderID) { DeleteFolder(Fold.ID); } } List <File> FilesInFolder = DB.Files.Where(x => x.FolderStructure.ID == FolderID).ToList(); foreach (var Item in FilesInFolder) //loops through all files in folder to delete and { //deletes the file and the connection FileInProject Tmp = DB.FilesInProjects.Where(x => x.ProjectFile.ID == Item.ID).SingleOrDefault(); DB.FilesInProjects.Remove(Tmp); DB.Files.Remove(Item); } DB.Folders.Remove(TheFolder); //After folder is empty it is deleted and changes saved if (DB.SaveChanges() == 0) { return(false); } return(true); }
//Creates a project with User withc specific username as owner. Returns false if fails, otherwise true public bool CreateProject(CreateProjectViewModel NewCreateProject, string Username) { if (NewCreateProject == null || Username == "") { return(false); } var ProjectWithSameName = DB.Projects.Where(x => x.Owner.Username == Username && x.Name == NewCreateProject.Name).FirstOrDefault(); if (ProjectWithSameName != null) //If user has created a project with same name nothing is created and function returns false { return(false); } UserInfo Owner = DB.UsersInfo.Where(x => x.Username == Username).SingleOrDefault(); //User that is creating project Project NewProject = new Project(); //The project that is being made, gets values from viewmodel NewProject.Name = NewCreateProject.Name; NewProject.Type = NewCreateProject.Type; NewProject.Owner = Owner; NewProject.ReadMe = FService.CreateReadMe(NewCreateProject.ReadMe); //New ReadMe created NewProject.DateCreated = DateTime.Now; NewProject.DateModified = DateTime.Now; //If project is a web application more default files are made if (NewProject.Type == "Web Application") { var Files = FService.CreateWebApplication(); //Gets a list of extra files FileInProject FIProjectCSS = new FileInProject(); //connection between file and project is made FIProjectCSS.FileProject = NewProject; FIProjectCSS.ProjectFile = Files[0]; //css file FileInProject FIProjectJS = new FileInProject(); //connection between file and project is made FIProjectJS.FileProject = NewProject; FIProjectJS.ProjectFile = Files[1]; //js file DB.FilesInProjects.Add(FIProjectCSS); //added to database DB.FilesInProjects.Add(FIProjectJS); } DB.Projects.Add(NewProject); //Project added to database DB.SaveChanges(); //Connection between user creating and project is made ProjectOwner POwner = new ProjectOwner(); POwner.Owner = Owner; POwner.OwnerProject = NewProject; //Connection between default file and project is made FileInProject FIProject = new FileInProject(); FIProject.FileProject = NewProject; FIProject.ProjectFile = FService.CreateDefaultFile(NewProject.Type); //default file is made DB.ProjectOwners.Add(POwner); //connections added to database DB.FilesInProjects.Add(FIProject); DB.SaveChanges(); //changes saved and function returns true return(true); }
public bool DeleteFile(int?ID) { File ToDelete = GetFileByID(ID); if (ToDelete == null) { return(false); } FileInProject TheConnection = DB.FilesInProjects.Where(x => x.ProjectFile.ID == ToDelete.ID).FirstOrDefault(); DB.FilesInProjects.Remove(TheConnection); DB.Files.Remove(ToDelete); if (DB.SaveChanges() == 0) { return(false); } return(true); }
public bool AddFile(AddFilesViewModel Model) { var FileWithSameName = DB.FilesInProjects.Where(x => x.ProjectFile.Name == Model.Name && x.FileProject.ID == Model.ProjectID && x.ProjectFile.Type == Model.Type).FirstOrDefault(); if (FileWithSameName != null) { return(false); } // Make the file. File NewFile = new File(); NewFile.Name = Model.Name; NewFile.Type = Model.Type; NewFile.Location = "//This is a new file"; NewFile.FolderStructure = null; NewFile.DateCreated = DateTime.Now; NewFile.DateModified = DateTime.Now; // Add the connection. FileInProject NewConnection = new FileInProject(); NewConnection.ProjectFile = NewFile; Project TheProj = DB.Projects.Where(x => x.ID == Model.ProjectID).FirstOrDefault(); NewConnection.FileProject = TheProj; // Adding to the database. DB.Files.Add(NewFile); DB.FilesInProjects.Add(NewConnection); // If no changes are made to the database we return false. if (DB.SaveChanges() == 0) { return(false); } return(true); }