This commit is contained in:
2021-04-01 14:11:16 +00:00
parent c3c90cb046
commit 5505cfcc87

View File

@@ -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
/// <summary>
/// Create WorkOrderState
/// </summary>
/// <param name="newObject">WorkOrderState</param>
/// <param name="apiVersion"></param>
/// <returns>WorkOrderState object</returns>
[HttpPost("states")]
public async Task<IActionResult> 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));
}
/// <summary>
/// Get WorkOrderState object
/// </summary>
/// <param name="WorkOrderStateId"></param>
/// <returns>A single WorkOrderState</returns>
[HttpGet("states/{WorkOrderStateId}")]
public async Task<IActionResult> 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));
}
/// <summary>
/// Put (update) WorkOrderState
/// (descendant objects must be updated via their individual routes seperately)
/// </summary>
/// <param name="updatedObject">WorkOrderState - top level only, no descendants</param>
/// <returns>New concurrency token</returns>
[HttpPut("states/")]
public async Task<IActionResult> 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 }));
}
/// <summary>
/// Delete WorkOrderState
/// </summary>
/// <param name="WorkOrderStateId"></param>
/// <returns>NoContent</returns>
[HttpDelete("states/{WorkOrderStateId}")]
public async Task<IActionResult> 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
//===============
/*
██╗████████╗███████╗███╗ ███╗███████╗
██║╚══██╔══╝██╔════╝████╗ ████║██╔════╝