From 80325acfadabd426895b542b067a4212d4fe1bae Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Mon, 26 Aug 2024 16:08:09 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20=D1=81=D1=82=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20=D0=A0=D0=A0.=20=D0=94?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D1=83=20=D0=98=D0=94=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.API/Contracts/V1/ApiRoutes.cs | 3 + .../StatResponseAreaWorkloadRequest.cs | 11 +++ .../Requests/StatWorkGroupsWorkLoadRequest.cs | 11 +++ .../V1/Requests/StatWorkWorkLoadRequest.cs | 11 +++ .../StatResponseAreaWorkLoadController.cs | 41 ++++++++-- .../StatWorkGroupWorkLoadController.cs | 78 ++++++++++++++---- .../Statistics/StatWorkWorkLoadController.cs | 79 +++++++++++++++---- 7 files changed, 196 insertions(+), 38 deletions(-) create mode 100644 PARR.API/Contracts/V1/Requests/StatResponseAreaWorkloadRequest.cs create mode 100644 PARR.API/Contracts/V1/Requests/StatWorkGroupsWorkLoadRequest.cs create mode 100644 PARR.API/Contracts/V1/Requests/StatWorkWorkLoadRequest.cs diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index d271d4ac..4fd7de7f 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -254,16 +254,19 @@ public static class StatResponseAreaWorkLoad { public const string GetAll = BaseStat + "/response-area-workloads/"; + public const string GetByResponseAreas = BaseStat + "/response-area-workloads/"; } public static class StatWorkGroupWorkLoad { public const string Get = BaseStat + "/work-group-workloads/{responseAreaCode}"; + public const string GetByWorkGroups= BaseStat + "/work-group-workloads/"; } public static class StatWorkWorkLoad { public const string Get = BaseStat + "/work-workloads/{workGroupId}"; + public const string GetByApplicationInWork = BaseStat + "/work-workloads/"; } #endregion diff --git a/PARR.API/Contracts/V1/Requests/StatResponseAreaWorkloadRequest.cs b/PARR.API/Contracts/V1/Requests/StatResponseAreaWorkloadRequest.cs new file mode 100644 index 00000000..090bc5eb --- /dev/null +++ b/PARR.API/Contracts/V1/Requests/StatResponseAreaWorkloadRequest.cs @@ -0,0 +1,11 @@ +using PARR.API.Contracts.V1.Requests.Queries; + +namespace PARR.API.Contracts.V1.Requests +{ + public class StatResponseAreaWorkloadRequest + { + public List ResponseAreas { get; set; } = new List(); + + public required WorkloadBaseQuery Filter { get; set; } + } +} diff --git a/PARR.API/Contracts/V1/Requests/StatWorkGroupsWorkLoadRequest.cs b/PARR.API/Contracts/V1/Requests/StatWorkGroupsWorkLoadRequest.cs new file mode 100644 index 00000000..039511a8 --- /dev/null +++ b/PARR.API/Contracts/V1/Requests/StatWorkGroupsWorkLoadRequest.cs @@ -0,0 +1,11 @@ +using PARR.API.Contracts.V1.Requests.Queries; + +namespace PARR.API.Contracts.V1.Requests +{ + public class StatWorkGroupsWorkLoadRequest + { + public List WorkGroups { get; set; } = new List(); + + public required WorkloadBaseQuery Filter { get; set; } + } +} diff --git a/PARR.API/Contracts/V1/Requests/StatWorkWorkLoadRequest.cs b/PARR.API/Contracts/V1/Requests/StatWorkWorkLoadRequest.cs new file mode 100644 index 00000000..851729aa --- /dev/null +++ b/PARR.API/Contracts/V1/Requests/StatWorkWorkLoadRequest.cs @@ -0,0 +1,11 @@ +using PARR.API.Contracts.V1.Requests.Queries; + +namespace PARR.API.Contracts.V1.Requests +{ + public class StatWorkWorkLoadRequest + { + public List Jobs { get; set; } = new List(); + + public required WorkloadBaseQuery Filter { get; set; } + } +} diff --git a/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs b/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs index ec91737d..cdca4666 100644 --- a/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs +++ b/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; +using PARR.API.Contracts.V1.Requests; using PARR.API.Contracts.V1.Requests.Queries; using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; @@ -10,7 +11,6 @@ using PARR.API.Contracts.V1.Responses.Statistics; using PARR.API.Controllers.V1.Base; using PARR.API.Services.Interfaces; using PARR.Constants; -using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1.Statistics @@ -46,14 +46,38 @@ namespace PARR.API.Controllers.V1.Statistics /// [HttpGet(ApiRoutes.StatResponseAreaWorkLoad.GetAll)] public async Task GetAll([FromQuery] WorkloadBaseQuery requestQuery) + { + var response = await GetStatisticsAsync(requestQuery); + + return Ok(new Response>(response, true)); + } + + + /// + /// Статистика загрузки РР по списку ЗО + /// + /// + [HttpPost(ApiRoutes.StatResponseAreaWorkLoad.GetByResponseAreas)] + public async Task GetByResponseAreas([FromBody] StatResponseAreaWorkloadRequest request) + { + var response = await GetStatisticsAsync(request.Filter, request.ResponseAreas); + + return Ok(new Response>(response, true)); + } + + + private async Task> GetStatisticsAsync(WorkloadBaseQuery requestQuery, List? responseAreas = null) { var daysList = workLoadService.GetDatesForPeriod(requestQuery); - IQueryable