public async Task <ActionResult <SINSearchResult> > GetSINnersByAuthorization() { SINSearchResult ret = new SINSearchResult(); try { var user = await _signInManager.UserManager.GetUserAsync(User); if (user == null) { ret.ErrorText = "Unauthorized"; return(Unauthorized(ret)); } //get all from visibility SINnersList list = new SINnersList(); var userseq = (from a in _context.UserRights where a.EMail == user.NormalizedEmail && a.CanEdit == true select a).ToList(); foreach (var ur in userseq) { if (ur?.SINnerId == null) { continue; } var sin = await _context.SINners.Include(a => a.SINnerMetaData.Visibility.UserRights).FirstOrDefaultAsync(a => a.Id == ur.SINnerId); if (sin != null) { list.SINners.Add(sin); } } list.Header = "Edit"; ret.SINLists.Add(list); //get all from my group SINnersList grouplist = new SINnersList(); var sinseq = (from a in _context.SINners.Include(a => a.SINnerMetaData).Include(b => b.SINnerMetaData.Visibility) where a.SINnerMetaData.Visibility.IsGroupVisible == true && a.SINnerMetaData.Visibility.Groupname == user.Groupname select a).ToList(); foreach (var sin in sinseq) { if (sin.Id == null) { continue; } if (list.SINners.Contains(sin)) { continue; } if (sin != null) { grouplist.SINners.Add(sin); } } grouplist.Header = "Group"; ret.SINLists.Add(grouplist); //get all that are viewable but NOT editable SINnersList viewlist = new SINnersList(); userseq = (from a in _context.UserRights where a.EMail == user.NormalizedEmail && a.CanEdit == false select a).ToList(); foreach (var ur in userseq) { if (ur?.SINnerId == null) { continue; } var sin = await _context.SINners.Include(a => a.SINnerMetaData.Visibility.UserRights).FirstOrDefaultAsync(a => a.Id == ur.SINnerId); if (sin != null) { if (list.SINners.Contains(sin)) { continue; } if (grouplist.SINners.Contains(sin)) { continue; } viewlist.SINners.Add(sin); } } viewlist.Header = "View"; ret.SINLists.Add(viewlist); return(Ok(ret)); } catch (Exception e) { ret.ErrorText = e.ToString(); return(BadRequest(ret)); } }
public async Task <ActionResult <SINSearchResult> > GetSINnersByAuthorization() { SINSearchResult ret = new SINSearchResult(); try { var user = await _signInManager.UserManager.GetUserAsync(User); if (user == null) { ret.ErrorText = "Unauthorized"; throw new AuthenticationException("User is not authenticated."); } //get all from visibility SINnersList list = new SINnersList(); List <SINner> mySinners = await SINner.GetSINnersFromUser(user, _context, true); foreach (var sin in mySinners) { SINnerList owndSINner = new SINnerList { SINner = sin }; if (sin.MyGroup != null) { //add all members of his group var members = await sin.MyGroup.GetGroupMembers(_context); foreach (var member in members) { if (member.Id == sin.Id) { continue; } if ((member.SINnerMetaData.Visibility.IsGroupVisible == true) || (member.SINnerMetaData.Visibility.IsPublic) ) { member.MyGroup = sin.MyGroup; member.MyGroup.MyGroups = new List <SINnerGroup>(); SINnerList memberlist = new SINnerList(); memberlist.SINner = member; owndSINner.SINList.Add(memberlist); } } sin.MyGroup.MyGroups = new List <SINnerGroup>(); ; } list.MySINnersList.Add(owndSINner); } ret.SINLists.Add(list); return(Ok(ret)); } catch (Exception e) { if (e is HubException) { return(BadRequest(e)); } HubException hue = new HubException(e.Message, e); return(BadRequest(hue)); } }