This commit is contained in:
2020-11-24 19:59:20 +00:00
parent 122de641e4
commit 66136634bc
4 changed files with 38 additions and 12 deletions

View File

@@ -7,6 +7,7 @@ using AyaNova.Api.ControllerHelpers;
using AyaNova.Biz;
using AyaNova.DataList;
using System.Threading.Tasks;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@@ -117,7 +118,8 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, null, $"DataList \"{DataListKey}\" specified does not exist"));
}
return Ok(ApiOkResponse.Response(DataList.FieldDefinitions));
var ExternalOnly = DataList.FieldDefinitions.Where(z => z.IsMeta == false);
return Ok(ApiOkResponse.Response(ExternalOnly));
}
}//eoc

View File

@@ -24,6 +24,9 @@ namespace AyaNova.DataList
//CLIENT / SERVER - client display server validation purposes
public bool IsSortable { get; set; }
//CLIENT / SERVER - indicates internal only meta column, don't show to user for filter settings etc
public bool IsMeta { get; set; }
//CLIENT Use only for display
public int UiFieldDataType { get; set; }
@@ -56,6 +59,7 @@ namespace AyaNova.DataList
IsFilterable = true;
IsSortable = true;
IsRowId = false;
IsMeta=false;
//Set openable object type to no type which is the default and means it's not a link to another object
AyaObjectType = (int)AyaType.NoType;

View File

@@ -42,7 +42,7 @@ namespace AyaNova.DataList
UiFieldDataType = (int)UiFieldDataType.Text,
SqlIdColumnName = "auser.id",
SqlValueColumnName = "auser.name",
IsRowId = true
IsRowId = false
});
@@ -64,6 +64,15 @@ namespace AyaNova.DataList
UiFieldDataType = (int)UiFieldDataType.DateTime,
SqlValueColumnName = "acustomernote.notedate"
});
//META column
FieldDefinitions.Add(new AyaDataListFieldDefinition
{
FieldKey = "metacustomer",
SqlIdColumnName = "acustomernote.customerid",
SqlValueColumnName = "acustomernote.customerid",
IsMeta = true
});
}
}//eoc
}//eons

View File

@@ -35,16 +35,27 @@ namespace AyaNova.DataList
listOptions.ListView = DataList.DefaultListView;
}
//parse the list view
var ListViewArray = JArray.Parse(listOptions.ListView);
//parse the list view(s)
//This one is for the return list to the Client for grid column display
var PublicListViewArray = JArray.Parse(listOptions.ListView);
//this one is for internal use here to build the filter and sort etc
var InternalListViewArray = JArray.Parse(listOptions.ListView);
var MetaListViewArray = JArray.Parse(listOptions.MetaView ?? "[]");
foreach (JToken jt in MetaListViewArray)
InternalListViewArray.Add(jt);
//Get the field key names in a list from the listview
List<string> ListViewFieldList = DataList.GetFieldListFromListView(ListViewArray);
//Get the public field key names in a list from the listview
List<string> PublicListViewFieldList = DataList.GetFieldListFromListView(PublicListViewArray);
//Get the internal only field key names from the internal list view
List<string> InternalListViewFieldList = DataList.GetFieldListFromListView(InternalListViewArray);
//BUILD THE QUERY
//SELECT FRAGMENT COLUMNS FROM TEMPLATE
var SelectBuild = DataListSqlSelectBuilder.Build(DataList.FieldDefinitions, ListViewFieldList);
var SelectBuild = DataListSqlSelectBuilder.Build(DataList.FieldDefinitions, InternalListViewFieldList);
//FROM CLAUSE
var qFrom = DataList.SQLFrom;
@@ -53,11 +64,11 @@ namespace AyaNova.DataList
var qOrderBy = string.Empty;
//WHERE CLAUSE - FILTER
qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, ListViewArray);
qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, InternalListViewArray);
//ORDER BY CLAUSE - SORT
//BUILD ORDER BY
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, ListViewArray);
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, InternalListViewArray);
//LIMIT AND OFFSET CLAUSE - PAGING
listOptions.Offset = listOptions.Offset ?? ListOptions.DefaultOffset;
@@ -72,7 +83,7 @@ namespace AyaNova.DataList
qTotalRecordsQuery = $"SELECT COUNT(*) {qFrom} {qWhere}".Replace(" ", " ");
//RETURN OBJECTS
int returnRowColumnCount = ListViewFieldList.Count();
int returnRowColumnCount = PublicListViewFieldList.Count();
List<List<AyaFieldData>> rows = new List<List<AyaFieldData>>();
long totalRecordCount = 0;
@@ -93,7 +104,7 @@ namespace AyaNova.DataList
//INSERT REMAINING FIELDS FROM TEMPLATE INTO THE RETURN ROWS LIST
foreach (string TemplateField in ListViewFieldList)
foreach (string TemplateField in PublicListViewFieldList)
{
//get the AyaObjectFieldDefinition
@@ -194,7 +205,7 @@ namespace AyaNova.DataList
//BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT
Newtonsoft.Json.Linq.JArray ColumnsJSON = null;
ColumnsJSON = DataList.GenerateListColumnsJSONFromListView(ListViewArray);
ColumnsJSON = DataList.GenerateListColumnsJSONFromListView(PublicListViewArray);
return new ApiDataListResponse(rows, totalRecordCount, ColumnsJSON);