This commit is contained in:
2020-02-11 22:55:58 +00:00
parent aa0c73d415
commit 9625baa8da
10 changed files with 188 additions and 193 deletions

View File

@@ -13,7 +13,7 @@ namespace AyaNova.DataList
{
internal static class DataListFetcher
{
internal static async Task<ApiPagedResponse> GetResponseAsync(string DataListKey, AyContext ct, IUrlHelper Url,
internal static async Task<ApiDataListResponse> GetResponseAsync(string DataListKey, AyContext ct, IUrlHelper Url,
string routeName, ListOptions listOptions, long UserId, AuthorizationRoles UserRoles)
{
@@ -78,15 +78,19 @@ namespace AyaNova.DataList
DataListFilter TheFilter = null;
var qWhere = string.Empty;
var qOrderBy = string.Empty;
if (listOptions.DataFilterId > 0)
if (!string.IsNullOrWhiteSpace(listOptions.FilterJson))
{
TheFilter = await ct.DataListFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId);
//WHERE CLAUSE - FILTER
qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, TheFilter, DataList.FieldDefinitions, UserId);
qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, listOptions.FilterJson, DataList.FieldDefinitions, UserId);
}
if (!string.IsNullOrWhiteSpace(listOptions.SortJson))
{
//ORDER BY CLAUSE - SORT
//BUILD ORDER BY
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, TheFilter);
}else{
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, listOptions.SortJson);
}
else
{
//BUILD DEFAULT ORDER BY IF POSSIBLE
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, null);
}
@@ -180,38 +184,41 @@ namespace AyaNova.DataList
}
}
//RES.PAGING.COUNT is all I need so the rest is moot, particularly since it's a post method now to get a datalist not a GET with query parameters
//below commented stuff can go once it tests
//BUILD THE PAGING LINKS PORTION
//var pageLinks = new PaginationLinkBuilder(Url, routeName, null, listOptions, totalRecordCount).PagingLinksObject();
//http://localhost:7575/api/v8/DataList/List?Offset=2&Limit=3&DataFilterId=2&Mini=true&DataListKey=TestWidgetDataList
object routeValues = null;
//no data filter?
if (listOptions.DataFilterId == 0)
{
if (listOptions.Mini)
{
routeValues = new { DataListKey = DataListKey, Mini = listOptions.Mini };
}
else
{
routeValues = new { DataListKey = DataListKey };
}
}
else
{
if (listOptions.Mini)
{
routeValues = new { DataListKey = DataListKey, DataFilterId = listOptions.DataFilterId, Mini = listOptions.Mini };
}
else
{
routeValues = new { DataListKey = DataListKey, DataFilterId = listOptions.DataFilterId };
}
}
// object routeValues = null;
// //no data filter?
// if (listOptions.DataFilterId == 0)
// {
// if (listOptions.Mini)
// {
// routeValues = new { DataListKey = DataListKey, Mini = listOptions.Mini };
// }
// else
// {
// routeValues = new { DataListKey = DataListKey };
// }
// }
// else
// {
// if (listOptions.Mini)
// {
// routeValues = new { DataListKey = DataListKey, DataFilterId = listOptions.DataFilterId, Mini = listOptions.Mini };
// }
// else
// {
// routeValues = new { DataListKey = DataListKey, DataFilterId = listOptions.DataFilterId };
// }
// }
var pageLinks = new PaginationLinkBuilder(Url, routeName, routeValues, listOptions, totalRecordCount).PagingLinksObject();
// var pageLinks = new PaginationLinkBuilder(Url, routeName, routeValues, listOptions, totalRecordCount).PagingLinksObject();
//BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT
Newtonsoft.Json.Linq.JArray ColumnsJSON = null;
@@ -225,8 +232,8 @@ namespace AyaNova.DataList
}
ApiPagedResponse pr = new ApiPagedResponse(rows, pageLinks, ColumnsJSON);
return pr;
return new ApiDataListResponse(rows, totalRecordCount, ColumnsJSON);
}