From 369b8f3af84e6c8fbec7ab305b0b068a0fed8287 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 13 Jan 2021 15:51:40 +0000 Subject: [PATCH] --- server/AyaNova/Controllers/PickListController.cs | 9 ++++----- server/AyaNova/PickList/PickListFetcher.cs | 4 ++-- server/AyaNova/PickList/PickListSqlBuilder.cs | 9 ++++++--- server/AyaNova/biz/PickListBiz.cs | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/server/AyaNova/Controllers/PickListController.cs b/server/AyaNova/Controllers/PickListController.cs index 9a7a03e6..7ca73a17 100644 --- a/server/AyaNova/Controllers/PickListController.cs +++ b/server/AyaNova/Controllers/PickListController.cs @@ -55,11 +55,11 @@ namespace AyaNova.Api.Controllers /// Independantely of this, if an addition space separated string that begins with two consecutive periods is encountered that will be considered a separate match to the TAGS collection of each object /// So a tag query might be entered as "..zon some" which would match all tags LIKE 'zon' and template fields LIKE 'some' /// Include inactive objects in the returned list - /// Return only one item (for pre-selected items on forms) + /// Return only specific items (for pre-selected items on forms) /// Some lists optionally take a variant string, e.g. User type "inside","outside" etc /// Filtered list [HttpGet("list")] - public async Task GetList([FromQuery] AyaType ayaType, [FromQuery] string query, [FromQuery] bool inactive, [FromQuery] long? preId, [FromQuery] string variant) + public async Task GetList([FromQuery] AyaType ayaType, [FromQuery] string query, [FromQuery] bool inactive, [FromQuery] long[] preIds, [FromQuery] string variant) { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -82,9 +82,8 @@ namespace AyaNova.Api.Controllers //Instantiate the business object handler PickListBiz biz = PickListBiz.GetBiz(ct, HttpContext); - if (preId == null) - preId = 0; - var o = await biz.GetPickListAsync(PickList, query, inactive, (long)preId, variant, log); + + var o = await biz.GetPickListAsync(PickList, query, inactive, preIds, variant, log); if (o == null) return BadRequest(new ApiErrorResponse(biz.Errors)); else diff --git a/server/AyaNova/PickList/PickListFetcher.cs b/server/AyaNova/PickList/PickListFetcher.cs index 1860d890..6ddcd80e 100644 --- a/server/AyaNova/PickList/PickListFetcher.cs +++ b/server/AyaNova/PickList/PickListFetcher.cs @@ -11,7 +11,7 @@ namespace AyaNova.PickList internal static class PickListFetcher { internal static async Task> GetResponseAsync(IAyaPickList PickList, string autoCompleteQuery, - string tagSpecificQuery, bool includeInactive, long preId, string variant, AyContext ct, ILogger log) + string tagSpecificQuery, bool includeInactive, long[] preIds, string variant, AyContext ct, ILogger log) { //Sort out effective Template @@ -34,7 +34,7 @@ namespace AyaNova.PickList List TemplateColumnNames = PickList.GetFieldListFromTemplate(jTemplate); //BUILD THE QUERY - var q = PickListSqlBuilder.Build(PickList, TemplateColumnNames, autoCompleteQuery, tagSpecificQuery, includeInactive, preId, variant); + var q = PickListSqlBuilder.Build(PickList, TemplateColumnNames, autoCompleteQuery, tagSpecificQuery, includeInactive, preIds, variant); //RETURN OBJECTS var ret = new List(); diff --git a/server/AyaNova/PickList/PickListSqlBuilder.cs b/server/AyaNova/PickList/PickListSqlBuilder.cs index 9829257e..ba4e6758 100644 --- a/server/AyaNova/PickList/PickListSqlBuilder.cs +++ b/server/AyaNova/PickList/PickListSqlBuilder.cs @@ -25,7 +25,7 @@ namespace AyaNova.PickList const int MAXIMUM_RESULT_COUNT = 100; //Build the query for a picklist request - internal static string Build(IAyaPickList pickList, List templateColumnNames, string autoCompleteQuery, string tagSpecificQuery, bool IncludeInactive, long preId, string variant) + internal static string Build(IAyaPickList pickList, List templateColumnNames, string autoCompleteQuery, string tagSpecificQuery, bool IncludeInactive, long[] preIds, string variant) { //determine this in advance as it will be used in a loop later @@ -62,9 +62,12 @@ namespace AyaNova.PickList - if (preId != 0) + if (preIds.Length > 0) { - PredefinedOnlyWhereFragment = rowIdColumn.SqlIdColumnName + " = " + preId.ToString(); + //select id,name from acustomer where id in(1,3,5,7) + //string.Join(",", arr) + // PredefinedOnlyWhereFragment = rowIdColumn.SqlIdColumnName + " = " + preId.ToString(); + PredefinedOnlyWhereFragment = $"{rowIdColumn.SqlIdColumnName} in ({string.Join(",", preIds)})"; } diff --git a/server/AyaNova/biz/PickListBiz.cs b/server/AyaNova/biz/PickListBiz.cs index 123badaa..ff22f8db 100644 --- a/server/AyaNova/biz/PickListBiz.cs +++ b/server/AyaNova/biz/PickListBiz.cs @@ -70,7 +70,7 @@ namespace AyaNova.Biz //get picklist - internal async Task> GetPickListAsync(IAyaPickList PickList, string query, bool inactive, long preId, string variant, ILogger log) + internal async Task> GetPickListAsync(IAyaPickList PickList, string query, bool inactive, long[] preIds, string variant, ILogger log) { //Crack and validate the query part set a broken rule if not valid and return null @@ -134,7 +134,7 @@ namespace AyaNova.Biz } //Autocomplete and tagonly query terms now set for consumption by PickListFetcher, ready to fetch... - List items = await PickListFetcher.GetResponseAsync(PickList, AutoCompleteQuery, TagSpecificQuery, inactive, preId,variant, ct, log); + List items = await PickListFetcher.GetResponseAsync(PickList, AutoCompleteQuery, TagSpecificQuery, inactive, preIds,variant, ct, log); return items; }