From 30f5c68045a854ef6a391615d5f3405ec0910037 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 15 Jan 2020 23:28:25 +0000 Subject: [PATCH] --- server/AyaNova/biz/SqlSelectBuilder.cs | 52 ++++++++++++++++++++++++++ server/AyaNova/biz/WidgetBiz.cs | 23 +++++++----- 2 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 server/AyaNova/biz/SqlSelectBuilder.cs diff --git a/server/AyaNova/biz/SqlSelectBuilder.cs b/server/AyaNova/biz/SqlSelectBuilder.cs new file mode 100644 index 00000000..01d8fd75 --- /dev/null +++ b/server/AyaNova/biz/SqlSelectBuilder.cs @@ -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(); + var dir = SortItem["dir"].Value(); + + 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 diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 5bb62856..7cd73026 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -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); }