/// <summary> /// Get a list of users projects for use in view. /// </summary> public List <ProjectListingViewModel> GetUsersProjects(string applicationUserID, bool templates = false) { var projects = _context.Projects .Where(n => n.CreatedByUserID == applicationUserID && n.Template == templates) .Select(x => new ProjectListingViewModel { ID = x.ID, Name = x.Name, CreatedByUserID = x.CreatedByUserID, Template = x.Template, CreatedDate = x.CreatedDate }) .ToList(); // Projects others are sharing with you. var othersProjects = _context.Projects .Join(_context.Sharings, p => p.ID, s => s.ProjectID, (p, s) => new ProjectSharingJoin() { P = p, S = s }) .Where(n => n.P.CreatedByUserID != applicationUserID && n.S.UserID == applicationUserID && n.P.Template == templates) .Select(x => new ProjectListingViewModel { ID = x.P.ID, Name = x.P.Name, CreatedByUserID = x.P.CreatedByUserID, Template = x.P.Template, CreatedDate = x.P.CreatedDate }) .ToList(); foreach (var p in projects) { p.SharedWith = SharedWithUsers(p.ID); p.CreatedByUser = _usersService.GetUserByID(p.CreatedByUserID); } foreach (var p in othersProjects) { p.SharedWith = SharedWithUsers(p.ID); p.CreatedByUser = _usersService.GetUserByID(p.CreatedByUserID); projects.Add(p); } return(projects); }
// <summary> // Fetch a view model version of the specified file. // </summary> public FileViewModel GetFile(int nodeID) { var file = _context.Nodes .Where(n => n.ID == nodeID) .Select(x => new FileViewModel { ID = x.ID, Name = x.Name, ParentNodeID = x.ParentNodeID, ProjectID = x.ProjectID, CreatedByUserID = x.CreatedByUserID, CreatedDate = x.CreatedDate }) .SingleOrDefault(); file.CreatedByUser = _usersService.GetUserByID(file.CreatedByUserID); return(file); }