This commit is contained in:
2020-01-21 23:18:29 +00:00
parent 7bb23fedd3
commit aac48abf0c
6 changed files with 24 additions and 25 deletions

View File

@@ -57,12 +57,7 @@ namespace AyaNova.Api.Controllers
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
var MOCK_WIDGET_DISPLAY_TEMPLATE_JSON = @"
{
""full"":[""widgetname"",""widgetserial"",""widgetdollaramount"",""widgetroles"",""widgetstartdate"",""widgetactive"",""username""],
""mini"":[""widgetname"",""widgetserial""]
}
";
//check rights at some point here
long UserId = UserIdFromContext.Id(HttpContext.Items);
ApiPagedResponse pr = await DataListFetcher.GetResponse(listOptions.DataListKey, ct, Url, nameof(List), listOptions, MOCK_WIDGET_DISPLAY_TEMPLATE_JSON, UserId);

View File

@@ -23,6 +23,7 @@ namespace AyaNova.DataList
public AuthorizationRoles AllowedRoles { get; set; }
public AyaType DefaultListObjectType { get; set; }
public string ListKey { get; set; }
public string DefaultDataListDisplayTemplate { get; set; }
public string GenerateMINIListColumnsJSON()
{

View File

@@ -12,23 +12,16 @@ namespace AyaNova.DataList
{
internal static class DataListFetcher
{
internal static async Task<ApiPagedResponse> GetResponse(
string DataListKey, AyContext ct, IUrlHelper Url,
string routeName, ListOptions listOptions, string JSONDataListTemplate, long UserId)
internal static async Task<ApiPagedResponse> GetResponse(string DataListKey, AyContext ct, IUrlHelper Url,
string routeName, ListOptions listOptions, long UserId)
{
//TODO: Get template (MOCKED FOR NOW UNTIL PROOF OF CONCEPT)
// var MOCK_WIDGET_USER_EMAIL_DISPLAY_TEMPLATE_JSON = @"
// {
// ""full"":[""widgetname"",""username"",""emailaddress"",""widgetactive""],
// ""mini"":[""widgetname"",""username"",""emailaddress""]
// }
// ";
// var AyaObjectFields = AyaObjectFieldDefinitions.AyaObjectFields(AyaObjectFieldDefinitions.TEST_WIDGET_USER_EMAIL_ADDRESS_LIST_KEY);
var DataList = DataListFactory.GetAyaDataList(DataListKey);
//TODO: PUt this in the template biz class ultimately and modify sqlselectbuilder to use it
//TODO: FETCH DATALISTTEMPLATE HERE OR USE DEFAULT IF FAULTY OR NOT FOUND
var JSONDataListTemplate = DataList.DefaultDataListDisplayTemplate;
//PARSE THE TEMPLATE INTO A STRING ARRAY
//SO WE KNOW WHICH FIELDS TO RETURN FROM QUERY
@@ -45,16 +38,11 @@ namespace AyaNova.DataList
templateFieldList = ((JArray)jtemplate["full"]).ToObject<string[]>();
}
//BUILD THE QUERY
//SELECT FRAGMENT COLUMNS FROM TEMPLATE
//TODO: Make this a function called from DataList
//SELECT FRAGMENT COLUMNS FROM TEMPLATE
var qSelectColumns = DataListSqlSelectBuilder.Build(DataList.FieldDefinitions, JSONDataListTemplate, listOptions.Mini);
//FROM CLAUSE
//this is where the full SQL statement needs to be made with JOINS etc
//TODO: Can this be moved away into the objectfields or new object
//var qFrom = "from awidget left outer join auser on (awidget.userid=auser.id) left outer join auseroptions on (auser.id=auseroptions.userid)";
//FROM CLAUSE
var qFrom = DataList.SQLFrom;
//FILTERED?

View File

@@ -19,11 +19,13 @@ namespace AyaNova.DataList
//Default object type to open for rows of this list (use no object if no)
AyaType DefaultListObjectType { get; set; }
//Default list display template if none found in db or is invalid, this ensures the data will flow even if people fuck up the templates somehow
string DefaultDataListDisplayTemplate { get; set; }
string GenerateMINIListColumnsJSON();
string GenerateListColumnsJSONFromTemplate(string template);
}
}

View File

@@ -19,6 +19,12 @@ namespace AyaNova.DataList
SQLFrom = "from awidget left outer join auser on (awidget.userid=auser.id) left outer join auseroptions on (auser.id=auseroptions.userid)";
AllowedRoles = AuthorizationRoles.AllInternalStaff;//anyone but clients and subcontractors (just for test)
DefaultListObjectType = AyaType.Widget;
DefaultDataListDisplayTemplate = @"
{
""full"":[""widgetname"",""username"",""emailaddress"",""widgetactive""],
""mini"":[""widgetname"",""username"",""emailaddress""]
}
";
FieldDefinitions = new List<AyaDataListFieldDefinition>();
FieldDefinitions.Add(new AyaDataListFieldDefinition { FieldKey = "df", AyaObjectType = (int)AyaType.Widget, SqlIdColumnName = "awidget.id" });
@@ -54,6 +60,7 @@ namespace AyaNova.DataList
SqlValueColumnName = "awidget.active",
UiFieldDataType = (int)AyaUiFieldDataType.Bool
});
}
}//eoc
}//eons

View File

@@ -11,6 +11,12 @@ namespace AyaNova.DataList
SQLFrom = "from awidget left outer join auser on (awidget.userid=auser.id)";
AllowedRoles = AuthorizationRoles.AllInternalStaff;//anyone but clients and subcontractors (just for test)
DefaultListObjectType = AyaType.Widget;
DefaultDataListDisplayTemplate = @"
{
""full"":[""widgetname"",""widgetserial"",""widgetdollaramount"",""widgetroles"",""widgetstartdate"",""widgetactive"",""username""],
""mini"":[""widgetname"",""widgetserial""]
}
";
//NOTE: Due to the join, all the sql id and name fields that can conflict with the joined (in this case User) table need to be specified completely
FieldDefinitions = new List<AyaDataListFieldDefinition>();