public IEnumerable <File> GetFiles(ProjectEntity entity) { if (entity == null) { return(new List <File>()); } if (!ProjectSecurity.CanReadFiles(entity.Project)) { return(new List <File>()); } using (var tagdao = FilesIntegration.GetTagDao()) using (var filedao = FilesIntegration.GetFileDao()) { var ids = tagdao.GetTags(entity.GetType().Name + entity.ID, TagType.System).Where(t => t.EntryType == FileEntryType.File).Select(t => t.EntryId).ToArray(); var files = 0 < ids.Length ? filedao.GetFiles(ids) : new List <File>(); var rootId = FileEngine.GetRoot(entity.Project.ID); //delete tags when file moved from project folder files.Where(file => !file.RootFolderId.Equals(rootId)).ToList() .ForEach(file => { DetachFile(entity, file.ID); files.Remove(file); }); files.ForEach(r => r.Access = FileEngine.GetFileShare(r, entity.Project.ID)); return(files); } }
public Project GetFullProjectByID(int projectID) { var project = DaoFactory.ProjectDao.GetById(projectID); if (!CanRead(project)) { return(null); } var filter = new TaskFilter { ProjectIds = new List <int> { projectID }, MilestoneStatuses = new List <MilestoneStatus> { MilestoneStatus.Open } }; var taskCount = TaskEngine.GetByFilterCount(filter); project.MilestoneCount = MilestoneEngine.GetByFilterCount(filter); project.TaskCount = taskCount.TasksOpen; project.TaskCountTotal = taskCount.TasksTotal; project.DiscussionCount = MessageEngine.GetByFilterCount(filter); using (var folderDao = FilesIntegration.GetFolderDao()) { var folderId = FileEngine.GetRoot(projectID); project.DocumentsCount = folderDao.GetItemsCount(folderId); } project.TimeTrackingTotal = TimeTrackingEngine.GetTotalByProject(projectID); project.ParticipantCount = GetTeam(projectID).Count(); return(project); }