Files
raven/server/AyaNova/models/DataListTableProcessingOptions.cs
2021-01-30 00:59:04 +00:00

67 lines
2.7 KiB
C#

using System.Collections.Generic;
using AyaNova.DataList;
using AyaNova.Biz;
using Newtonsoft.Json;
namespace AyaNova.Models
{
internal sealed class DataListTableProcessingOptions : DataListProcessingBase
{
internal List<string> Columns { get; set; }
internal const int MaxPageSize = 1000;
internal const int DefaultOffset = 0;
internal const int DefaultLimit = 25;
internal int? Offset { get; set; }
internal int? Limit { get; set; }
internal DataListTableProcessingOptions(
DataListTableRequest request,
IDataListProcessing dataList,
DataListSavedColumnView savedView,
DataListSavedFilter savedFilter,
long userId,
AuthorizationRoles userRoles)
{
//set some values from request
Limit = request.Limit;
Offset = request.Offset;
base.ClientCriteria = request.ClientCriteria;
base.DataListKey = request.DataListKey;
//SET COLUMNS
Columns = JsonConvert.DeserializeObject<List<string>>(savedView.Columns);
//SET SORTBY
base.SortBy = JsonConvert.DeserializeObject<Dictionary<string, string>>(savedView.Sort);
//SET FILTER
if (request.FilterId != 0)
base.Filter = JsonConvert.DeserializeObject<List<DataListFilterOption>>(savedFilter.Filter);
//SERVER FILTER PROCESSING HERE CODE SEE DATALISTFETCHER
/*
List<DataListFilterOption> StaticServerFilterOptions = new List<DataListFilterOption>();
if (DataList is IDataListInternalCriteria)
StaticServerFilterOptions = ((IDataListInternalCriteria)DataList).DataListInternalCriteria(userId, userRoles, dataListTableOptions);
// //Get the public field key names in a list from the listview
// List<string> PublicListViewFieldList = listOptions.Columns;
//Get the combination of all unique fields from both StaticServerFilterOptions and listOptions
//NOTE: this assumes no list options filter colums that don't exist in listoptions.columns
var AllUniqueFieldKeysRequiredForQuery = dataListTableOptions.Columns.Union(StaticServerFilterOptions.Select(z => z.Column).ToList()).ToList();
//Add the internal filters into the listoptions existing filters
//NOTE: There is currently no overlap between internal filtered columns and filters coming from the client
foreach (DataListFilterOption dfo in StaticServerFilterOptions)
dataListTableOptions.Filter.Add(dfo);
*/
}
}
}