public async Task <UserDefinition> GetItemAsync(List <DataProviderFilterInfo> filters)
        {
            UserDefinition user = await DataProvider.GetOneRecordAsync(filters);

            if (user != null)
            {
                return(user);
            }
            if (SuperuserDefinitionDataProvider.SuperuserAvailable)
            {
                using (SuperuserDefinitionDataProvider superDP = new SuperuserDefinitionDataProvider()) {
                    return(await superDP.GetItemAsync(filters));
                }
            }
            return(null);
        }
        public async Task <DataProviderGetRecords <UserDefinition> > GetItemsAsync(int skip, int take, List <DataProviderSortInfo> sort, List <DataProviderFilterInfo> filters, bool IncludeSuperuser = true)
        {
            if (IncludeSuperuser && SuperuserDefinitionDataProvider.SuperuserAvailable)
            {
                UserDefinition superuser = null;
                int            origSkip = skip, origTake = take;

                using (SuperuserDefinitionDataProvider superDP = new SuperuserDefinitionDataProvider()) {
                    superuser = await superDP.GetItemAsync(filters);
                }

                DataProviderGetRecords <UserDefinition> recs = new DataProviderGetRecords <UserDefinition>();

                recs.Total = 0;
                if (superuser != null)
                {
                    recs.Total = 1;
                    if (skip > 0)
                    {
                        superuser = null;
                        --skip;
                    }
                    else
                    {
                        if (take > 0)
                        {
                            take--;
                        }
                    }
                }

                int userTotal = 0;
                if (take == 0 && origTake > 0)
                {
                    // we just need the total
                    List <DataProviderFilterInfo> newfilters = null;
                    newfilters = DataProviderFilterInfo.Join(newfilters, new DataProviderFilterInfo {
                        Field = nameof(UserDefinition.UserName), Operator = "==", Value = null
                    });
                    DataProviderGetRecords <UserDefinition> trecs = await DataProvider.GetRecordsAsync(0, 1, sort, newfilters);

                    userTotal = trecs.Total;
                    recs.Data = new List <UserDefinition>();
                }
                else
                {
                    DataProviderGetRecords <UserDefinition> trecs = await DataProvider.GetRecordsAsync(skip, take, sort, filters);

                    userTotal = trecs.Total;
                    recs.Data = trecs.Data;
                }
                if (superuser != null)
                {
                    recs.Data.Insert(0, superuser);
                }
                recs.Total += userTotal;
                return(recs);
            }
            else
            {
                return(await DataProvider.GetRecordsAsync(skip, take, sort, filters));
            }
        }