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));
            }
        }