This commit is contained in:
2020-05-16 21:41:27 +00:00
parent 26fc7ed0e6
commit 933b5ce459
4 changed files with 55 additions and 51 deletions

View File

@@ -98,18 +98,18 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkAdd tag \"{tag}\" on {ayaType} ({idList.Count} specified)";
var JobName = $"Bulk operation: Add tag \"{tag}\" on {ayaType} ({idList.Count} specified)";
JObject o = JObject.FromObject(new
{
ayaType = ayaType,
idList = idList,
op = "bulk-add",
op = "add-tag",
tag = tag
});
OpsJob j = new OpsJob();
j.Name = JobName;
j.JobType = JobType.BulkTag;
j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false;
j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct);
@@ -139,17 +139,17 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkAdd tag \"{tag}\" on any {ayaType}";
var JobName = $"Bulk operation: Add tag \"{tag}\" on any {ayaType}";
JObject o = JObject.FromObject(new
{
ayaType = ayaType,
op = "bulk-add-any",
op = "add-any-tag",
tag = tag
});
OpsJob j = new OpsJob();
j.Name = JobName;
j.JobType = JobType.BulkTag;
j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false;
j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct);
@@ -181,18 +181,18 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkRemove tag \"{tag}\" from {ayaType} ({idList.Count} specified)";
var JobName = $"Bulk operation: Remove tag \"{tag}\" from {ayaType} ({idList.Count} specified)";
JObject o = JObject.FromObject(new
{
ayaType = ayaType,
idList = idList,
op = "bulk-remove",
op = "remove-tag",
tag = tag
});
OpsJob j = new OpsJob();
j.Name = JobName;
j.JobType = JobType.BulkTag;
j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false;
j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct);
@@ -223,17 +223,17 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkRemove tag \"{tag}\" from any {ayaType}";
var JobName = $"Bulk operation: Remove tag \"{tag}\" from any {ayaType}";
JObject o = JObject.FromObject(new
{
ayaType = ayaType,
op = "bulk-remove-any",
op = "remove-any-tag",
tag = tag
});
OpsJob j = new OpsJob();
j.Name = JobName;
j.JobType = JobType.BulkTag;
j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false;
j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct);
@@ -269,19 +269,19 @@ namespace AyaNova.Api.Controllers
toTag = TagBiz.NormalizeTag(toTag);
if (string.IsNullOrWhiteSpace(toTag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "toTag"));
var JobName = $"BulkReplace tag \"{fromTag}\" with tag \"{toTag}\" on {ayaType} ({idList.Count} specified)";
var JobName = $"Bulk operation: Replace tag \"{fromTag}\" with tag \"{toTag}\" on {ayaType} ({idList.Count} specified)";
JObject o = JObject.FromObject(new
{
ayaType = ayaType,
idList = idList,
op = "bulk-replace",
op = "replace-tag",
fromTag = fromTag,
toTag = toTag
});
OpsJob j = new OpsJob();
j.ObjectType = ayaType;
j.Name = JobName;
j.JobType = JobType.BulkTag;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false;
j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct);
@@ -316,18 +316,18 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(toTag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "toTag"));
var JobName = $"BulkReplace tag \"{fromTag}\" with tag \"{toTag}\" on any {ayaType}";
var JobName = $"Bulk operation: Replace tag \"{fromTag}\" with tag \"{toTag}\" on any {ayaType}";
JObject o = JObject.FromObject(new
{
ayaType = ayaType,
op = "bulk-replace-any",
op = "replace-any-tag",
fromTag = fromTag,
toTag = toTag
});
OpsJob j = new OpsJob();
j.Name = JobName;
j.JobType = JobType.BulkTag;
j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false;
j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct);

View File

@@ -11,7 +11,7 @@ namespace AyaNova.Biz
TestWidgetJob = 1,//test job for unit testing
CoreJobSweeper = 2,
SeedTestData = 4,
BulkTag = 5
BulkCoreBizObjectOperation = 5
}

View File

@@ -408,8 +408,8 @@ namespace AyaNova.Biz
case JobType.SeedTestData:
o = (IJobObject)BizObjectFactory.GetBizObject(AyaType.TrialSeeder, ct);
break;
case JobType.BulkTag:
o = (IJobObject)TagBiz.GetBiz(ct);
case JobType.BulkCoreBizObjectOperation:
o = (IJobObject)BizObjectFactory.GetBizObject(job.ObjectType, ct);
break;
default:
throw new System.NotSupportedException($"ProcessJobAsync type {job.JobType.ToString()} is not supported");

View File

@@ -11,7 +11,7 @@ using System.Linq;
namespace AyaNova.Biz
{
internal class TagBiz : BizObject, IJobObject
internal class TagBiz : BizObject//, IJobObject
{
internal TagBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
{
@@ -239,37 +239,41 @@ namespace AyaNova.Biz
#endregion utilities
//Originally this whole object was just a simple utility class but was going to handle bulk tag jobs here so made it a full biz object
//keeping only in case I need to handle some job but in the end this could go back to a simple static utility class if it never pans out
////////////////////////////////////////////////////////////////////////////////////////////////
//JOB / OPERATIONS
//
public async Task HandleJobAsync(OpsJob job)
{
switch (job.JobType)
{
case JobType.BulkTag:
await ProcessBulkJobAsync(job);
break;
default:
throw new System.ArgumentOutOfRangeException($"TagBiz.HandleJob-> Invalid job type{job.JobType.ToString()}");
}
}
// public async Task HandleJobAsync(OpsJob job)
// {
// await Task.CompletedTask;
// switch (job.JobType)
// {
// // case JobType.BulkCoreBizObjectOperation:
// // await ProcessBulkJobAsync(job);
// // break;
// default:
// throw new System.ArgumentOutOfRangeException($"TagBiz.HandleJob-> Invalid job type{job.JobType.ToString()}");
// }
// }
private async Task ProcessBulkJobAsync(OpsJob job)
{
// private async Task ProcessBulkJobAsync(OpsJob job)
// {
//Simulate a long running job here
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running, ct);
await JobsBiz.LogJobAsync(job.GId, $"Tag::BulkJob started...", ct);
// //Simulate a long running job here
// await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running, ct);
// await JobsBiz.LogJobAsync(job.GId, $"Tag::BulkJob started...", ct);
//get XBiz for type specified
//use XBiz to call get then update then save
//ideally don't have a huge switch statement with identical code for each object
await JobsBiz.LogJobAsync(job.GId, "Tag::BulkJob completed", ct);
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed, ct);
// //get XBiz for type specified
// //use XBiz to call get then update then save
// //ideally don't have a huge switch statement with identical code for each object
}
// await JobsBiz.LogJobAsync(job.GId, "Tag::BulkJob completed", ct);
// await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed, ct);
// }