diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs index 83c3d3ee..40c469d9 100644 --- a/server/AyaNova/Controllers/WorkOrderController.cs +++ b/server/AyaNova/Controllers/WorkOrderController.cs @@ -325,148 +325,97 @@ namespace AyaNova.Api.Controllers /// /// Create WorkOrderItemLabor /// - /// - /// From route path - /// - [HttpPost("items/labors")] + /// WorkOrderItemLabor level only no descendents + /// + /// WorkOrderItemLabor object (no descendents) + [HttpPost("items")] 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)) + if (!Authorized.HasCreateRole(HttpContext.Items, AyaType.WorkOrderItemLabor)) 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); + WorkOrderItemLabor o = await biz.CreateLaborAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemLabor), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); } - - /// /// Get WorkOrderItemLabor object /// /// /// A single WorkOrderItemLabor - [HttpGet("items/labors/{WorkOrderItemLaborId}")] + [HttpGet("items/{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); + var o = await biz.GetLaborAsync(WorkOrderItemLaborId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLabor))); } - - #endregion WorkOrderItemLabor #region WorkOrderItemPart - + /// /// Create WorkOrderItemPart /// - /// - /// From route path - /// - [HttpPost("items/parts")] + /// WorkOrderItemPart level only no descendents + /// + /// WorkOrderItemPart object (no descendents) + [HttpPost("items")] 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)) + if (!Authorized.HasCreateRole(HttpContext.Items, AyaType.WorkOrderItemPart)) 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); + WorkOrderItemPart o = await biz.CreatePartAsync(newObject); + if (o == null) + return BadRequest(new ApiErrorResponse(biz.Errors)); + else + return CreatedAtAction(nameof(WorkOrderController.GetWorkOrderItemPart), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); } - - /// /// Get WorkOrderItemPart object /// /// /// A single WorkOrderItemPart - [HttpGet("items/parts/{WorkOrderItemPartId}")] + [HttpGet("items/{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); + var o = await biz.GetPartAsync(WorkOrderItemPartId); + if (o == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPart))); } - #endregion WorkOrderItemPart //------------ diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 4c367718..cdfdc672 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -392,7 +392,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //CREATE // - internal async Task LaborCreateAsync(WorkOrderItemLabor newObject) + internal async Task CreateLaborAsync(WorkOrderItemLabor newObject) { await LaborValidateAsync(newObject, null); if (HasErrors) @@ -497,7 +497,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// //CREATE // - internal async Task PartCreateAsync(WorkOrderItemPart newObject) + internal async Task CreatePartAsync(WorkOrderItemPart newObject) { await PartValidateAsync(newObject, null); if (HasErrors)