From 1f3064b674e47c825c3d1c2290664e39316dff22 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 3 Jun 2021 16:44:19 +0000 Subject: [PATCH] --- .../Controllers/WorkOrderController.cs | 19 ++++++++----- server/AyaNova/biz/WorkOrderBiz.cs | 28 +++++++++---------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs index 8c4958a2..e5091e7b 100644 --- a/server/AyaNova/Controllers/WorkOrderController.cs +++ b/server/AyaNova/Controllers/WorkOrderController.cs @@ -136,6 +136,11 @@ namespace AyaNova.Api.Controllers return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); if (!ModelState.IsValid) return BadRequest(new ApiErrorResponse(ModelState)); + + if (updatedObject.Items.Count > 0) + { + return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "generalerror", "Work order PUT route accepts header only; PUT Work order descendants separately")); + } WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType)) return StatusCode(403, new ApiNotAuthorizedResponse()); @@ -503,7 +508,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// @@ -719,7 +724,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// @@ -828,7 +833,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// @@ -935,7 +940,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// @@ -1041,7 +1046,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// @@ -1359,7 +1364,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// @@ -1465,7 +1470,7 @@ namespace AyaNova.Api.Controllers else return BadRequest(new ApiErrorResponse(biz.Errors)); } - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(o)); } /// diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 385b13a1..15cb644e 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -212,10 +212,7 @@ namespace AyaNova.Biz // internal async Task WorkOrderPutAsync(WorkOrder putObject) { - - //todo: bizactions, contract change update pricing entire workorder and return it entirely? - //no client must fetch it, just return concurrency as per normal here - + //## PUT HEADER ONLY, NO ALLOWANCE FOR PUT OF ENTIRE WORKORDER //Note: this is intentionally not using the getasync because //doing so would invoke the children which would then get deleted on save since putobject has no children @@ -3331,14 +3328,7 @@ namespace AyaNova.Biz // // private async Task PartBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemPart newObj, WorkOrderItemPart oldObj, IDbContextTransaction transaction) - { - //automatic actions on record change, called AFTER validation - - //### TODO: make this work with inventory, also check if delete entire workorder will still call this (or delete woitem) - // if delete wo doesn't call this, it will need to - - //#### Make sure serials are handled - + { if (AyaNova.Util.ServerGlobalBizSettings.UseInventory) { @@ -3396,7 +3386,7 @@ namespace AyaNova.Biz } - //UPDATED HANDLE INVENTORY / UPDATE SERIALS AS REQUIRED + //UPDATED, HANDLE INVENTORY / UPDATE SERIALS AS REQUIRED if (ayaEvent == AyaEvent.Modified) { //determine if any changes affecting inventory @@ -3445,8 +3435,16 @@ namespace AyaNova.Biz await PartBiz.RemoveSerialsAsync(newObj.PartId, newObj.Serials, ct, UserId); } } - - + else if (newObj.Serials != oldObj.Serials) + { + //Only a serial number adjustment so in and out all serials to be safe and not try to parse too closely + //return serial numbers to part + if (!string.IsNullOrWhiteSpace(oldObj.Serials)) + await PartBiz.AppendSerialsAsync(oldObj.PartId, oldObj.Serials, ct, UserId); + //Consume serial numbers from part + if (!string.IsNullOrWhiteSpace(newObj.Serials)) + await PartBiz.RemoveSerialsAsync(newObj.PartId, newObj.Serials, ct, UserId); + } }