From f78a32937f4b1276c488a2309b07c49cd52ec5d5 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 11 May 2020 14:32:48 +0000 Subject: [PATCH] --- .../Controllers/WorkOrderController.cs | 738 ++++++++++++++++++ 1 file changed, 738 insertions(+) diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs index e8beb12d..3f973cde 100644 --- a/server/AyaNova/Controllers/WorkOrderController.cs +++ b/server/AyaNova/Controllers/WorkOrderController.cs @@ -500,6 +500,744 @@ namespace AyaNova.Api.Controllers #endregion WorkOrderItemPart + + + + //*******************************new + /* + part requests + + */ + + #region WorkOrderItemPartRequest + + /// + /// Create WorkOrderItemPartRequest + /// + /// WorkOrderItemPartRequest level only no descendents + /// + /// WorkOrderItemPartRequest object (no descendents) + [HttpPost("items/partrequests")] + public async Task PostWorkOrderItemPartRequest([FromBody] WorkOrderItemPartRequest 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.WorkOrderItemPartRequest)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemPartRequest o = await biz.CreatePartRequestAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemPartRequest), new { WorkOrderItemPartRequestId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemPartRequest object + /// + /// + /// A single WorkOrderItemPartRequest + [HttpGet("items/partrequests/{WorkOrderItemPartRequestId}")] + public async Task GetWorkOrderItemPartRequest([FromRoute] long WorkOrderItemPartRequestId) + { + 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.WorkOrderItemPartRequest)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetPartRequestAsync(WorkOrderItemPartRequestId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPartRequest))); + } + + /// + /// Put (update) WorkOrderItemPartRequest + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemPartRequest - top level only, no descendents + /// New concurrency token + [HttpPut("items/partrequests")] + public async Task PutWorkOrderItemPartRequest([FromBody] WorkOrderItemPartRequest 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.WorkOrderItemPartRequest)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.PartRequestPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemPartRequest + /// + /// + /// NoContent + [HttpDelete("items/partrequests/{WorkOrderItemPartRequestId}")] + public async Task DeleteWorkOrderItemPartRequest([FromRoute] long WorkOrderItemPartRequestId) + { + 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.WorkOrderItemPartRequest)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.PartRequestDeleteAsync(WorkOrderItemPartRequestId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemPartRequest + + + + + + + //*******************************new + /* + scheduled users + + */ + + #region WorkOrderItemScheduledUser + + /// + /// Create WorkOrderItemScheduledUser + /// + /// WorkOrderItemScheduledUser level only no descendents + /// + /// WorkOrderItemScheduledUser object (no descendents) + [HttpPost("items/scheduledusers")] + public async Task PostWorkOrderItemScheduledUser([FromBody] WorkOrderItemScheduledUser 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.WorkOrderItemScheduledUser)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemScheduledUser o = await biz.CreateScheduledUserAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemScheduledUser), new { WorkOrderItemScheduledUserId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemScheduledUser object + /// + /// + /// A single WorkOrderItemScheduledUser + [HttpGet("items/scheduledusers/{WorkOrderItemScheduledUserId}")] + public async Task GetWorkOrderItemScheduledUser([FromRoute] long WorkOrderItemScheduledUserId) + { + 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.WorkOrderItemScheduledUser)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetScheduledUserAsync(WorkOrderItemScheduledUserId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemScheduledUser))); + } + + /// + /// Put (update) WorkOrderItemScheduledUser + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemScheduledUser - top level only, no descendents + /// New concurrency token + [HttpPut("items/scheduledusers")] + public async Task PutWorkOrderItemScheduledUser([FromBody] WorkOrderItemScheduledUser 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.WorkOrderItemScheduledUser)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.ScheduledUserPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemScheduledUser + /// + /// + /// NoContent + [HttpDelete("items/scheduledusers/{WorkOrderItemScheduledUserId}")] + public async Task DeleteWorkOrderItemScheduledUser([FromRoute] long WorkOrderItemScheduledUserId) + { + 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.WorkOrderItemScheduledUser)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.ScheduledUserDeleteAsync(WorkOrderItemScheduledUserId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemScheduledUser + + + + //*******************************new + /* + Expenses + + */ + + #region WorkOrderItemExpense + + /// + /// Create WorkOrderItemExpense + /// + /// WorkOrderItemExpense level only no descendents + /// + /// WorkOrderItemExpense object (no descendents) + [HttpPost("items/expenses")] + public async Task PostWorkOrderItemExpense([FromBody] WorkOrderItemExpense 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.WorkOrderItemExpense)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemExpense o = await biz.CreateExpenseAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemExpense), new { WorkOrderItemExpenseId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemExpense object + /// + /// + /// A single WorkOrderItemExpense + [HttpGet("items/expenses/{WorkOrderItemExpenseId}")] + public async Task GetWorkOrderItemExpense([FromRoute] long WorkOrderItemExpenseId) + { + 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.WorkOrderItemExpense)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetExpenseAsync(WorkOrderItemExpenseId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemExpense))); + } + + /// + /// Put (update) WorkOrderItemExpense + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemExpense - top level only, no descendents + /// New concurrency token + [HttpPut("items/expenses")] + public async Task PutWorkOrderItemExpense([FromBody] WorkOrderItemExpense 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.WorkOrderItemExpense)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.ExpensePutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemExpense + /// + /// + /// NoContent + [HttpDelete("items/expenses/{WorkOrderItemExpenseId}")] + public async Task DeleteWorkOrderItemExpense([FromRoute] long WorkOrderItemExpenseId) + { + 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.WorkOrderItemExpense)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.ExpenseDeleteAsync(WorkOrderItemExpenseId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemExpense + + + + //*******************************new + /* + Travel + + */ + + #region WorkOrderItemTravel + + /// + /// Create WorkOrderItemTravel + /// + /// WorkOrderItemTravel level only no descendents + /// + /// WorkOrderItemTravel object (no descendents) + [HttpPost("items/travels")] + public async Task PostWorkOrderItemTravel([FromBody] WorkOrderItemTravel 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.WorkOrderItemTravel)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemTravel o = await biz.CreateTravelAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemTravel), new { WorkOrderItemTravelId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemTravel object + /// + /// + /// A single WorkOrderItemTravel + [HttpGet("items/travels/{WorkOrderItemTravelId}")] + public async Task GetWorkOrderItemTravel([FromRoute] long WorkOrderItemTravelId) + { + 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.WorkOrderItemTravel)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetTravelAsync(WorkOrderItemTravelId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTravel))); + } + + /// + /// Put (update) WorkOrderItemTravel + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemTravel - top level only, no descendents + /// New concurrency token + [HttpPut("items/travels")] + public async Task PutWorkOrderItemTravel([FromBody] WorkOrderItemTravel 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.WorkOrderItemTravel)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.TravelPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemTravel + /// + /// + /// NoContent + [HttpDelete("items/travels/{WorkOrderItemTravelId}")] + public async Task DeleteWorkOrderItemTravel([FromRoute] long WorkOrderItemTravelId) + { + 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.WorkOrderItemTravel)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.TravelDeleteAsync(WorkOrderItemTravelId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemTravel + + + + + + //*******************************new + /* + Tasks + + */ + + #region WorkOrderItemtask + + /// + /// Create WorkOrderItemTask + /// + /// WorkOrderItemTask level only no descendents + /// + /// WorkOrderItemTask object (no descendents) + [HttpPost("items/tasks")] + public async Task PostWorkOrderItemTask([FromBody] WorkOrderItemTask 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.WorkOrderItemTask)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemTask o = await biz.CreateTaskAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemTask), new { WorkOrderItemTaskId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemTask object + /// + /// + /// A single WorkOrderItemTask + [HttpGet("items/tasks/{WorkOrderItemTaskId}")] + public async Task GetWorkOrderItemTask([FromRoute] long WorkOrderItemTaskId) + { + 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.WorkOrderItemTask)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetTaskAsync(WorkOrderItemTaskId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTask))); + } + + /// + /// Put (update) WorkOrderItemTask + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemTask - top level only, no descendents + /// New concurrency token + [HttpPut("items/tasks")] + public async Task PutWorkOrderItemTask([FromBody] WorkOrderItemTask 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.WorkOrderItemTask)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.TaskPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemTask + /// + /// + /// NoContent + [HttpDelete("items/tasks/{WorkOrderItemTaskId}")] + public async Task DeleteWorkOrderItemTask([FromRoute] long WorkOrderItemTaskId) + { + 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.WorkOrderItemTask)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.TaskDeleteAsync(WorkOrderItemTaskId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemTask + + + + + + //*******************************new + /* + Loan + + */ + + #region WorkOrderItemLoan + + /// + /// Create WorkOrderItemLoan + /// + /// WorkOrderItemLoan level only no descendents + /// + /// WorkOrderItemLoan object (no descendents) + [HttpPost("items/loans")] + public async Task PostWorkOrderItemLoan([FromBody] WorkOrderItemLoan 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.WorkOrderItemLoan)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemLoan o = await biz.CreateLoanAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemLoan), new { WorkOrderItemLoanId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemLoan object + /// + /// + /// A single WorkOrderItemLoan + [HttpGet("items/loans/{WorkOrderItemLoanId}")] + public async Task GetWorkOrderItemLoan([FromRoute] long WorkOrderItemLoanId) + { + 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.WorkOrderItemLoan)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetLoanAsync(WorkOrderItemLoanId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLoan))); + } + + /// + /// Put (update) WorkOrderItemLoan + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemLoan - top level only, no descendents + /// New concurrency token + [HttpPut("items/loans")] + public async Task PutWorkOrderItemLoan([FromBody] WorkOrderItemLoan 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.WorkOrderItemLoan)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.LoanPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemLoan + /// + /// + /// NoContent + [HttpDelete("items/loans/{WorkOrderItemLoanId}")] + public async Task DeleteWorkOrderItemLoan([FromRoute] long WorkOrderItemLoanId) + { + 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.WorkOrderItemLoan)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.LoanDeleteAsync(WorkOrderItemLoanId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemLoan + + + //*******************************new + /* + Units + + */ + + #region WorkOrderItemUnit + + /// + /// Create WorkOrderItemUnit + /// + /// WorkOrderItemUnit level only no descendents + /// + /// WorkOrderItemUnit object (no descendents) + [HttpPost("items/units")] + public async Task PostWorkOrderItemUnit([FromBody] WorkOrderItemUnit 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.WorkOrderItemUnit)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + WorkOrderItemUnit o = await biz.CreateUnitAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemUnit), new { WorkOrderItemUnitId = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); + } + + + /// + /// Get WorkOrderItemUnit object + /// + /// + /// A single WorkOrderItemUnit + [HttpGet("items/units/{WorkOrderItemUnitId}")] + public async Task GetWorkOrderItemUnit([FromRoute] long WorkOrderItemUnitId) + { + 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.WorkOrderItemUnit)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var o = await biz.GetUnitAsync(WorkOrderItemUnitId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemUnit))); + } + + /// + /// Put (update) WorkOrderItemUnit + /// (Descendent objects must be updated via their individual routes seperately) + /// + /// WorkOrderItemUnit - top level only, no descendents + /// New concurrency token + [HttpPut("items/units")] + public async Task PutWorkOrderItemUnit([FromBody] WorkOrderItemUnit 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.WorkOrderItemUnit)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + var o = await biz.UnitPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + if (o == null) + { + if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) + return StatusCode(409, new ApiErrorResponse(biz.Errors)); + else + return BadRequest(new ApiErrorResponse(biz.Errors)); + } + return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); + } + + /// + /// Delete WorkOrderItemUnit + /// + /// + /// NoContent + [HttpDelete("items/units/{WorkOrderItemUnitId}")] + public async Task DeleteWorkOrderItemUnit([FromRoute] long WorkOrderItemUnitId) + { + 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.WorkOrderItemUnit)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.UnitDeleteAsync(WorkOrderItemUnitId)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + + #endregion WorkOrderItemUnit + + + + //------------