From 48447c9a0b26a138cde264237b777373a2a057ea Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 16 Aug 2021 19:55:34 +0000 Subject: [PATCH] --- server/AyaNova/Controllers/PartController.cs | 35 ++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/server/AyaNova/Controllers/PartController.cs b/server/AyaNova/Controllers/PartController.cs index f4aa8b9f..86c7a165 100644 --- a/server/AyaNova/Controllers/PartController.cs +++ b/server/AyaNova/Controllers/PartController.cs @@ -286,6 +286,41 @@ namespace AyaNova.Api.Controllers } + /// + /// Get on hand inventory values in all warehouses for part id specified + /// + /// + /// Array of part on hand inventory levels by warehouse + [HttpGet("on-hand-inventory/{partId}")] + public async Task GetPartOnHandInventory([FromRoute] long partId) + { + if (!serverState.IsOpen) + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + + if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.PartInventory)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + + //get all warehouses + var allWhs=await ct.PartWarehouse.AsNoTracking().ToListAsync(); + + //iterate them and compile the last inventory for each warehouse for this part + foreach(PartWarehouse pw in allWhs){ + + } + + var LastEntry = await ct.PartInventory.OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == newDtObject.PartId && m.PartWarehouseId == newDtObject.PartWarehouseId); + var o = await ct.PartStockLevel.AsNoTracking().Where(z => z.PartId == partId).OrderBy(z => z.PartWarehouseId).ToListAsync(); + foreach (PartStockLevel ps in o) + { + ps.PartWarehouseDisplay = await ct.PartWarehouse.AsNoTracking().Where(z => z.Id == ps.PartWarehouseId).Select(z => z.Name).FirstOrDefaultAsync(); + } + + return Ok(ApiOkResponse.Response(o)); + } + + //------------