示例#1
0
        //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);
        }
示例#2
0
        //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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }