This commit is contained in:
2021-01-25 19:52:22 +00:00
parent 936452cdb4
commit 887dbe5dd8
10 changed files with 153 additions and 20 deletions

View File

@@ -8,16 +8,6 @@ using AyaNova.Models;
using AyaNova.Api.ControllerHelpers;
using AyaNova.Biz;
/*
Ok, need to figure this one out.
Is a partassembly posted with all it's collection of parts or are those two separate ops?
It's obvs more efficient to post it all at once on creation
From users' point of view it's all one object
Maybe it should act like it's one big collection as the partassembly is unlikely to have a huge number of parts ever anyway
so the todo is to make the assemblyitem part of a collection under assembly that gets CRUD together
https://stackoverflow.com/questions/46517584/how-to-add-a-parent-record-with-its-children-records-in-ef-core#46615455
*/
namespace AyaNova.Api.Controllers
{
@@ -107,7 +97,7 @@ namespace AyaNova.Api.Controllers
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
var o = await biz.GetAsync(id,true,true);
var o = await biz.GetAsync(id, true, true);
if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
return Ok(ApiOkResponse.Response(o));
}

View File

@@ -204,6 +204,56 @@ namespace AyaNova.Api.Controllers
return Ok(ApiOkResponse.Response(o));
}
/// <summary>
/// Get stock levels for part
/// </summary>
/// <param name="id"></param>
/// <returns>Array of part stock levels</returns>
[HttpGet("stock-levels/{id}")]
public async Task<IActionResult> GetPartStockLevels([FromRoute] long id)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Part))
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
var o = await ct.PartStockLevel.AsNoTracking().Where(z => z.PartId == id).OrderBy(z => z.PartWarehouseId).ToListAsync();
return Ok(ApiOkResponse.Response(o));
}
/// <summary>
/// Put (update) stock levels for part
/// </summary>
/// <param name="partStockLevels">array of part stock levels</param>
///<param name="id">PartId</param>
/// <returns></returns>
[HttpPut("stock-levels/{id}")]
public async Task<IActionResult> PutPartStockLevels([FromRoute] long id, [FromBody] List<PartStockLevel> partStockLevels)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
PartBiz biz = PartBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.PutStockLevelsAsync(id, partStockLevels);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
return StatusCode(409, new ApiErrorResponse(biz.Errors));
else
return BadRequest(new ApiErrorResponse(biz.Errors));
}
return Ok(ApiOkResponse.Response(o));
}
//------------