From 5505cfcc87d12e8b85ee90408b99e5a9f63605ba Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 1 Apr 2021 14:11:16 +0000 Subject: [PATCH] --- .../Controllers/WorkOrderController.cs | 129 +++++++++++++++++- 1 file changed, 126 insertions(+), 3 deletions(-) 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 + + + //=============== + + + + + + /* ██╗████████╗███████╗███╗ ███╗███████╗ ██║╚══██╔══╝██╔════╝████╗ ████║██╔════╝