From 4f70082d0955e5c38742b573cb16cfc30e07f828 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 9 Sep 2021 00:06:16 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/PickListController.cs | 8 ++++--- server/AyaNova/PickList/PickListFetcher.cs | 21 ++++++++++++------- server/AyaNova/PickList/PickListOptions.cs | 8 +++++++ server/AyaNova/biz/PickListBiz.cs | 8 +++---- 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/server/AyaNova/Controllers/PickListController.cs b/server/AyaNova/Controllers/PickListController.cs index 663bf551..7a1a101c 100644 --- a/server/AyaNova/Controllers/PickListController.cs +++ b/server/AyaNova/Controllers/PickListController.cs @@ -79,6 +79,8 @@ namespace AyaNova.Api.Controllers PickListBiz biz = PickListBiz.GetBiz(ct, HttpContext); + + //handle HeadOffice only restricted variants if (pickListParams.ListVariant == "ho") { @@ -94,14 +96,14 @@ namespace AyaNova.Api.Controllers } - var o = await biz.GetPickListAsync(PickList, pickListParams.Query, pickListParams.Inactive, pickListParams.PreselectedIds.ToArray(), pickListParams.ListVariant, log); + var o = await biz.GetPickListAsync(PickList, pickListParams.Query, pickListParams.Inactive, pickListParams.PreselectedIds.ToArray(), pickListParams.ListVariant, log, pickListParams.Template); if (o == null) return BadRequest(new ApiErrorResponse(biz.Errors)); else return Ok(ApiOkResponse.Response(o)); } - + /// /// Get a single item's name display in PickList templated format @@ -123,7 +125,7 @@ namespace AyaNova.Api.Controllers //Instantiate the business object handler PickListBiz biz = PickListBiz.GetBiz(ct, HttpContext); - var o = await biz.GetTemplatedNameAsync(pickListSingleParams.AyaType, pickListSingleParams.Id, pickListSingleParams.ListVariant, log); + var o = await biz.GetTemplatedNameAsync(pickListSingleParams.AyaType, pickListSingleParams.Id, pickListSingleParams.ListVariant, log, pickListSingleParams.Template); 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 d4f8d12d..4225b75b 100644 --- a/server/AyaNova/PickList/PickListFetcher.cs +++ b/server/AyaNova/PickList/PickListFetcher.cs @@ -11,20 +11,27 @@ namespace AyaNova.PickList internal static class PickListFetcher { internal static async Task> GetResponseAsync(IAyaPickList PickList, string autoCompleteQuery, - string tagSpecificQuery, bool includeInactive, long[] preIds, string variant, AyContext ct, ILogger log) + string tagSpecificQuery, bool includeInactive, long[] preIds, string variant, AyContext ct, ILogger log, string overrideTemplate) { //Sort out effective Template string Template = null; - //Attempt to fetch custom template - var t = await ct.PickListTemplate.FirstOrDefaultAsync(z => z.Id == ((long)PickList.DefaultListAType)); - if (t == null) + if (string.IsNullOrWhiteSpace(overrideTemplate)) { - Template = PickList.DefaultTemplate; + //Attempt to fetch custom template + var t = await ct.PickListTemplate.FirstOrDefaultAsync(z => z.Id == ((long)PickList.DefaultListAType)); + if (t == null) + { + Template = PickList.DefaultTemplate; + } + else + { + Template = t.Template; + } } else { - Template = t.Template; + Template = overrideTemplate; } //parse the template @@ -77,7 +84,7 @@ namespace AyaNova.PickList log.LogError(e, "DB Exception"); throw new System.Exception("PickListFetcher - Query failed see log"); } - catch (System.Exception e) + catch (System.Exception e) { //ensure any other type of exception gets surfaced properly //log out the exception and the query diff --git a/server/AyaNova/PickList/PickListOptions.cs b/server/AyaNova/PickList/PickListOptions.cs index 45aea84b..afcda0cc 100644 --- a/server/AyaNova/PickList/PickListOptions.cs +++ b/server/AyaNova/PickList/PickListOptions.cs @@ -32,6 +32,9 @@ namespace AyaNova.PickList [FromBody] public string ListVariant { get; set; } + [FromBody] + public string Template { get; set; } + public PickListOptions() { AyaType = AyaType.NoType; @@ -39,6 +42,7 @@ namespace AyaNova.PickList Inactive = false; PreselectedIds = new List(); ListVariant = string.Empty; + Template = string.Empty; } } @@ -54,11 +58,15 @@ namespace AyaNova.PickList [FromBody] public string ListVariant { get; set; } + [FromBody] + public string Template { get; set; } + public PickListSingleOptions() { AyaType = AyaType.NoType; Id = 0; ListVariant = string.Empty; + Template = string.Empty; } } diff --git a/server/AyaNova/biz/PickListBiz.cs b/server/AyaNova/biz/PickListBiz.cs index 028335b8..ccf42fdf 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[] preIds, string variant, ILogger log) + internal async Task> GetPickListAsync(IAyaPickList PickList, string query, bool inactive, long[] preIds, string variant, ILogger log, string template) { //Crack and validate the query part set a broken rule if not valid and return null @@ -134,14 +134,14 @@ 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, preIds, variant, ct, log); + List items = await PickListFetcher.GetResponseAsync(PickList, AutoCompleteQuery, TagSpecificQuery, inactive, preIds, variant, ct, log, template); return items; } //get picklist display for a single item //used to populate UI with picklist format display for items - internal async Task GetTemplatedNameAsync(AyaType ayaType, long id, string variant, ILogger log) + internal async Task GetTemplatedNameAsync(AyaType ayaType, long id, string variant, ILogger log, string template) { //short circuit for empty types if (id == 0) @@ -155,7 +155,7 @@ namespace AyaNova.Biz log = AyaNova.Util.ApplicationLogging.CreateLogger("PickListBiz::GetTemplatedNameAsync"); //Autocomplete and tagonly query terms now set for consumption by PickListFetcher, ready to fetch... - List items = await PickListFetcher.GetResponseAsync(PickList, null, null, true, preIds, variant, ct, log); + List items = await PickListFetcher.GetResponseAsync(PickList, null, null, true, preIds, variant, ct, log, template); if (items.Count == 0) { return string.Empty;