This commit is contained in:
2021-02-18 20:30:49 +00:00
parent 8786dd22df
commit bc0c255ee3
5 changed files with 74 additions and 5 deletions

View File

@@ -84,6 +84,32 @@ namespace AyaNova.Api.Controllers
return Ok(ApiOkResponse.Response(o));
}
/// <summary>
/// Get a single item's name display in PickList templated format
/// </summary>
/// <param name="pickListSingleParams"></param>
/// <returns>One display string or an empty string if not found or invalid</returns>
[HttpPost("single")]
public async Task<IActionResult> 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));
}
/// <summary>

View File

@@ -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;
}
}
}

View File

@@ -134,11 +134,27 @@ 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);
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)
{
long[] preIds = { id };
var PickList = PickListFactory.GetAyaPickList(ayaType);
//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);
if (items.Count == 0)
{
return string.Empty;
}
return items[0].Name;
}
//get picklist templates, basically all the object types that support picklists
internal List<NameIdItem> 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

View File

@@ -105,6 +105,12 @@ namespace AyaNova.Biz
internal async Task<PurchaseOrder> 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;

View File

@@ -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; }