diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index f236e0a5..1e33bb2d 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -49,7 +49,7 @@ namespace AyaNova.Api.Controllers
/// Automatically filled from route path, no need to specify in body
///
[HttpPost]
- public async Task PostWorkOrder([FromBody] WorkOrder newObj, ApiVersion apiVersion)
+ public async Task PostWorkOrder([FromBody] WorkOrder newObject, ApiVersion apiVersion)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
@@ -65,7 +65,7 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(ModelState));
//Create and validate
- WorkOrder o = await biz.CreateAsync(newObj);
+ WorkOrder o = await biz.CreateAsync(newObject);
if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
else
@@ -424,6 +424,120 @@ namespace AyaNova.Api.Controllers
#region WorkOrderItemLabor
+ ///
+ /// Create WorkOrderItemLabor
+ ///
+ ///
+ /// Automatically filled from route path, no need to specify in body
+ ///
+ [HttpPost("items/labors")]
+ public async Task PostWorkOrderItemLabor([FromBody] WorkOrderItemLabor newObject, ApiVersion apiVersion)
+ {
+ //NOTE: we don't need the workorder id in the route because the workorder item must contain the workorder id anyway
+
+
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ //Instantiate the business object handler
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+
+ //If a user has change roles
+ if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ // //Create and validate
+ // WorkOrderItemLabor o = await biz.CreateAsync(newObject);
+ // if (o == null)
+ // return BadRequest(new ApiErrorResponse(biz.Errors));
+ // else
+ // return CreatedAtAction(nameof(WorkOrderController.GetWorkOrder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
+ return StatusCode(501);
+ }
+
+
+
+
+ ///
+ /// Get WorkOrderItemLabor object
+ ///
+ ///
+ /// A single WorkOrderItemLabor
+ [HttpGet("items/labors/{WorkOrderItemLaborId}")]
+ public async Task GetWorkOrderItemLabor([FromRoute] long WorkOrderItemLaborId)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ //Instantiate the business object handler
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+
+ //NOTE: This is the first check and often the only check but in some cases with some objects this will also need to check biz object rules
+ if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ // var o = await biz.GetAsync(id);
+ // if (o == null)
+ // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+
+ // // NOTE: HERE would be the second check of biz rules before returning the object
+ // // in cases where there is also a business rule to affect retrieval on top of basic rights
+
+ // return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType)));
+ return StatusCode(501);
+ }
+
+
+
+ ///
+ /// Put (update) WorkOrderItemLabor
+ ///
+ ///
+ ///
+ ///
+ [HttpPut("items/labors/{WorkOrderItemLaborId}")]
+ public async Task PutWorkOrderItemLabor([FromRoute] long id, [FromBody] WorkOrderItemLabor updatedObject)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ //Instantiate the business object handler
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+
+ var o = await biz.GetAsync(id, false);
+ if (o == null)
+ return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+
+ if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ // try
+ // {
+ // if (!await biz.PutAsync(o, updatedObject))
+ // return BadRequest(new ApiErrorResponse(biz.Errors));
+ // }
+ // catch (DbUpdateConcurrencyException)
+ // {
+ // if (!await biz.ExistsAsync(id))
+ // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+ // else
+ // return StatusCode(409, new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT));
+ // }
+ // return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true));
+ return StatusCode(501);
+ }
+
+
+
///
/// Delete WorkOrderItemLabor
@@ -481,6 +595,122 @@ namespace AyaNova.Api.Controllers
#region WorkOrderItemPart
+
+ ///
+ /// Create WorkOrderItemPart
+ ///
+ ///
+ /// Automatically filled from route path, no need to specify in body
+ ///
+ [HttpPost("items/parts")]
+ public async Task PostWorkOrderItemPart([FromBody] WorkOrderItemPart newObject, ApiVersion apiVersion)
+ {
+ //NOTE: we don't need the workorder id in the route because the workorder item must contain the workorder id anyway
+
+
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ //Instantiate the business object handler
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+
+ //If a user has change roles
+ if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ // //Create and validate
+ // WorkOrderItemPart o = await biz.CreateAsync(newObject);
+ // if (o == null)
+ // return BadRequest(new ApiErrorResponse(biz.Errors));
+ // else
+ // return CreatedAtAction(nameof(WorkOrderController.GetWorkOrder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
+ return StatusCode(501);
+ }
+
+
+
+
+ ///
+ /// Get WorkOrderItemPart object
+ ///
+ ///
+ /// A single WorkOrderItemPart
+ [HttpGet("items/parts/{WorkOrderItemPartId}")]
+ public async Task GetWorkOrderItemPart([FromRoute] long WorkOrderItemPartId)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ //Instantiate the business object handler
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+
+ //NOTE: This is the first check and often the only check but in some cases with some objects this will also need to check biz object rules
+ if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ // var o = await biz.GetAsync(id);
+ // if (o == null)
+ // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+
+ // // NOTE: HERE would be the second check of biz rules before returning the object
+ // // in cases where there is also a business rule to affect retrieval on top of basic rights
+
+ // return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType)));
+ return StatusCode(501);
+ }
+
+
+
+ ///
+ /// Put (update) WorkOrderItemPart
+ ///
+ ///
+ ///
+ ///
+ [HttpPut("items/parts/{WorkOrderItemPartId}")]
+ public async Task PutWorkOrderItemPart([FromRoute] long id, [FromBody] WorkOrderItemPart updatedObject)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ //Instantiate the business object handler
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+
+ var o = await biz.GetAsync(id, false);
+ if (o == null)
+ return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+
+ if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ // try
+ // {
+ // if (!await biz.PutAsync(o, updatedObject))
+ // return BadRequest(new ApiErrorResponse(biz.Errors));
+ // }
+ // catch (DbUpdateConcurrencyException)
+ // {
+ // if (!await biz.ExistsAsync(id))
+ // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+ // else
+ // return StatusCode(409, new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT));
+ // }
+ // return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true));
+ return StatusCode(501);
+ }
+
+
+
+
///
/// Delete WorkOrderItemPart
///