This commit is contained in:
2020-12-09 19:00:23 +00:00
parent c168d65865
commit 59f825bb36
4 changed files with 18 additions and 13 deletions

View File

@@ -94,7 +94,7 @@ namespace AyaNova.Api.Controllers
// return StatusCode(403, new ApiNotAuthorizedResponse());
// }
if (!ModelState.IsValid)
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
return Ok(ApiOkResponse.Response(await JobsBiz.GetJobStatusAsync(gid)));
}
@@ -112,10 +112,13 @@ namespace AyaNova.Api.Controllers
if (serverState.IsClosed)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.ServerJob))
{
return StatusCode(403, new ApiNotAuthorizedResponse());
}
//## NOTE: deliberately do *not* check for authorization as this is called by any bulk 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))
// {
// return StatusCode(403, new ApiNotAuthorizedResponse());
// }
if (!ModelState.IsValid)
{
@@ -187,7 +190,7 @@ namespace AyaNova.Api.Controllers
//
/// <summary>
/// <summary>
/// Bulk DELETE list of object id's specified
/// </summary>
/// <param name="dataListSelection"></param>
@@ -203,7 +206,7 @@ namespace AyaNova.Api.Controllers
if (dataListSelection.IsEmpty)
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required"));
if (!Authorized.HasDeleteRole(HttpContext.Items, dataListSelection.ObjectType))
return StatusCode(403, new ApiNotAuthorizedResponse());

View File

@@ -372,6 +372,7 @@ namespace AyaNova.Biz
await JobsBiz.LogJobAsync(job.GId, $"Bulk job {job.SubType} started...");
List<long> idList = new List<long>();
long ProcessedObjectCount = 0;
long FailedObjectCount = 0;
JObject jobData = JObject.Parse(job.JobInfo);
if (jobData.ContainsKey("idList"))
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
@@ -402,6 +403,7 @@ namespace AyaNova.Biz
if (!await DeleteAsync(id))
{
await JobsBiz.LogJobAsync(job.GId, $"Error processing item {id}: {GetErrorsAsString()}");
FailedObjectCount++;
}
break;
default:
@@ -424,8 +426,9 @@ namespace AyaNova.Biz
await JobsBiz.LogJobAsync(job.GId, ExceptionUtil.ExtractAllExceptionMessages(ex));
}
}
await JobsBiz.LogJobAsync(job.GId, $"Bulk job {job.SubType} processed {ProcessedObjectCount} of {idList.Count}");
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed);
await JobsBiz.LogJobAsync(job.GId, $"Bulk job {job.SubType} processed {ProcessedObjectCount} of {idList.Count} with {FailedObjectCount} failures");
await JobsBiz.UpdateJobStatusAsync(job.GId, FailedObjectCount == 0 ? JobStatus.Completed : JobStatus.Failed);
}

View File

@@ -72,11 +72,10 @@ namespace AyaNova.Biz
foreach (OpsJobLog i in l)
{
JobOperationsLogInfoItem o = new JobOperationsLogInfoItem();
o.Created = i.Created;
o.StatusText = i.StatusText;
o.JobId = jobId;
ret.Add(o);
}
@@ -129,7 +128,7 @@ namespace AyaNova.Biz
{
var sleepTime = 30 * 1000;
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running);
await JobsBiz.LogJobAsync(job.GId, $"Test job started, sleeping for {sleepTime/1000} seconds...");
await JobsBiz.LogJobAsync(job.GId, $"Test job started, sleeping for {sleepTime / 1000} seconds...");
await Task.Delay(sleepTime);
await JobsBiz.LogJobAsync(job.GId, "Test job done sleeping setting status to finished");
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed);

View File

@@ -7,7 +7,7 @@ namespace AyaNova.Biz
/// </summary>
public enum JobStatus : int
{
Absent=0,
Absent = 0,
Sleeping = 1,
Running = 2,
Completed = 3,