/// <summary> /// Creates a list of "GroupWithMembership" which stores every group a user is in and wether he is a member of that group /// </summary> /// <param name="prefix"></param> /// <param name="currUser"></param> /// <returns></returns> public List <GroupWithMembership> SearchGroupsWithMemership(string prefix, string currUser) { List <GroupWithMembership> returnlist = new List <GroupWithMembership>(); var groups = (from g in _dbContext.Groups where g.Name.Contains(prefix) orderby g.Name select g).ToList(); foreach (var group1 in groups) { var inGroup = (from groupUser in _dbContext.GroupUsers where groupUser.GroupId == group1.Id && groupUser.UserId == currUser select groupUser).FirstOrDefault(); GroupWithMembership gwm = new GroupWithMembership(); gwm.IsMember = inGroup != null; gwm.Group = group1; if (!gwm.IsMember) { var request = (from r in _dbContext.GroupRequests where r.FromUserId == currUser && r.GroupId == group1.Id select r).FirstOrDefault(); gwm.AskedForAccess = request != null; } returnlist.Add(gwm); } return(returnlist); }
public List <GroupWithMembership> SearchGroupsOfUser(string currUser) { List <GroupWithMembership> returnlist = new List <GroupWithMembership>(); var groups = (from m in _dbContext.GroupUsers join g in _dbContext.Groups on m.GroupId equals g.Id where m.UserId == currUser orderby g.Name select g).ToList(); foreach (var group1 in groups) { GroupWithMembership gwm = new GroupWithMembership(); gwm.IsMember = true; gwm.Group = group1; gwm.AskedForAccess = false; returnlist.Add(gwm); } var requests = (from r in _dbContext.GroupRequests join g in _dbContext.Groups on r.GroupId equals g.Id where r.FromUserId == currUser orderby g.Name select g).ToList(); foreach (var request in requests) { GroupWithMembership gwm = new GroupWithMembership(); gwm.IsMember = false; gwm.Group = request; gwm.AskedForAccess = true; returnlist.Add(gwm); } return(returnlist);; }