diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs index 939f0db5..92417386 100644 --- a/server/AyaNova/DataList/DataListFetcher.cs +++ b/server/AyaNova/DataList/DataListFetcher.cs @@ -85,7 +85,7 @@ namespace AyaNova.DataList qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, TheFilter, DataList.FieldDefinitions, UserId); //ORDER BY CLAUSE - SORT //BUILD ORDER BY AND APPEND IT - qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter); + qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(DataList.FieldDefinitions, TheFilter); } //LIMIT AND OFFSET CLAUSE - PAGING diff --git a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs index 7f021ba9..010d66cf 100644 --- a/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterOrderByBuilder.cs @@ -1,5 +1,7 @@ using System.Text; +using System.Linq; using Newtonsoft.Json.Linq; +using System.Collections.Generic; namespace AyaNova.DataList { @@ -10,7 +12,7 @@ namespace AyaNova.DataList // public static string DefaultPickListOrderBy => "ORDER BY NAME ASC"; - public static string DataFilterToSQLOrderBy(AyaNova.Models.DataListFilter dataFilter) + public static string DataFilterToSQLOrderBy(List objectFieldsList, AyaNova.Models.DataListFilter dataFilter) { if (string.IsNullOrWhiteSpace(dataFilter.Sort)) @@ -28,9 +30,19 @@ namespace AyaNova.DataList var SortItem = SortArray[i]; var fld = SortItem["fld"].Value(); var dir = SortItem["dir"].Value(); - + //Get the correct sql column name + AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(x => x.FieldKey == fld); +#if (DEBUG) + //Developers little helper + if (DataListField == null) + { + throw new System.ArgumentNullException($"DEV ERROR in DataListSqlFilterOrderByBuilder.cs: field {fld} specified in template was NOT found in ObjectFields list"); + } +#endif + var SQLValueColumnName = DataListField.GetSqlValueColumnName(); + sb.Append(" "); - sb.Append(fld); + sb.Append(SQLValueColumnName); sb.Append(" "); sb.Append(dir == "+" ? "ASC" : "DESC");