From 8c546b3779c0c559569df47253eee05be86457a1 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 22 May 2020 21:09:29 +0000 Subject: [PATCH] --- .../Controllers/JobOperationsController.cs | 32 +++++++++++++++++-- server/AyaNova/biz/JobOperationsBiz.cs | 21 ++++++++++++ server/AyaNova/biz/JobsBiz.cs | 2 +- .../models/dto/JobOperationsLogInfoItem.cs | 1 - 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/server/AyaNova/Controllers/JobOperationsController.cs b/server/AyaNova/Controllers/JobOperationsController.cs index 3045765e..5ce3f3cd 100644 --- a/server/AyaNova/Controllers/JobOperationsController.cs +++ b/server/AyaNova/Controllers/JobOperationsController.cs @@ -80,11 +80,11 @@ namespace AyaNova.Api.Controllers /// Get Operations log for a job /// /// - /// A tag + /// A single job's log [HttpGet("logs/{gid}")] public async Task GetLogs([FromRoute] Guid gid) { - if (serverState.IsClosed) + if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.ServerJob)) @@ -105,6 +105,34 @@ namespace AyaNova.Api.Controllers } + /// + /// Get Operations log for all jobs + /// + + /// Log for all jobs in system + [HttpGet("logs/all-jobs")] + public async Task GetAllLogs() + { + 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()); + } + + if (!ModelState.IsValid) + { + return BadRequest(new ApiErrorResponse(ModelState)); + } + + //Instantiate the business object handler + JobOperationsBiz biz = new JobOperationsBiz(ct, UserIdFromContext.Id(HttpContext.Items), UserRolesFromContext.Roles(HttpContext.Items)); + + List l = await biz.GetAllJobsLogsListAsync(); + return Ok(ApiOkResponse.Response(l)); + } + diff --git a/server/AyaNova/biz/JobOperationsBiz.cs b/server/AyaNova/biz/JobOperationsBiz.cs index 2c52a4c0..d97da3ba 100644 --- a/server/AyaNova/biz/JobOperationsBiz.cs +++ b/server/AyaNova/biz/JobOperationsBiz.cs @@ -86,6 +86,27 @@ namespace AyaNova.Biz return ret; } + //Get list of logs for job + internal async Task> GetAllJobsLogsListAsync() + { + List ret = new List(); + + var l = await ct.OpsJobLog + .OrderByDescending(z => z.Created) + .ToListAsync(); + + foreach (OpsJobLog i in l) + { + + JobOperationsLogInfoItem o = new JobOperationsLogInfoItem(); + o.Created = i.Created; + o.StatusText = i.StatusText; + ret.Add(o); + } + + return ret; + } + #endregion controller routes diff --git a/server/AyaNova/biz/JobsBiz.cs b/server/AyaNova/biz/JobsBiz.cs index 9212790e..030a676c 100644 --- a/server/AyaNova/biz/JobsBiz.cs +++ b/server/AyaNova/biz/JobsBiz.cs @@ -401,7 +401,7 @@ namespace AyaNova.Biz var JobDescription = $"{job.Name} {job.JobType.ToString()}"; if (job.SubType != JobSubType.NotSet) JobDescription += $":{job.SubType}"; - + await LogJobAsync(job.GId, $"Process job \"{JobDescription}\"", ct); log.LogDebug($"ProcessJobAsync -> Processing job {JobDescription}"); IJobObject o = null; diff --git a/server/AyaNova/models/dto/JobOperationsLogInfoItem.cs b/server/AyaNova/models/dto/JobOperationsLogInfoItem.cs index 8bf3dee5..5bf3ad85 100644 --- a/server/AyaNova/models/dto/JobOperationsLogInfoItem.cs +++ b/server/AyaNova/models/dto/JobOperationsLogInfoItem.cs @@ -1,4 +1,3 @@ -using AyaNova.Biz; using System; namespace AyaNova.Models