This commit is contained in:
2021-06-03 16:44:19 +00:00
parent e2af6c9a1d
commit 1f3064b674
2 changed files with 25 additions and 22 deletions

View File

@@ -136,6 +136,11 @@ namespace AyaNova.Api.Controllers
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!ModelState.IsValid) if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState)); 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); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType)) if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
@@ -503,7 +508,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>
@@ -719,7 +724,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>
@@ -828,7 +833,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>
@@ -935,7 +940,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>
@@ -1041,7 +1046,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>
@@ -1359,7 +1364,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>
@@ -1465,7 +1470,7 @@ namespace AyaNova.Api.Controllers
else else
return BadRequest(new ApiErrorResponse(biz.Errors)); return BadRequest(new ApiErrorResponse(biz.Errors));
} }
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
/// <summary> /// <summary>

View File

@@ -212,10 +212,7 @@ namespace AyaNova.Biz
// //
internal async Task<WorkOrder> WorkOrderPutAsync(WorkOrder putObject) internal async Task<WorkOrder> WorkOrderPutAsync(WorkOrder putObject)
{ {
//## PUT HEADER ONLY, NO ALLOWANCE FOR PUT OF ENTIRE WORKORDER
//todo: bizactions, contract change update pricing entire workorder and return it entirely?
//no client must fetch it, just return concurrency as per normal here
//Note: this is intentionally not using the getasync because //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 //doing so would invoke the children which would then get deleted on save since putobject has no children
@@ -3332,13 +3329,6 @@ namespace AyaNova.Biz
// //
private async Task PartBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemPart newObj, WorkOrderItemPart oldObj, IDbContextTransaction transaction) 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) 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) if (ayaEvent == AyaEvent.Modified)
{ {
//determine if any changes affecting inventory //determine if any changes affecting inventory
@@ -3445,8 +3435,16 @@ namespace AyaNova.Biz
await PartBiz.RemoveSerialsAsync(newObj.PartId, newObj.Serials, ct, UserId); 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);
}
} }