diff --git a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs new file mode 100644 index 00000000..7b5b2820 --- /dev/null +++ b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs @@ -0,0 +1,49 @@ +using System.Text; +using Newtonsoft.Json.Linq; + +namespace AyaNova.DataList +{ + public static class DataListSqlFilterOrderByBuilder + { + + // public static string DefaultGetManyOrderBy => "ORDER BY ID DESC"; + + // public static string DefaultPickListOrderBy => "ORDER BY NAME ASC"; + + public static string DataFilterToSQLOrderBy(AyaNova.Models.DataFilter dataFilter) + { + + if (string.IsNullOrWhiteSpace(dataFilter.Sort)) + { + return string.Empty;//used to be default order by + } + + 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