diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 58fdc71b..42955d08 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -712,6 +712,25 @@ namespace AyaNova.Biz return dbObject; } + //////////////////////////////////////////////////////////////////////////////////////////////// + //DELETE + // + internal async Task PartDeleteAsync(long id) + { + WorkOrderItemPart dbObject = await ct.WorkOrderItemPart.SingleOrDefaultAsync(m => m.Id == id); + PartValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemPart.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 // @@ -741,11 +760,22 @@ namespace AyaNova.Biz } } - // //Can delete? - // private void PartValidateCanDelete(WorkOrderItemPart inObj) - // { - // //whatever needs to be check to delete this object - // } + //Can delete? + private void PartValidateCanDelete(WorkOrderItemPart 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.WorkOrderItemPart)) + { + AddError(ApiErrorCode.NOT_AUTHORIZED); + return; + } + } private async Task PartSearchIndexAsync(WorkOrderItemPart obj, bool isNew)