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