From e7b919e803c2b8cd805893763a9c8f34580fd26e Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Sat, 9 May 2020 18:38:48 +0000 Subject: [PATCH] --- .../Controllers/WorkOrderController.cs | 21 +++++++++ server/AyaNova/biz/WorkOrderBiz.cs | 43 ++++++++++++++++--- 2 files changed, 59 insertions(+), 5 deletions(-) diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs index aa3ea648..0e3bac05 100644 --- a/server/AyaNova/Controllers/WorkOrderController.cs +++ b/server/AyaNova/Controllers/WorkOrderController.cs @@ -391,6 +391,27 @@ namespace AyaNova.Api.Controllers return Ok(ApiOkResponse.Response(new { ConcurrencyToken = o.ConcurrencyToken }, true)); } + + /// + /// Delete WorkOrderItemLabor + /// + /// + /// NoContent + [HttpDelete("{id}")] + public async Task DeleteWorkOrderItemLabor([FromRoute] long id) + { + 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.WorkOrderItemLabor)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!await biz.LaborDeleteAsync(id)) + return BadRequest(new ApiErrorResponse(biz.Errors)); + return NoContent(); + } + #endregion WorkOrderItemLabor diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 4a6f724a..58fdc71b 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -527,6 +527,25 @@ namespace AyaNova.Biz return dbObject; } + //////////////////////////////////////////////////////////////////////////////////////////////// + //DELETE + // + internal async Task LaborDeleteAsync(long id) + { + WorkOrderItemLabor dbObject = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(m => m.Id == id); + LaborValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemLabor.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType); + await TagUtil.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + return true; + } + //////////////////////////////////////////////////////////////////////////////////////////////// //VALIDATION // @@ -556,13 +575,27 @@ namespace AyaNova.Biz } } - // //Can delete? - // private void LaborValidateCanDelete(WorkOrderItemLabor inObj) - // { - // //whatever needs to be check to delete this object - // } + //Can delete? + private void LaborValidateCanDelete(WorkOrderItemLabor obj) + { + if (obj == null) + { + AddError(ApiErrorCode.NOT_FOUND, "id"); + return; + } + + //re-check rights here necessary due to traversal delete from Principle object + if (!Authorized.HasDeleteRole(CurrentUserRoles, AyaType.WorkOrderItemLabor)) + { + AddError(ApiErrorCode.NOT_AUTHORIZED); + return; + } + } + ////////////////////////////////////////////// + //INDEXING + // private async Task LaborSearchIndexAsync(WorkOrderItemLabor obj, bool isNew) { //SEARCH INDEXING