This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user