From aaf21ce8814ca81e3a1a1d4573a1e0ecb4a73194 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 4 Dec 2018 00:36:32 +0000 Subject: [PATCH] --- .vscode/launch.json | 4 ++-- server/AyaNova/Startup.cs | 4 ++-- server/AyaNova/biz/FilterSqlCriteriaBuilder.cs | 14 ++++++-------- server/AyaNova/biz/WidgetBiz.cs | 14 ++++++++++---- .../DataFilter/DataFilterFilteringLists.cs | 6 +++--- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index d95867a5..49c9bd20 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -31,8 +31,8 @@ }, "env": { "ASPNETCORE_ENVIRONMENT": "Development", - //"AYANOVA_LOG_LEVEL": "Info", - "AYANOVA_LOG_LEVEL": "Debug", + "AYANOVA_LOG_LEVEL": "Info", + //"AYANOVA_LOG_LEVEL": "Debug", "AYANOVA_DEFAULT_LANGUAGE": "en", //LOCALE MUST BE en for Integration TESTING //"AYANOVA_PERMANENTLY_ERASE_DATABASE": "true", diff --git a/server/AyaNova/Startup.cs b/server/AyaNova/Startup.cs index f34e0cf8..03b04bb0 100644 --- a/server/AyaNova/Startup.cs +++ b/server/AyaNova/Startup.cs @@ -98,7 +98,7 @@ namespace AyaNova bool LOG_SENSITIVE_DATA = false; #if (DEBUG) - LOG_SENSITIVE_DATA = true; + //LOG_SENSITIVE_DATA = true; #endif @@ -434,7 +434,7 @@ namespace AyaNova //to support html5 pushstate routing in spa //this ensures that a refresh at the client will not 404 but rather force back to the index.html app page and then handled internally by the client await next(); - if (context.Request.Path.Value!= "/docs" && context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value)) + if (context.Request.Path.Value != "/docs" && context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value)) { context.Request.Path = "/index.html"; context.Response.StatusCode = 200; diff --git a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs index a6651719..2fe9e7cb 100644 --- a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs +++ b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs @@ -8,10 +8,7 @@ namespace AyaNova.Biz { public static class FilterSqlCriteriaBuilder { - - - - + //"SELECT *, xmin FROM AWIDGET name Like 'BoolDataFilterTest%' AND active = true AND " public static string DataFilterToSQLCriteria(AyaNova.Models.DataFilter dataFilter, FilterOptions filterOptions) { @@ -34,9 +31,13 @@ namespace AyaNova.Biz var dataType = filterOptions.Flds.Find(x => x.Fld == fld).Type; sb.Append(DataFilterToColumnCriteria(fld, dataType, opType, val)); + if (i < FilterArray.Count - 1) + { + sb.Append(" AND "); + } } - return sb.ToString(); + return " where " + sb.ToString(); } /// @@ -783,9 +784,6 @@ namespace AyaNova.Biz #endregion }//end of nonnull path - // - //if(log.IsDebugEnabled) - // //case 1039 //log.Debug("GridToSqlCriteria: returning[" + sb.ToString() + "]"); return sb.ToString(); diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 93d0e974..0abeaaf2 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -159,7 +159,7 @@ namespace AyaNova.Biz //If no datafilter then it can just run this regular code which already works, I think? //no, order by is brokeh - + pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit; @@ -174,11 +174,17 @@ namespace AyaNova.Biz //base query var q = "SELECT *, xmin FROM AWIDGET "; - //BUILD WHERE AND APPEND IT - q=q+FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(theFilter,WidgetBiz.FilterOptions); + //GET THE FILTER + if (pagingOptions.DataFilterId > 0) + { + var TheFilter = await ct.DataFilter.FirstOrDefaultAsync(x => x.Id == pagingOptions.DataFilterId); + + //BUILD WHERE AND APPEND IT + q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, WidgetBiz.FilterOptions()); + } //BUILD ORDER BY AND APPEND IT - + //TODO: Code a separate order by builder block var items = await ct.Widget .AsNoTracking() diff --git a/test/raven-integration/DataFilter/DataFilterFilteringLists.cs b/test/raven-integration/DataFilter/DataFilterFilteringLists.cs index d5a7f35f..099ae95a 100644 --- a/test/raven-integration/DataFilter/DataFilterFilteringLists.cs +++ b/test/raven-integration/DataFilter/DataFilterFilteringLists.cs @@ -150,10 +150,10 @@ namespace raven_integration Util.ValidateDataReturnResponseOk(a); Util.ValidateHTTPStatusCode(a, 200); - //assert aAll contains exactly two records - ((JArray)a.ObjectResponse["data"]).Count.Should().Be(2); + //assert contains at least two records + ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(1); -//TODO: ensure the results match the appropriate matching widgetIDList made earlier + //TODO: ensure the results match the appropriate matching widgetIDList made earlier