diff --git a/server/AyaNova/Controllers/PickListController.cs b/server/AyaNova/Controllers/PickListController.cs
index a6d4dca9..153fc4ff 100644
--- a/server/AyaNova/Controllers/PickListController.cs
+++ b/server/AyaNova/Controllers/PickListController.cs
@@ -84,6 +84,32 @@ namespace AyaNova.Api.Controllers
return Ok(ApiOkResponse.Response(o));
}
+ ///
+ /// Get a single item's name display in PickList templated format
+ ///
+ ///
+ /// One display string or an empty string if not found or invalid
+ [HttpPost("single")]
+ public async Task PostSingle([FromBody] PickListSingleOptions pickListSingleParams)
+ {
+ if (serverState.IsClosed)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ if (!Authorized.HasSelectRole(HttpContext.Items, pickListSingleParams.AyaType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ //Instantiate the business object handler
+ PickListBiz biz = PickListBiz.GetBiz(ct, HttpContext);
+
+ var o = await biz.GetTemplatedNameAsync(pickListSingleParams.AyaType, pickListSingleParams.Id, pickListSingleParams.ListVariant, log);
+ if (o == null)
+ return BadRequest(new ApiErrorResponse(biz.Errors));
+ else
+ return Ok(ApiOkResponse.Response(o));
+ }
///
diff --git a/server/AyaNova/PickList/PickListOptions.cs b/server/AyaNova/PickList/PickListOptions.cs
index 424d69da..45aea84b 100644
--- a/server/AyaNova/PickList/PickListOptions.cs
+++ b/server/AyaNova/PickList/PickListOptions.cs
@@ -42,4 +42,24 @@ namespace AyaNova.PickList
}
}
+ public sealed class PickListSingleOptions
+ {
+
+ [FromBody]
+ public AyaType AyaType { get; set; }
+
+ [FromBody]
+ public long Id { get; set; }
+
+ [FromBody]
+ public string ListVariant { get; set; }
+
+ public PickListSingleOptions()
+ {
+ AyaType = AyaType.NoType;
+ Id = 0;
+ ListVariant = string.Empty;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/server/AyaNova/biz/PickListBiz.cs b/server/AyaNova/biz/PickListBiz.cs
index 41be2933..3311ab93 100644
--- a/server/AyaNova/biz/PickListBiz.cs
+++ b/server/AyaNova/biz/PickListBiz.cs
@@ -134,11 +134,27 @@ 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);
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)
+ {
+ long[] preIds = { id };
+ var PickList = PickListFactory.GetAyaPickList(ayaType);
+ //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);
+ if (items.Count == 0)
+ {
+ return string.Empty;
+ }
+ return items[0].Name;
+ }
+
+
//get picklist templates, basically all the object types that support picklists
internal List GetListOfAllPickListTypes(long translationId)
{
@@ -146,8 +162,6 @@ namespace AyaNova.Biz
}
-
-
////////////////////////////////////////////////////////////////////////////////////////////////
//UPDATE
//
@@ -171,7 +185,7 @@ namespace AyaNova.Biz
return false;
if (bAdd)
await ct.PickListTemplate.AddAsync(o);
-
+
await ct.SaveChangesAsync();
//Log modification and save context
diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs
index 4f23b9ad..680a1c79 100644
--- a/server/AyaNova/biz/PurchaseOrderBiz.cs
+++ b/server/AyaNova/biz/PurchaseOrderBiz.cs
@@ -105,6 +105,12 @@ namespace AyaNova.Biz
internal async Task GetAsync(long id, bool logTheGetEvent = true)
{
var ret = await ct.PurchaseOrder.Include(z => z.Items).AsNoTracking().SingleOrDefaultAsync(z => z.Id == id);
+
+ //populate names for client ui
+ var pl= new PickListBiz(ct,UserId,UserTranslationId,CurrentUserRoles);
+ foreach(PurchaseOrderItem item in ret.Items){
+ item.PartName= await pl.GetPickListAsync()
+ }
if (logTheGetEvent && ret != null)
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
return ret;
diff --git a/server/AyaNova/models/PurchaseOrderItem.cs b/server/AyaNova/models/PurchaseOrderItem.cs
index ca95962c..c843bf95 100644
--- a/server/AyaNova/models/PurchaseOrderItem.cs
+++ b/server/AyaNova/models/PurchaseOrderItem.cs
@@ -1,7 +1,7 @@
using System;
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
-
+using System.ComponentModel.DataAnnotations.Schema;
namespace AyaNova.Models
{
@@ -30,6 +30,9 @@ namespace AyaNova.Models
public long? PurchaseTaxCodeId { get; set; }
public string VendorPartNumber { get; set; }
+ //mirror name fields to save a roundtrip to the UI, not persisted
+ [NotMapped]
+ public string PartName { get; set; }
[JsonIgnore]
public PurchaseOrder PurchaseOrder { get; set; }