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