This commit is contained in:
2021-09-09 00:06:16 +00:00
parent 220f185418
commit 4f70082d09
4 changed files with 31 additions and 14 deletions

View File

@@ -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));
}
/// <summary>
/// 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

View File

@@ -11,20 +11,27 @@ namespace AyaNova.PickList
internal static class PickListFetcher
{
internal static async Task<List<NameIdActiveItem>> 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

View File

@@ -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<long>();
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;
}
}

View File

@@ -70,7 +70,7 @@ namespace AyaNova.Biz
//get picklist
internal async Task<List<NameIdActiveItem>> GetPickListAsync(IAyaPickList PickList, string query, bool inactive, long[] preIds, string variant, ILogger log)
internal async Task<List<NameIdActiveItem>> 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<NameIdActiveItem> items = await PickListFetcher.GetResponseAsync(PickList, AutoCompleteQuery, TagSpecificQuery, inactive, preIds, variant, ct, log);
List<NameIdActiveItem> 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<string> GetTemplatedNameAsync(AyaType ayaType, long id, string variant, ILogger log)
internal async Task<string> 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<NameIdActiveItem> items = await PickListFetcher.GetResponseAsync(PickList, null, null, true, preIds, variant, ct, log);
List<NameIdActiveItem> items = await PickListFetcher.GetResponseAsync(PickList, null, null, true, preIds, variant, ct, log, template);
if (items.Count == 0)
{
return string.Empty;