From 61cc48530a28b3691cd6f46b4ff8f02c1d2a5640 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 10 Dec 2020 19:29:00 +0000 Subject: [PATCH] Batch is the new Bulk --- docs/8.0/ayanova/docs/ay-ex-tags.md | 4 +- .../Controllers/AttachmentController.cs | 10 +- .../AyaNova/Controllers/ExportController.cs | 4 - .../Controllers/JobOperationsController.cs | 10 +- server/AyaNova/Controllers/TagController.cs | 38 ++--- server/AyaNova/biz/BizRoles.cs | 4 +- server/AyaNova/biz/CustomerBiz.cs | 10 +- server/AyaNova/biz/HeadOfficeBiz.cs | 10 +- server/AyaNova/biz/JobType.cs | 2 +- server/AyaNova/biz/JobsBiz.cs | 4 +- server/AyaNova/biz/NotifySubscriptionBiz.cs | 131 ------------------ server/AyaNova/biz/TagBiz.cs | 6 +- server/AyaNova/biz/UserBiz.cs | 10 +- server/AyaNova/biz/VendorBiz.cs | 10 +- server/AyaNova/biz/WidgetBiz.cs | 10 +- server/AyaNova/biz/WorkOrderBiz.cs | 10 +- server/AyaNova/models/ICoreBizObjectModel.cs | 3 +- 17 files changed, 70 insertions(+), 206 deletions(-) diff --git a/docs/8.0/ayanova/docs/ay-ex-tags.md b/docs/8.0/ayanova/docs/ay-ex-tags.md index 3ae9c713..32cbec53 100644 --- a/docs/8.0/ayanova/docs/ay-ex-tags.md +++ b/docs/8.0/ayanova/docs/ay-ex-tags.md @@ -1,9 +1,9 @@ # TAGS EXTENSION -The Tags extension can be used to make bulk changes to selected item's Tags collection. +The Tags extension can be used to make batch changes to selected item's Tags collection. ## Select -Extensions work with selected items from data tables. Use the checkbox in the first column to make selections. If no checkbox column is available that means either the currently logged in user doesn't have rights to make bulk changes or that particular data table doesn't support bulk changes. +Extensions work with selected items from data tables. Use the checkbox in the first column to make selections. If no checkbox column is available that means either the currently logged in user doesn't have rights to make batch changes or that particular data table doesn't support batch changes. ## Add Add a single tag to all selected objects. Note that you can enter a single tag at a time, this extension does not currently support multiple tags at once diff --git a/server/AyaNova/Controllers/AttachmentController.cs b/server/AyaNova/Controllers/AttachmentController.cs index 5c654974..7a260e21 100644 --- a/server/AyaNova/Controllers/AttachmentController.cs +++ b/server/AyaNova/Controllers/AttachmentController.cs @@ -428,9 +428,9 @@ namespace AyaNova.Api.Controllers /// /// /// No content - [HttpPost("bulk-delete")] + [HttpPost("batch-delete")] [Authorize] - public async Task PostBulkDelete([FromBody] List idList) + public async Task PostBatchDelete([FromBody] List idList) { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -463,9 +463,9 @@ namespace AyaNova.Api.Controllers /// /// /// No content - [HttpPost("bulk-move")] + [HttpPost("batch-move")] [Authorize] - public async Task PostBulkMove([FromBody] dtoBulkMove dt) + public async Task PostBatchMove([FromBody] dtoBatchMove dt) { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -497,7 +497,7 @@ namespace AyaNova.Api.Controllers return NoContent(); } - public class dtoBulkMove + public class dtoBatchMove { public List IdList { get; set; } public AyaType ToType { get; set; } diff --git a/server/AyaNova/Controllers/ExportController.cs b/server/AyaNova/Controllers/ExportController.cs index 0b4237e9..77b022cf 100644 --- a/server/AyaNova/Controllers/ExportController.cs +++ b/server/AyaNova/Controllers/ExportController.cs @@ -61,10 +61,6 @@ namespace AyaNova.Api.Controllers if (dataListSelection.IsEmpty) return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required")); - //Not sure exactly what this is, maybe copied from a bulk tag op fragment? - // if (!dataListSelection.ObjectType.HasAttribute(typeof(CoreBizObjectAttribute))) - // return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, null, "Not a taggable object type")); - if (!Authorized.HasReadFullRole(HttpContext.Items, dataListSelection.ObjectType)) return StatusCode(403, new ApiNotAuthorizedResponse()); diff --git a/server/AyaNova/Controllers/JobOperationsController.cs b/server/AyaNova/Controllers/JobOperationsController.cs index 7bed9488..552f81d3 100644 --- a/server/AyaNova/Controllers/JobOperationsController.cs +++ b/server/AyaNova/Controllers/JobOperationsController.cs @@ -113,7 +113,7 @@ namespace AyaNova.Api.Controllers return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - //## NOTE: deliberately do *not* check for authorization as this is called by any bulk operation users may submit via extensions + //## NOTE: deliberately do *not* check for authorization as this is called by any batch operation users may submit via extensions //and the user would need the exact Guid to view a job so not likely they will fish for it in a nefarious way // if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.ServerJob)) // { @@ -185,7 +185,7 @@ namespace AyaNova.Api.Controllers //////////////////////////////////////////////////////////////////////////////////////////////// - // EXTENSION BULK JOBS + // EXTENSION BATCH JOBS // // @@ -195,8 +195,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-delete")] - public async Task BulkDeleteObjects([FromBody] DataListSelection dataListSelection) + [HttpPost("batch-delete")] + public async Task BatchDeleteObjects([FromBody] DataListSelection dataListSelection) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -224,7 +224,7 @@ namespace AyaNova.Api.Controllers OpsJob j = new OpsJob(); j.Name = JobName; j.ObjectType = dataListSelection.ObjectType; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.SubType = JobSubType.Delete; j.Exclusive = false; j.JobInfo = o.ToString(); diff --git a/server/AyaNova/Controllers/TagController.cs b/server/AyaNova/Controllers/TagController.cs index aef86cd7..60eb9222 100644 --- a/server/AyaNova/Controllers/TagController.cs +++ b/server/AyaNova/Controllers/TagController.cs @@ -72,7 +72,7 @@ namespace AyaNova.Api.Controllers ///////////////////////////////////////////////////////////// - //BULK OPS + //BATCH OPS // // @@ -82,8 +82,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-add/{tag}")] - public async Task BulkAdd([FromRoute] string tag, [FromBody] DataListSelection dataListSelection) + [HttpPost("batch-add/{tag}")] + public async Task BatchAdd([FromRoute] string tag, [FromBody] DataListSelection dataListSelection) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -117,7 +117,7 @@ namespace AyaNova.Api.Controllers OpsJob j = new OpsJob(); j.Name = JobName; j.ObjectType = dataListSelection.ObjectType; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.SubType = JobSubType.TagAdd; j.Exclusive = false; j.JobInfo = o.ToString(); @@ -132,8 +132,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-add-any/{ayaType}/{tag}")] - public async Task BulkAddAny([FromRoute] AyaType ayaType, [FromRoute] string tag) + [HttpPost("batch-add-any/{ayaType}/{tag}")] + public async Task BatchAddAny([FromRoute] AyaType ayaType, [FromRoute] string tag) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -157,7 +157,7 @@ namespace AyaNova.Api.Controllers OpsJob j = new OpsJob(); j.Name = JobName; j.ObjectType = ayaType; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.SubType = JobSubType.TagAddAny; j.Exclusive = false; j.JobInfo = o.ToString(); @@ -172,8 +172,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-remove/{tag}")] - public async Task BulkRemove([FromRoute] string tag, [FromBody] DataListSelection dataListSelection) + [HttpPost("batch-remove/{tag}")] + public async Task BatchRemove([FromRoute] string tag, [FromBody] DataListSelection dataListSelection) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -207,7 +207,7 @@ namespace AyaNova.Api.Controllers OpsJob j = new OpsJob(); j.Name = JobName; j.ObjectType = dataListSelection.ObjectType; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.SubType = JobSubType.TagRemove; j.Exclusive = false; j.JobInfo = o.ToString(); @@ -223,8 +223,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-remove-any/{ayaType}/{tag}")] - public async Task BulkRemoveAny([FromRoute] AyaType ayaType, [FromRoute] string tag) + [HttpPost("batch-remove-any/{ayaType}/{tag}")] + public async Task BatchRemoveAny([FromRoute] AyaType ayaType, [FromRoute] string tag) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -249,7 +249,7 @@ namespace AyaNova.Api.Controllers j.Name = JobName; j.ObjectType = ayaType; j.SubType = JobSubType.TagRemoveAny; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.Exclusive = false; j.JobInfo = o.ToString(); await JobsBiz.AddJobAsync(j); @@ -265,8 +265,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-replace/{fromTag}")] - public async Task BulkReplace([FromRoute] string fromTag, [FromQuery] string toTag, [FromBody] DataListSelection dataListSelection) + [HttpPost("batch-replace/{fromTag}")] + public async Task BatchReplace([FromRoute] string fromTag, [FromQuery] string toTag, [FromBody] DataListSelection dataListSelection) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -299,7 +299,7 @@ namespace AyaNova.Api.Controllers OpsJob j = new OpsJob(); j.ObjectType = dataListSelection.ObjectType; j.Name = JobName; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.SubType = JobSubType.TagReplace; j.Exclusive = false; j.JobInfo = o.ToString(); @@ -315,8 +315,8 @@ namespace AyaNova.Api.Controllers /// /// /// Job Id - [HttpPost("bulk-replace-any/{ayaType}/{fromTag}")] - public async Task BulkReplaceAny([FromRoute] AyaType ayaType, [FromRoute] string fromTag, [FromQuery] string toTag) + [HttpPost("batch-replace-any/{ayaType}/{fromTag}")] + public async Task BatchReplaceAny([FromRoute] AyaType ayaType, [FromRoute] string fromTag, [FromQuery] string toTag) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -345,7 +345,7 @@ namespace AyaNova.Api.Controllers OpsJob j = new OpsJob(); j.Name = JobName; j.ObjectType = ayaType; - j.JobType = JobType.BulkCoreBizObjectOperation; + j.JobType = JobType.BatchCoreObjectOperation; j.SubType = JobSubType.TagReplaceAny; j.Exclusive = false; j.JobInfo = o.ToString(); diff --git a/server/AyaNova/biz/BizRoles.cs b/server/AyaNova/biz/BizRoles.cs index 9cfa31e7..3d8e658e 100644 --- a/server/AyaNova/biz/BizRoles.cs +++ b/server/AyaNova/biz/BizRoles.cs @@ -456,12 +456,12 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////// //FILEATTACHMENT ADMINISTRATION //This is not for attachments themselves which are tied to the object they are attached to - //this is for things like maintenance jobs or viewing lists of all attachments in general for bulk ops etc + //this is for things like maintenance jobs or viewing lists of all attachments in general for batch ops etc // NOTE: Attachments are considered business data and as such are not available to OPS roles // who are not allowed to see biz data roles.Add(AyaType.FileAttachment, new BizRoleSet() { - Change = AuthorizationRoles.BizAdminFull,//Need full rights only here because this is the rights checked for bulk delete etc so it's simpler than checking all the parent object rights if you know they already have all rights + Change = AuthorizationRoles.BizAdminFull,//Need full rights only here because this is the rights checked for batch delete etc so it's simpler than checking all the parent object rights if you know they already have all rights ReadFullRecord = AuthorizationRoles.BizAdminFull | AuthorizationRoles.BizAdminLimited }); diff --git a/server/AyaNova/biz/CustomerBiz.cs b/server/AyaNova/biz/CustomerBiz.cs index b390a1f1..f0a2d775 100644 --- a/server/AyaNova/biz/CustomerBiz.cs +++ b/server/AyaNova/biz/CustomerBiz.cs @@ -396,8 +396,8 @@ namespace AyaNova.Biz //basically any error condition during job processing should throw up an exception if it can't be handled switch (job.JobType) { - case JobType.BulkCoreBizObjectOperation: - await ProcessBulkJobAsync(job); + case JobType.BatchCoreObjectOperation: + await ProcessBatchJobAsync(job); break; default: throw new System.ArgumentOutOfRangeException($"CustomerBiz.HandleJob-> Invalid job type{job.JobType.ToString()}"); @@ -406,7 +406,7 @@ namespace AyaNova.Biz - private async Task ProcessBulkJobAsync(OpsJob job) + private async Task ProcessBatchJobAsync(OpsJob job) { await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} started..."); @@ -436,7 +436,7 @@ namespace AyaNova.Biz case JobSubType.TagRemove: case JobSubType.TagReplaceAny: case JobSubType.TagReplace: - SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); + SaveIt = TagBiz.ProcessBatchTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); break; case JobSubType.Delete: if (!await DeleteAsync(id)) @@ -445,7 +445,7 @@ namespace AyaNova.Biz } break; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchJobAsync -> Invalid job Subtype{job.SubType}"); } if (SaveIt) { diff --git a/server/AyaNova/biz/HeadOfficeBiz.cs b/server/AyaNova/biz/HeadOfficeBiz.cs index 6cf04683..9d60bf10 100644 --- a/server/AyaNova/biz/HeadOfficeBiz.cs +++ b/server/AyaNova/biz/HeadOfficeBiz.cs @@ -356,8 +356,8 @@ namespace AyaNova.Biz //basically any error condition during job processing should throw up an exception if it can't be handled switch (job.JobType) { - case JobType.BulkCoreBizObjectOperation: - await ProcessBulkJobAsync(job); + case JobType.BatchCoreObjectOperation: + await ProcessBatchJobAsync(job); break; default: throw new System.ArgumentOutOfRangeException($"HeadOfficeBiz.HandleJob-> Invalid job type{job.JobType.ToString()}"); @@ -366,7 +366,7 @@ namespace AyaNova.Biz - private async Task ProcessBulkJobAsync(OpsJob job) + private async Task ProcessBatchJobAsync(OpsJob job) { await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); await JobsBiz.LogJobAsync(job.GId, $"LT:StartJob {job.SubType}"); @@ -397,7 +397,7 @@ namespace AyaNova.Biz case JobSubType.TagRemove: case JobSubType.TagReplaceAny: case JobSubType.TagReplace: - SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); + SaveIt = TagBiz.ProcessBatchTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); break; case JobSubType.Delete: if (!await DeleteAsync(id)) @@ -407,7 +407,7 @@ namespace AyaNova.Biz } break; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchJobAsync -> Invalid job Subtype{job.SubType}"); } if (SaveIt) { diff --git a/server/AyaNova/biz/JobType.cs b/server/AyaNova/biz/JobType.cs index 78687625..4eefb637 100644 --- a/server/AyaNova/biz/JobType.cs +++ b/server/AyaNova/biz/JobType.cs @@ -11,7 +11,7 @@ namespace AyaNova.Biz TestJob = 1,//test job for unit and OPS admin testing CoreJobSweeper = 2, SeedTestData = 4, - BulkCoreBizObjectOperation = 5, + BatchCoreObjectOperation = 5, Backup = 6, AttachmentMaintenance = 7 diff --git a/server/AyaNova/biz/JobsBiz.cs b/server/AyaNova/biz/JobsBiz.cs index cceb7bbb..407aa5e5 100644 --- a/server/AyaNova/biz/JobsBiz.cs +++ b/server/AyaNova/biz/JobsBiz.cs @@ -308,8 +308,8 @@ namespace AyaNova.Biz case JobType.AttachmentMaintenance: o = (IJobObject)BizObjectFactory.GetBizObject(AyaType.FileAttachment, ct); break; - case JobType.BulkCoreBizObjectOperation: - //bulk op, hand off to biz object to deal with + case JobType.BatchCoreObjectOperation: + //batch op, hand off to biz object to deal with //note, convention is that there is an idList in job.jobinfo json if preselected else it's all objects of type o = (IJobObject)BizObjectFactory.GetBizObject(job.ObjectType, ct); break; diff --git a/server/AyaNova/biz/NotifySubscriptionBiz.cs b/server/AyaNova/biz/NotifySubscriptionBiz.cs index 643f9318..d0379ae2 100644 --- a/server/AyaNova/biz/NotifySubscriptionBiz.cs +++ b/server/AyaNova/biz/NotifySubscriptionBiz.cs @@ -233,137 +233,6 @@ namespace AyaNova.Biz - //NOTE: In DB schema only name and serial are not nullable - - //run validation and biz rules - - // //Name required - // if (string.IsNullOrWhiteSpace(proposedObj.Name)) - // AddError(ApiErrorCode.VALIDATION_REQUIRED, "Name"); - - - // //If name is otherwise OK, check that name is unique - // if (!PropertyHasErrors("Name")) - // { - // //Use Any command is efficient way to check existance, it doesn't return the record, just a true or false - // if (await ct.NotifySubscription.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id)) - // { - // AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name"); - // } - // } - - // //Start date AND end date must both be null or both contain values - // if (proposedObj.StartDate == null && proposedObj.EndDate != null) - // AddError(ApiErrorCode.VALIDATION_REQUIRED, "StartDate"); - - // if (proposedObj.StartDate != null && proposedObj.EndDate == null) - // AddError(ApiErrorCode.VALIDATION_REQUIRED, "EndDate"); - - // //Start date before end date - // if (proposedObj.StartDate != null && proposedObj.EndDate != null) - // if (proposedObj.StartDate > proposedObj.EndDate) - // AddError(ApiErrorCode.VALIDATION_STARTDATE_AFTER_ENDDATE, "StartDate"); - - // //Enum is valid value - // if (!proposedObj.UserType.IsValid()) - // { - // AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "UserType"); - // } - - // //Any form customizations to validate? - // var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.NotifySubscription.ToString()); - // if (FormCustomization != null) - // { - // //Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required - - // //validate users choices for required non custom fields - // RequiredFieldsValidator.Validate(this, FormCustomization, proposedObj); - - // //validate custom fields - // CustomFieldsValidator.Validate(this, FormCustomization, proposedObj.CustomFields); - // } - } - - // private void ValidateCanDelete(NotifySubscription inObj) - // { - // //whatever needs to be check to delete this object - // } - - - - // //////////////////////////////////////////////////////////////////////////////////////////////// - // //JOB / OPERATIONS - // // - // public async Task HandleJobAsync(OpsJob job) - // { - // //Hand off the particular job to the corresponding processing code - // //NOTE: If this code throws an exception the caller (JobsBiz::ProcessJobsAsync) will automatically set the job to failed and log the exeption so - // //basically any error condition during job processing should throw up an exception if it can't be handled - // switch (job.JobType) - // { - // case JobType.BulkCoreBizObjectOperation: - // await ProcessBulkJobAsync(job); - // break; - // default: - // throw new System.ArgumentOutOfRangeException($"NotifySubscriptionBiz.HandleJob-> Invalid job type{job.JobType.ToString()}"); - // } - // } - - - - // private async Task ProcessBulkJobAsync(OpsJob job) - // { - // await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); - // await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} started..."); - // List idList = new List(); - // long ProcessedObjectCount = 0; - // JObject jobData = JObject.Parse(job.JobInfo); - // if (jobData.ContainsKey("idList")) - // idList = ((JArray)jobData["idList"]).ToObject>(); - // else - // idList = await ct.NotifySubscription.Select(z => z.Id).ToListAsync(); - // bool SaveIt = false; - // foreach (long id in idList) - // { - // try - // { - // SaveIt = false; - // ClearErrors(); - // var o = await GetAsync(id, false); - // switch (job.SubType) - // { - // case JobSubType.TagAddAny: - // case JobSubType.TagAdd: - // case JobSubType.TagRemoveAny: - // case JobSubType.TagRemove: - // case JobSubType.TagReplaceAny: - // case JobSubType.TagReplace: - // SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); - // break; - // default: - // throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); - // } - // if (SaveIt) - // { - // o = await PutAsync(o); - // if (o == null) - // await JobsBiz.LogJobAsync(job.GId, $"Error processing item {id}: {GetErrorsAsString()}"); - // else - // ProcessedObjectCount++; - // } - // else - // ProcessedObjectCount++; - // } - // catch (Exception ex) - // { - // await JobsBiz.LogJobAsync(job.GId, $"Error processing item {id}"); - // await JobsBiz.LogJobAsync(job.GId, ExceptionUtil.ExtractAllExceptionMessages(ex)); - // } - // } - // await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} processed {ProcessedObjectCount} of {idList.Count}"); - // await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed); - // } - ///////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/TagBiz.cs b/server/AyaNova/biz/TagBiz.cs index 21fa5489..2c85cd45 100644 --- a/server/AyaNova/biz/TagBiz.cs +++ b/server/AyaNova/biz/TagBiz.cs @@ -244,10 +244,10 @@ namespace AyaNova.Biz /// - /// Process bulk tag operation + /// Process batch tag operation /// /// true if object needs to be saved or false if no changes were made - internal static bool ProcessBulkTagOperation(List tagCollection, string tag, string toTag, JobSubType subType) + internal static bool ProcessBatchTagOperation(List tagCollection, string tag, string toTag, JobSubType subType) { switch (subType) { @@ -272,7 +272,7 @@ namespace AyaNova.Biz } return false; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkTagOperation -> Invalid job Subtype{subType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchTagOperation -> Invalid job Subtype{subType}"); } } diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index b9a5bf13..c99af00d 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -818,8 +818,8 @@ namespace AyaNova.Biz { switch (job.JobType) { - case JobType.BulkCoreBizObjectOperation: - await ProcessBulkJobAsync(job); + case JobType.BatchCoreObjectOperation: + await ProcessBatchJobAsync(job); break; default: throw new System.ArgumentOutOfRangeException($"User.HandleJob-> Invalid job type{job.JobType.ToString()}"); @@ -830,7 +830,7 @@ namespace AyaNova.Biz - private async Task ProcessBulkJobAsync(OpsJob job) + private async Task ProcessBatchJobAsync(OpsJob job) { await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} started..."); @@ -862,7 +862,7 @@ namespace AyaNova.Biz case JobSubType.TagRemove: case JobSubType.TagReplaceAny: case JobSubType.TagReplace: - SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); + SaveIt = TagBiz.ProcessBatchTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); break; case JobSubType.Delete: if (!await DeleteAsync(id)) @@ -871,7 +871,7 @@ namespace AyaNova.Biz } break; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchJobAsync -> Invalid job Subtype{job.SubType}"); } if (SaveIt) diff --git a/server/AyaNova/biz/VendorBiz.cs b/server/AyaNova/biz/VendorBiz.cs index 29cd7536..b6fb6b7e 100644 --- a/server/AyaNova/biz/VendorBiz.cs +++ b/server/AyaNova/biz/VendorBiz.cs @@ -331,8 +331,8 @@ namespace AyaNova.Biz //basically any error condition during job processing should throw up an exception if it can't be handled switch (job.JobType) { - case JobType.BulkCoreBizObjectOperation: - await ProcessBulkJobAsync(job); + case JobType.BatchCoreObjectOperation: + await ProcessBatchJobAsync(job); break; default: throw new System.ArgumentOutOfRangeException($"VendorBiz.HandleJob-> Invalid job type{job.JobType.ToString()}"); @@ -341,7 +341,7 @@ namespace AyaNova.Biz - private async Task ProcessBulkJobAsync(OpsJob job) + private async Task ProcessBatchJobAsync(OpsJob job) { await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} started..."); @@ -371,7 +371,7 @@ namespace AyaNova.Biz case JobSubType.TagRemove: case JobSubType.TagReplaceAny: case JobSubType.TagReplace: - SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); + SaveIt = TagBiz.ProcessBatchTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); break; case JobSubType.Delete: if (!await DeleteAsync(id)) @@ -380,7 +380,7 @@ namespace AyaNova.Biz } break; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchJobAsync -> Invalid job Subtype{job.SubType}"); } if (SaveIt) { diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index af2a2d81..fe94d33b 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -376,8 +376,8 @@ namespace AyaNova.Biz //basically any error condition during job processing should throw up an exception if it can't be handled switch (job.JobType) { - case JobType.BulkCoreBizObjectOperation: - await ProcessBulkJobAsync(job); + case JobType.BatchCoreObjectOperation: + await ProcessBatchJobAsync(job); break; default: throw new System.ArgumentOutOfRangeException($"WidgetBiz.HandleJob-> Invalid job type{job.JobType.ToString()}"); @@ -386,7 +386,7 @@ namespace AyaNova.Biz - private async Task ProcessBulkJobAsync(OpsJob job) + private async Task ProcessBatchJobAsync(OpsJob job) { await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} started..."); @@ -416,7 +416,7 @@ namespace AyaNova.Biz case JobSubType.TagRemove: case JobSubType.TagReplaceAny: case JobSubType.TagReplace: - SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); + SaveIt = TagBiz.ProcessBatchTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); break; case JobSubType.Delete: if(!await DeleteAsync(id)){ @@ -424,7 +424,7 @@ namespace AyaNova.Biz } break; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchJobAsync -> Invalid job Subtype{job.SubType}"); } if (SaveIt) { diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index bbeeddfc..ef7b36d8 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -2505,8 +2505,8 @@ namespace AyaNova.Biz { switch (job.JobType) { - case JobType.BulkCoreBizObjectOperation: - await ProcessBulkJobAsync(job); + case JobType.BatchCoreObjectOperation: + await ProcessBatchJobAsync(job); break; default: throw new System.ArgumentOutOfRangeException($"WorkOrder.HandleJob-> Invalid job type{job.JobType.ToString()}"); @@ -2514,7 +2514,7 @@ namespace AyaNova.Biz } - private async Task ProcessBulkJobAsync(OpsJob job) + private async Task ProcessBatchJobAsync(OpsJob job) { await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running); await JobsBiz.LogJobAsync(job.GId, $"Batch job {job.SubType} started..."); @@ -2544,7 +2544,7 @@ namespace AyaNova.Biz case JobSubType.TagRemove: case JobSubType.TagReplaceAny: case JobSubType.TagReplace: - SaveIt = TagBiz.ProcessBulkTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); + SaveIt = TagBiz.ProcessBatchTagOperation(o.Tags, (string)jobData["tag"], jobData.ContainsKey("toTag") ? (string)jobData["toTag"] : null, job.SubType); break; case JobSubType.Delete: if (!await DeleteWorkOrderGraphItem(job.ObjectType, id)) @@ -2553,7 +2553,7 @@ namespace AyaNova.Biz } break; default: - throw new System.ArgumentOutOfRangeException($"ProcessBulkJob -> Invalid job Subtype{job.SubType}"); + throw new System.ArgumentOutOfRangeException($"ProcessBatchJobAsync -> Invalid job Subtype{job.SubType}"); } if (SaveIt) { diff --git a/server/AyaNova/models/ICoreBizObjectModel.cs b/server/AyaNova/models/ICoreBizObjectModel.cs index a980c7a2..81e3fadf 100644 --- a/server/AyaNova/models/ICoreBizObjectModel.cs +++ b/server/AyaNova/models/ICoreBizObjectModel.cs @@ -1,10 +1,9 @@ using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; namespace AyaNova.Models { /// /// Interface for biz object models with standard fields - /// used for bulk operations etc + /// used for batch operations etc /// internal interface ICoreBizObjectModel {