using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Contracts.V1.Responses.Statistics; using PARR.API.Controllers.V1.Base; using PARR.Constants; using PARR.DAL.Contracts; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1.Statistics { /// /// Статистика по шаблонам /// [Authorize(Roles = ParrRoles.Administrator.Role)] public class StatTemplateController : BaseApiController { private readonly ITemplateService templateService; public StatTemplateController( ITemplateService templateService ) { this.templateService = templateService; } /// /// Статистика по шаблонам /// /// [HttpGet(ApiRoutes.StatTemplate.Get)] public async Task Get() { //var templates = await templateService.Get() // .Include(t => t.ApplicationsInWork) // .Include(t => t.RobotConfigurations) // .ToListAsync(); //var response = new StatTemplateResponse //{ // ActivateScheduleCount = templates.Count(x => x.IsActiveSchedule), // ActivateTemplateCount = templates.Count(x => x.IsActiveTemplate), // TemplateAgentCount = templates.Count(x => x.ApplicationsInWork!.IsAgent), // TemplateCount = templates.Count(), // SyncEsppScheduleCount = templates.Count(x => x.RobotConfigurations.Any(c => c.RobotCode == (int)RobotsEnum.ScheduleOrder && c.TaskStatusCode == (int)TaskStatusEnum.Ok)), // SyncEsppTemplatesCount = templates.Count(x => x.RobotConfigurations.Any(c => c.RobotCode == (int)RobotsEnum.TemplateOrder && c.TaskStatusCode == (int)TaskStatusEnum.Ok)) //}; var response = new StatTemplateResponse { ActivateScheduleCount = await templateService.Get().CountAsync(t => t.IsActiveSchedule), ActivateTemplateCount = await templateService.Get().CountAsync(t => t.IsActiveTemplate), TemplateAgentCount = await templateService.Get().Include(t => t.ApplicationsInWork).CountAsync(t => t.ApplicationsInWork!.IsAgent), TemplateCount = await templateService.Get().CountAsync(), SyncEsppScheduleCount = await templateService.Get().Include(t => t.RobotConfigurations).CountAsync(t => t.RobotConfigurations.Any(c => c.RobotCode == (int)RobotsEnum.ScheduleOrder && c.TaskStatusCode == (int)TaskStatusEnum.Ok)), SyncEsppTemplatesCount = await templateService.Get().Include(t => t.RobotConfigurations).CountAsync(t => t.RobotConfigurations.Any(c => c.RobotCode == (int)RobotsEnum.TemplateOrder && c.TaskStatusCode == (int)TaskStatusEnum.Ok)) }; return Ok(new Response(response, true)); } } }