Batch is the new Bulk

This commit is contained in:
2020-12-10 19:29:00 +00:00
parent 379673981f
commit 61cc48530a
17 changed files with 70 additions and 206 deletions

View File

@@ -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

View File

@@ -428,9 +428,9 @@ namespace AyaNova.Api.Controllers
///
/// </summary>
/// <returns>No content</returns>
[HttpPost("bulk-delete")]
[HttpPost("batch-delete")]
[Authorize]
public async Task<IActionResult> PostBulkDelete([FromBody] List<long> idList)
public async Task<IActionResult> PostBatchDelete([FromBody] List<long> idList)
{
if (serverState.IsClosed)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
@@ -463,9 +463,9 @@ namespace AyaNova.Api.Controllers
///
/// </summary>
/// <returns>No content</returns>
[HttpPost("bulk-move")]
[HttpPost("batch-move")]
[Authorize]
public async Task<IActionResult> PostBulkMove([FromBody] dtoBulkMove dt)
public async Task<IActionResult> 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<long> IdList { get; set; }
public AyaType ToType { get; set; }

View File

@@ -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());

View File

@@ -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
/// </summary>
/// <param name="dataListSelection"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-delete")]
public async Task<IActionResult> BulkDeleteObjects([FromBody] DataListSelection dataListSelection)
[HttpPost("batch-delete")]
public async Task<IActionResult> 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();

View File

@@ -72,7 +72,7 @@ namespace AyaNova.Api.Controllers
/////////////////////////////////////////////////////////////
//BULK OPS
//BATCH OPS
//
//
@@ -82,8 +82,8 @@ namespace AyaNova.Api.Controllers
/// <param name="tag"></param>
/// <param name="dataListSelection"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-add/{tag}")]
public async Task<IActionResult> BulkAdd([FromRoute] string tag, [FromBody] DataListSelection dataListSelection)
[HttpPost("batch-add/{tag}")]
public async Task<IActionResult> 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
/// <param name="ayaType"></param>
/// <param name="tag"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-add-any/{ayaType}/{tag}")]
public async Task<IActionResult> BulkAddAny([FromRoute] AyaType ayaType, [FromRoute] string tag)
[HttpPost("batch-add-any/{ayaType}/{tag}")]
public async Task<IActionResult> 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
/// <param name="tag"></param>
/// <param name="dataListSelection"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-remove/{tag}")]
public async Task<IActionResult> BulkRemove([FromRoute] string tag, [FromBody] DataListSelection dataListSelection)
[HttpPost("batch-remove/{tag}")]
public async Task<IActionResult> 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
/// <param name="ayaType"></param>
/// <param name="tag"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-remove-any/{ayaType}/{tag}")]
public async Task<IActionResult> BulkRemoveAny([FromRoute] AyaType ayaType, [FromRoute] string tag)
[HttpPost("batch-remove-any/{ayaType}/{tag}")]
public async Task<IActionResult> 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
/// <param name="toTag"></param>
/// <param name="dataListSelection"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-replace/{fromTag}")]
public async Task<IActionResult> BulkReplace([FromRoute] string fromTag, [FromQuery] string toTag, [FromBody] DataListSelection dataListSelection)
[HttpPost("batch-replace/{fromTag}")]
public async Task<IActionResult> 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
/// <param name="fromTag"></param>
/// <param name="toTag"></param>
/// <returns>Job Id</returns>
[HttpPost("bulk-replace-any/{ayaType}/{fromTag}")]
public async Task<IActionResult> BulkReplaceAny([FromRoute] AyaType ayaType, [FromRoute] string fromTag, [FromQuery] string toTag)
[HttpPost("batch-replace-any/{ayaType}/{fromTag}")]
public async Task<IActionResult> 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();

View File

@@ -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
});

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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;

View File

@@ -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<long> idList = new List<long>();
// long ProcessedObjectCount = 0;
// JObject jobData = JObject.Parse(job.JobInfo);
// if (jobData.ContainsKey("idList"))
// idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
// 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);
// }
/////////////////////////////////////////////////////////////////////

View File

@@ -244,10 +244,10 @@ namespace AyaNova.Biz
/// <summary>
/// Process bulk tag operation
/// Process batch tag operation
/// </summary>
/// <returns>true if object needs to be saved or false if no changes were made</returns>
internal static bool ProcessBulkTagOperation(List<string> tagCollection, string tag, string toTag, JobSubType subType)
internal static bool ProcessBatchTagOperation(List<string> 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}");
}
}

View File

@@ -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)

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -1,10 +1,9 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace AyaNova.Models
{
/// <summary>
/// Interface for biz object models with standard fields
/// used for bulk operations etc
/// used for batch operations etc
/// </summary>
internal interface ICoreBizObjectModel
{