diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index efb4dd0c..cf8cbdec 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -176,11 +176,12 @@ namespace AyaNova.Api.Controllers
/// Change existing work order's Contract
/// applies new Contract and returns complete updated work order
///
+ /// Work order id
/// new contract id
/// From route path
/// WorkOrder
- [HttpPost("contract")]
- public async Task ChangeContract([FromBody] long? newContractId, ApiVersion apiVersion)
+ [HttpPost("contract/{workOrderId}")]
+ public async Task ChangeContract([FromRoute] long workOrderId, [FromBody] long? newContractId, ApiVersion apiVersion)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
@@ -189,7 +190,7 @@ namespace AyaNova.Api.Controllers
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
- WorkOrder o = await biz.ChangeContract(newContractId);
+ WorkOrder o = await biz.ChangeContract(workOrderId, newContractId);
if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
else
diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs
index 1245a3a6..cbe77ef1 100644
--- a/server/AyaNova/biz/WorkOrderBiz.cs
+++ b/server/AyaNova/biz/WorkOrderBiz.cs
@@ -314,7 +314,31 @@ namespace AyaNova.Biz
}
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ //CONTRACT UPDATE
+ //
+ internal async Task ChangeContract(long workOrderId, long? newContractId)
+ {
+ //this is called by UI via contract change route for contract change only and expects wo back to update client ui
+ var w=await WorkOrderGetAsync(workOrderId,false,false);
+ if (w==null)
+ {
+ AddError(ApiErrorCode.NOT_FOUND, "id");
+ return null;
+ }
+ if(newContractId!=null && !await ct.Contract.AnyAsync(z=>z.Id==newContractId)){
+ AddError(ApiErrorCode.NOT_FOUND,"generalerror", $"Contract with id {newContractId} not found");
+ return null;
+ }
+ w.ContractId=newContractId;
+ await ct.SaveChangesAsync();
+ await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, workOrderId, BizType, AyaEvent.Modified), ct);
+ await GetCurrentContractFromContractIdAsync(newContractId);
+ var updatedWorkOrder = await ProcessChangeOfContractAsync(workOrderId);
+ await WorkOrderPopulateVizFields(updatedWorkOrder);
+ return updatedWorkOrder;//return entire workorder
+ }
////////////////////////////////////////////////////////////////////////////////////////////////