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 + } ////////////////////////////////////////////////////////////////////////////////////////////////