From 127d113f8fce19bc6b69983059393a969565eefd Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 25 Mar 2020 16:02:15 +0000 Subject: [PATCH] --- server/AyaNova/PickList/PickListSqlBuilder.cs | 18 ++++++++++++++++-- server/AyaNova/biz/GlobalBizSettingsBiz.cs | 15 +++++++++------ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/server/AyaNova/PickList/PickListSqlBuilder.cs b/server/AyaNova/PickList/PickListSqlBuilder.cs index 6b552646..5a1b9bdd 100644 --- a/server/AyaNova/PickList/PickListSqlBuilder.cs +++ b/server/AyaNova/PickList/PickListSqlBuilder.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Linq; using AyaNova.Biz; +using AyaNova.Util; namespace AyaNova.PickList { @@ -130,7 +131,13 @@ namespace AyaNova.PickList //so this will handle it as a like query against all tags as a composite string of text just like //all the other templated fields if (HasAutoCompleteQuery && !HasTagSpecificQuery) - sWhere = $"(array_to_string({valueColumnName},',') like '%{autoCompleteQuery}%')"; + { + if (ServerGlobalBizSettings.SearchCaseSensitiveOnly) + sWhere = $"(array_to_string({valueColumnName},',') like '%{autoCompleteQuery}%')"; + else + sWhere = $"(lower(array_to_string({valueColumnName},',')) like lower('%{autoCompleteQuery}%'))"; + + } } else if (o.ColumnDataType == UiFieldDataType.Text || o.ColumnDataType == UiFieldDataType.EmailAddress || o.ColumnDataType == UiFieldDataType.HTTP) @@ -140,7 +147,11 @@ namespace AyaNova.PickList lSelect.Add(valueColumnName); lOrderBy.Add(valueColumnName); if (HasAutoCompleteQuery) - sWhere = $"({valueColumnName} like '%{autoCompleteQuery}%')"; + if (ServerGlobalBizSettings.SearchCaseSensitiveOnly) + sWhere = $"({valueColumnName} like '%{autoCompleteQuery}%')"; + else + sWhere = $"(lower({valueColumnName}) like lower('%{autoCompleteQuery}%'))"; + } else { @@ -158,7 +169,10 @@ namespace AyaNova.PickList //Where fragment is different for non text fields: it needs to be cast to text to like query on it //(cast (awidget.serial as text) like '%some%') if (HasAutoCompleteQuery) + if (ServerGlobalBizSettings.SearchCaseSensitiveOnly) sWhere = $"(cast ({valueColumnName} as text) like '%{autoCompleteQuery}%')"; + else + sWhere = $"(lower(cast ({valueColumnName} as text)) like lower('%{autoCompleteQuery}%'))"; } diff --git a/server/AyaNova/biz/GlobalBizSettingsBiz.cs b/server/AyaNova/biz/GlobalBizSettingsBiz.cs index 001834db..252e4b60 100644 --- a/server/AyaNova/biz/GlobalBizSettingsBiz.cs +++ b/server/AyaNova/biz/GlobalBizSettingsBiz.cs @@ -59,20 +59,23 @@ namespace AyaNova.Biz // //put - internal async Task ReplaceAsync(GlobalBizSettings global) + internal async Task ReplaceAsync(GlobalBizSettings inObj) { - var o = await ct.GlobalBizSettings.FirstOrDefaultAsync(m => m.Id == 1); - if (o == null) + var dbObj = await ct.GlobalBizSettings.FirstOrDefaultAsync(m => m.Id == 1); + if (dbObj == null) throw new System.Exception("GlobalBizSettingsBiz::ReplaceAsync -> Global settings object not found in database!!"); - CopyObject.Copy(global, o); - Validate(o); + CopyObject.Copy(inObj, dbObj, "Id"); + + ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = inObj.ConcurrencyToken; + + Validate(dbObj); if (HasErrors) return false; await ct.SaveChangesAsync(); //Log modification and save context await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, 1, BizType, AyaEvent.Modified), ct); //Update the static copy for the server - ServerGlobalBizSettings.Initialize(o); + ServerGlobalBizSettings.Initialize(dbObj); return true; }