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.Biz;
using AyaNova.DataList; using AyaNova.DataList;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Linq;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; 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 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 }//eoc

View File

@@ -24,6 +24,9 @@ namespace AyaNova.DataList
//CLIENT / SERVER - client display server validation purposes //CLIENT / SERVER - client display server validation purposes
public bool IsSortable { get; set; } 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 //CLIENT Use only for display
public int UiFieldDataType { get; set; } public int UiFieldDataType { get; set; }
@@ -56,6 +59,7 @@ namespace AyaNova.DataList
IsFilterable = true; IsFilterable = true;
IsSortable = true; IsSortable = true;
IsRowId = false; 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 //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; AyaObjectType = (int)AyaType.NoType;

View File

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

View File

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