This commit is contained in:
2020-01-15 23:28:25 +00:00
parent 76791a5f1a
commit 30f5c68045
2 changed files with 65 additions and 10 deletions

View File

@@ -0,0 +1,52 @@
using System.Collections.Generic;
using System;
using System.Globalization;
using System.Text;
using Newtonsoft.Json.Linq;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
namespace AyaNova.Biz
{
public static class SqlSelectBuilder
{
public static string Build(AyaNova.Models.DataFilter dataFilter)
{
if (string.IsNullOrWhiteSpace(dataFilter.Sort))
{
return DefaultGetManyOrderBy();
}
StringBuilder sb = new StringBuilder();
//iterate the datafilter and concatenate a sql query from it
var SortArray = JArray.Parse(dataFilter.Sort);
for (int i = 0; i < SortArray.Count; i++)
{
var SortItem = SortArray[i];
var fld = SortItem["fld"].Value<string>();
var dir = SortItem["dir"].Value<string>();
sb.Append(" ");
sb.Append(fld);
sb.Append(" ");
sb.Append(dir == "+" ? "ASC" : "DESC");
if (i < SortArray.Count - 1)
{
sb.Append(",");
}
}
return " ORDER BY" + sb.ToString();
}
}//eoc
}//ens

View File

@@ -275,6 +275,15 @@ namespace AyaNova.Biz
listOptions.Offset = listOptions.Offset ?? ListOptions.DefaultOffset;
listOptions.Limit = listOptions.Limit ?? ListOptions.DefaultLimit;
//TODO: Get template (MOCKED FOR NOW UNTIL PROOF OF CONCEPT)
var MOCK_WIDGET_DISPLAY_TEMPLATE_JSON = @"
{
""full"":[""WidgetName"",""WidgetSerial"",""WidgetDollarAmount"",""WidgetRoles"",""WidgetStartDate"",""Active""],
""mini"":[""WidgetName"",""WidgetSerial""]
}
";
//BUILD THE QUERY
//TODO: Turn this into a raw direct query
//Build the select fragment from the template so only selected columns get fetched
@@ -323,22 +332,16 @@ namespace AyaNova.Biz
//BUILD THE RETURN BASED ON TEMPLATE and MINI CONDITIONAL FORMAT
//TODO: Get template (MOCKED FOR NOW UNTIL PROOF OF CONCEPT)
var MOCK_WIDGET_DISPLAY_TEMPLATE_JSON = @"
{
""full"":[""WidgetName"",""WidgetSerial"",""WidgetDollarAmount"",""WidgetRoles"",""WidgetStartDate"",""Active""],
""mini"":[""WidgetName"",""WidgetSerial""]
}
";
//BUILD THE COLUMNS RETURN PROPERTY JSON FRAGMENT
string ColumnsJSON = string.Empty;
if (listOptions.Mini)
{
ColumnsJSON = ObjectFields.GenerateMINIListColumnsJSON(AyaType.Widget);
{
ColumnsJSON = ObjectFields.GenerateMINIListColumnsJSON(AyaType.Widget);
}
else
{
{
ColumnsJSON = ObjectFields.GenerateListColumnsJSONFromTemplate(AyaType.Widget, ObjectFields.WIDGET_KEY, MOCK_WIDGET_DISPLAY_TEMPLATE_JSON);
}