/// <summary>
        /// pobranie użytkowników którzy nie nalezą do grupy i nie zostało wysłane do nich zaproszenie do danej grupy
        /// </summary>
        /// <param name="pageParams"></param>
        /// <param name="groupId"></param>
        /// <param name="groupUserFilters"></param>
        /// <returns></returns>
        public async Task <PagedList <UserToModifyNameDto> > GetUsersForApplication(PageParams pageParams, int groupId, GroupUsersFilter groupUserFilters)
        {
            // pobranie użytkowników grupy
            var groupUsers = await _context.UserToGroups.Where(x => x.GroupId == groupId).ToListAsync();

            // pobranie zaproszeń do użytkowników dla danej grupy
            var invitedUsers = await _context.Invitations.Where(x => x.GroupId == groupId).ToListAsync();

            // wszyscy uzytkownicy aplikacji
            var appUsers = await _context.Users.ToListAsync();

            // lista użytkowników, którzy nie należą do grupy i którzy nie zostali zaproszeni
            List <UserToModifyNameDto> lstUsers = new List <UserToModifyNameDto>();


            // jeżeli grupa ma jakiś użytkowników
            if (appUsers.Count > 0)
            {
                foreach (Users usr in appUsers)
                {
                    // jeżeli zaproszenie zostało wysłane pomijamy uzytkownika
                    if (invitedUsers.Any(x => x.UserAdresserId == usr.Id))
                    {
                        continue;
                    }

                    // jeżeli użytkownik należy już do grupy
                    if (groupUsers.Any(x => x.UserId == usr.Id))
                    {
                        continue;
                    }

                    // jeżeli nie nalezy do grupy ani jezeli nie zostalo wyslane zaproszenie pokazujemy
                    UserToModifyNameDto utmnu = new UserToModifyNameDto()
                    {
                        UserId   = usr.Id,
                        UserName = usr.UserName
                    };
                    lstUsers.Add(utmnu);
                }
            }


            if (groupUserFilters != null)
            {
                if (groupUserFilters.UserNameLike != null)
                {
                    lstUsers = lstUsers.Where(x => x.UserName.ToLower().Contains(groupUserFilters.UserNameLike.ToLower())).ToList();
                }
            }

            return(await PagedList <UserToModifyNameDto> .Create(lstUsers, pageParams.PageNumber, pageParams.PageSize));
        }
        /// <summary>
        /// pobranie uzytkowników należących do danej grupy
        /// </summary>
        /// <param name="pageParams"></param>
        /// <param name="groupId"></param>
        /// <param name="groupUserFilters"></param>
        /// <returns></returns>
        public async Task <PagedList <UserToModifyNameDto> > GetUsersFromGroup(PageParams pageParams, int groupId, GroupUsersFilter groupUserFilters)
        {
            // pobranie użytkowników grupy
            var groupUsers = await _context.UserToGroups.Where(x => x.GroupId == groupId).ToListAsync();


            // lista użytkowników, którzy należą do grupy
            List <UserToModifyNameDto> lstUsers = new List <UserToModifyNameDto>();


            // jeżeli grupa ma jakiś użytkowników
            if (groupUsers.Count > 0)
            {
                foreach (UserToGroups usr in groupUsers)
                {
                    var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == usr.UserId);

                    UserToModifyNameDto utmnu = new UserToModifyNameDto()
                    {
                        UserId   = user.Id,
                        UserName = user.UserName
                    };
                    lstUsers.Add(utmnu);
                }
            }


            if (groupUserFilters != null)
            {
                if (groupUserFilters.UserNameLike != null)
                {
                    lstUsers = lstUsers.Where(x => x.UserName.ToLower().Contains(groupUserFilters.UserNameLike.ToLower())).ToList();
                }
            }

            return(await PagedList <UserToModifyNameDto> .Create(lstUsers, pageParams.PageNumber, pageParams.PageSize));
        }
        public async Task <PagedList <UserToModifyNameDto> > GetAllUsersFromGroup([FromQuery] PageParams pageParams, [FromQuery] int groupId, [FromQuery] GroupUsersFilter filters)
        {
            var usersWhichNotInGroup = await _repo.GetUsersFromGroup(pageParams, groupId, filters);

            Response.AddPagination(usersWhichNotInGroup.CurrentPage, usersWhichNotInGroup.PageSize, usersWhichNotInGroup.TotalCount, usersWhichNotInGroup.TotalPages);

            return(usersWhichNotInGroup);
        }