diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index 41a344a8..ccd3468e 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -37,9 +37,11 @@ namespace AyaNova.Api.Controllers
serverState = apiServerState;
}
-//todo: finish this off, it's missing some shit, and also check it's modernized
-//will also likely need a seperate fetch route for just the header and just an item
-//prefer named routes for each rather than some kind of parameter for existing routes, i.e. get{id} for whole graph and get headeronly/{id}
+ //todo: finish this off, it's missing some shit, and also check it's modernized
+ //will also likely need a seperate fetch route for just the header and just an item
+ //prefer named routes for each rather than some kind of parameter for existing routes, i.e. get{id} for whole graph and get headeronly/{id}
+
+ //STATES OUTSIDE SERVICE
/*
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
@@ -173,6 +175,127 @@ namespace AyaNova.Api.Controllers
#endregion WorkOrderTopLevel routes
+
+
+ //==================
+ /*
+
+ ███████╗████████╗ █████╗ ████████╗███████╗███████╗
+ ██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██╔════╝██╔════╝
+ ███████╗ ██║ ███████║ ██║ █████╗ ███████╗
+ ╚════██║ ██║ ██╔══██║ ██║ ██╔══╝ ╚════██║
+ ███████║ ██║ ██║ ██║ ██║ ███████╗███████║
+ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝
+
+ */
+
+
+ #region WorkOrderState
+ ///
+ /// Create WorkOrderState
+ ///
+ /// WorkOrderState
+ ///
+ /// WorkOrderState object
+ [HttpPost("states")]
+ public async Task PostWorkOrderState([FromBody] WorkOrderState newObject, ApiVersion apiVersion)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+ if (!Authorized.HasCreateRole(HttpContext.Items, AyaType.WorkOrderStatus))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+ WorkOrderState o = await biz.StateCreateAsync(newObject);
+ if (o == null)
+ return BadRequest(new ApiErrorResponse(biz.Errors));
+ else
+ return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderState), new { WorkOrderStateId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
+ }
+
+
+ ///
+ /// Get WorkOrderState object
+ ///
+ ///
+ /// A single WorkOrderState
+ [HttpGet("states/{WorkOrderStateId}")]
+ public async Task GetWorkOrderState([FromRoute] long WorkOrderStateId)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+ if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.WorkOrderStatus))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+ var o = await biz.StateGetAsync(WorkOrderStateId);
+ if (o == null)
+ return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+ return Ok(ApiOkResponse.Response(o));
+ }
+
+
+
+ ///
+ /// Put (update) WorkOrderState
+ /// (descendant objects must be updated via their individual routes seperately)
+ ///
+ /// WorkOrderState - top level only, no descendants
+ /// New concurrency token
+ [HttpPut("states/")]
+ public async Task PutWorkOrderState([FromBody] WorkOrderState updatedObject)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+ if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderStatus))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+ var o = await biz.StatePutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
+ if (o == null)
+ {
+ if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
+ return StatusCode(409, new ApiErrorResponse(biz.Errors));
+ else
+ return BadRequest(new ApiErrorResponse(biz.Errors));
+ }
+ return Ok(ApiOkResponse.Response(new { Concurrency = o.Concurrency }));
+ }
+
+
+ ///
+ /// Delete WorkOrderState
+ ///
+ ///
+ /// NoContent
+ [HttpDelete("states/{WorkOrderStateId}")]
+ public async Task DeleteWorkOrderState([FromRoute] long WorkOrderStateId)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+ if (!Authorized.HasDeleteRole(HttpContext.Items, AyaType.WorkOrderStatus))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+ if (!await biz.StateDeleteAsync(WorkOrderStateId))
+ return BadRequest(new ApiErrorResponse(biz.Errors));
+ return NoContent();
+ }
+
+ #endregion workorderstate
+
+
+ //===============
+
+
+
+
+
+
/*
██╗████████╗███████╗███╗ ███╗███████╗
██║╚══██╔══╝██╔════╝████╗ ████║██╔════╝