feat: Сервисы и модели RabbitMq разнесены согласно архитектуры

This commit is contained in:
Mikhail Trubnikov
2026-04-14 12:01:49 +10:00
parent 734c2e3c99
commit e892aa12d3
196 changed files with 589 additions and 1232 deletions

View File

@@ -1,46 +1,46 @@
namespace PARR.API.Contracts.V1.Requests
{
public class GeneratorTemplateRequest
{
/// <summary>
/// Id работы
/// </summary>
public Guid WorkId { get; set; }
//public class GeneratorTemplateRequest
//{
// /// <summary>
// /// Id работы
// /// </summary>
// public Guid WorkId { get; set; }
/// <summary>
/// Id приложения
/// </summary>
public Guid ApplicationId { get; set; }
// /// <summary>
// /// Id приложения
// /// </summary>
// public Guid ApplicationId { get; set; }
/// <summary>
/// Действие: create, deactivate
/// </summary>
public required string Action { get; set; }
// /// <summary>
// /// Действие: create, deactivate
// /// </summary>
// public required string Action { get; set; }
///// <summary>
///// ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС
///// </summary>
//public required string Ek { get; set; }
// ///// <summary>
// ///// ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС
// ///// </summary>
// //public required string Ek { get; set; }
/// <summary>
/// ЭК, принимает список маск. Например: *, ВРТ-*-ДВС
/// </summary>
public required List<string> Ek { get; set; }
// /// <summary>
// /// ЭК, принимает список маск. Например: *, ВРТ-*-ДВС
// /// </summary>
// public required List<string> Ek { get; set; }
/// <summary>
/// Список статусов ЭК. 0 - все статусы, 1,2,3,4,5,6,7,9
/// </summary>
public required List<int> Status { get; set; }
// /// <summary>
// /// Список статусов ЭК. 0 - все статусы, 1,2,3,4,5,6,7,9
// /// </summary>
// public required List<int> Status { get; set; }
/// <summary>
/// При создании, активировать шаблон
/// </summary>
public bool? IsActiveTemplate { get; set; }
// /// <summary>
// /// При создании, активировать шаблон
// /// </summary>
// public bool? IsActiveTemplate { get; set; }
/// <summary>
/// При создании, активировать расписание
/// </summary>
public bool? IsActiveSchedule { get; set; }
}
// /// <summary>
// /// При создании, активировать расписание
// /// </summary>
// public bool? IsActiveSchedule { get; set; }
//}
}

View File

@@ -1,4 +1,4 @@
using PARR.Constants;
using PARR.Domain.Enums;
namespace PARR.API.Contracts.V1.Requests
{

View File

@@ -1,5 +1,4 @@
using PARR.Constants;
using PARR.Domain.Enums;
using PARR.Domain.Enums;
namespace PARR.API.Contracts.V1.Requests.Queries
{

View File

@@ -1,4 +1,4 @@
using PARR.Constants;
using PARR.Domain.Enums;
using System.Text.Json.Serialization;
namespace PARR.API.Contracts.V1.Requests.Queries

View File

@@ -1,4 +1,4 @@
using PARR.Constants;
using PARR.Domain.Enums;
namespace PARR.API.Contracts.V1.Requests
{

View File

@@ -1,4 +1,4 @@
using PARR.Constants;
using PARR.Domain.Enums;
namespace PARR.API.Contracts.V1.Requests
{

View File

@@ -1,4 +1,4 @@
using PARR.Constants;
using PARR.Domain.Enums;
namespace PARR.API.Contracts.V1.Responses
{

View File

@@ -11,11 +11,11 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -4,9 +4,9 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Requests.Queries;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -8,10 +8,10 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -1,442 +0,0 @@
using AutoMapper;
using FluentValidation;
using Microsoft.AspNetCore.Authorization;
using PARR.API.Contracts.V1.Requests;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
namespace PARR.API.Controllers.V1
{
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class ApplicationInWorkController : BaseApiController
{
private readonly ILogger<ApplicationInWorkController> logger;
private readonly IMapper mapper;
private readonly IApplicationsInWorkService applicationsInWorkService;
private readonly IValidator<ApplicationInWorkRequest> validator;
private readonly IUriService uriService;
private readonly ITemplateService templateService;
private readonly IMqService mqService;
private readonly MqSettings mqSettings;
public ApplicationInWorkController(
ILogger<ApplicationInWorkController> logger,
IMapper mapper,
IApplicationsInWorkService applicationsInWorkService,
IValidator<ApplicationInWorkRequest> validator,
IUriService uriService,
ITemplateService templateService,
IMqService mqService,
MqSettings mqSettings
)
{
this.logger = logger;
this.mapper = mapper;
this.applicationsInWorkService = applicationsInWorkService;
this.validator = validator;
this.uriService = uriService;
this.templateService = templateService;
this.mqService = mqService;
this.mqSettings = mqSettings;
}
/// <summary>
/// Получить список заданий на выполнение работ(ApplicationInWork) постранично
/// </summary>
/// <returns></returns>
//[HttpGet(ApiRoutes.Job.GetAll)]
//public async Task<IActionResult> GetAll([FromQuery] PaginationQuery paginationQuery, [FromQuery] ApplicationInWorkQuery filter)
//{
// var paginationFilter = mapper.Map<PaginationFilter>(paginationQuery);
// IQueryable<ApplicationsInWork> query = applicationsInWorkService.Get().Include(t => t.Application).ThenInclude(t => t!.ApplicationType);
// if (filter.IsLight != true)
// {
// query = query
// .Include(t => t.Work)
// //.Include(t => t.Templates) - большой запрос, делаем его отдельно
// .Include(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobAutoControl);
// }
// query = query.OrderBy(t => t.ShortDescription).ThenBy(t => t.Application!.Name);
// if (!string.IsNullOrEmpty(filter.ShortDescription))
// query = query.Where(t => t.ShortDescription.ToLower().Contains(filter.ShortDescription.ToLower()));
// if (filter.WorkId.HasValue)
// query = query.Where(t => t.WorkId == filter.WorkId.Value);
// var appInWorks = await applicationsInWorkService.GetPage(query, paginationFilter).ToListAsync();
// if (!appInWorks.Any())
// return NoContent();
// var response = mapper.Map<List<ApplicationInWorkResponse>>(appInWorks);//TODO Migration to job
// if (filter.IsLight != true)
// {
// //Если запрос не легкий, загружаем кол-во шаблонов отдельно, это значительно ускоряет запрос
// foreach (var item in response)
// {
// item.TemplatesCount = await templateService.Get().CountAsync(t => t.JobId == item.Id);
// var statistics = await GetStatisticsAsync(item.Id);
// BindStatistics(item, statistics);
// }
// }
// var paginationResponse = new PagedResponse<ApplicationInWorkResponse>(response, true).GetPaginatedProps(paginationFilter, query);
// return Ok(paginationResponse);
//}
/// <summary>
/// Получить задание на выполнение работ по id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
//[HttpGet(ApiRoutes.Job.Get)]
//public async Task<IActionResult> GetById([FromRoute] Guid id)
//{
// var applicationInWork = await applicationsInWorkService.Get()
// .Include(t => t.Application).ThenInclude(t => t!.ApplicationType)
// .Include(t => t.Work)
// //.Include(t => t.Templates)
// .Include(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobAutoControl)
// .FirstOrDefaultAsync(t => t.Id == id);
// if (applicationInWork == null)
// return NotFound();
// var response = mapper.Map<ApplicationInWorkResponse>(applicationInWork);
// response.TemplatesCount = await templateService.Get().CountAsync(t => t.ApplicationInWorkId == id);
// var statistics = await GetStatisticsAsync(response.Id);
// BindStatistics(response, statistics);
// return Ok(new Response<ApplicationInWorkResponse>(response, true));
//}
/// <summary>
/// Создать задание на выполнение работ (ApplicationInWork)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
//[HttpPost(ApiRoutes.Job.Create)]
//public async Task<IActionResult> Create([FromBody] ApplicationInWorkRequest request)
//{
// var resultValidate = await validator.ValidateAsync(request);
// if (!resultValidate.IsValid)
// return BadRequest(new Response(resultValidate.Errors));
// //уникальная запись по полям ApplicationId, WorkId
// var existSameAiW = await applicationsInWorkService.GetAsync(request.ApplicationId, request.WorkId);
// if (existSameAiW != null)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Задание на выполнение работ с такими ПО и работой уже существует" } }));
// var applicationInWork = new ApplicationsInWork
// {
// Id = Guid.NewGuid(),
// WorkId = request.WorkId,
// ApplicationId = request.ApplicationId,
// TemplateDuration = request.TemplateDuration,
// ShortDescription = request.ShortDescription.Trim(),
// FullDescription = request.FullDescription.Trim(),
// Solution = request.Solution.Trim(),
// //NextRun = request.NextRun,
// IsAutoDistributionEnabled = request.IsAutoDistributionEnabled,
// ReferenceDate = request.ReferenceDate,
// IsAgent = request.IsAgent,
// AgentName = request.AgentName?.Trim(),
// AgentTimeOutSec = request.AgentTimeOutSec,
// AgentScript = request.AgentScript?.Trim()
// };
// //Добавляем настройки планировщика
// request.Schedule.ForEach(item =>
// {
// applicationInWork.EsppSchValues.Add(new EsppSchValue
// {
// ApplicationsInWorkId = applicationInWork.Id,
// TypeConfigId = item.TypeConfigId,
// TypeValueId = item.TypeValueId
// });
// });
// //Добавляем рабочие группы
// request.WorkGroups.ForEach(workGroupId =>
// {
// applicationInWork.WorkGroups.Add(new AppInWorkInWorkGroup
// {
// ApplicationsInWorkId = applicationInWork.Id,
// WorkGroupId = workGroupId
// });
// });
// if (!await applicationsInWorkService.CreateAsync(applicationInWork) || !await applicationsInWorkService.CommitAsync())
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при созании задания на выполнение работ" } }));
// logger.LogInformation($"Пользователь {User.Identity?.Name} добавил задание на выполнение работ: {applicationInWork.Id}, {applicationInWork.ShortDescription}, {applicationInWork.Solution}");
// var createdApplicationInWork = await applicationsInWorkService.Get()
// .Include(t => t.Application).ThenInclude(t => t!.ApplicationType)
// .Include(t => t.Work)
// //.Include(t => t.Templates)
// .Include(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobAutoControl)
// .FirstAsync(t => t.Id == applicationInWork.Id);
// var locationUri = uriService.GetUri(ApiRoutes.Job.Get, ApiRoutes.Job.getParam, createdApplicationInWork.Id);
// var response = mapper.Map<ApplicationInWorkResponse>(createdApplicationInWork);
// // так как мы только что создали AppInW, то у него нет шаблонов, смело ставим = 0 (ускоряем запрос)
// response.TemplatesCount = 0;
// return Created(locationUri, new Response<ApplicationInWorkResponse>(response, true));
//}
/// <summary>
/// Обновить задание на выполнение работ (ApplicationInWork)
/// </summary>
/// <param name="id"></param>
/// <param name="request"></param>
/// <returns></returns>
//[HttpPut(ApiRoutes.Job.Update)]
//public async Task<IActionResult> Update([FromRoute] Guid id, [FromBody] ApplicationInWorkRequest request)
//{
// var resultValidate = await validator.ValidateAsync(request);
// if (!resultValidate.IsValid)
// return BadRequest(new Response(resultValidate.Errors));
// //уникальная запись по полям ApplicationId, WorkId у которой id!=[FromRoute]id
// var existSameAiW = await applicationsInWorkService.Get()
// .FirstOrDefaultAsync(t => t.Id != id && t.ApplicationId == request.ApplicationId && t.WorkId == request.WorkId);
// if (existSameAiW != null)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Задание на выполнение работ с такими ПО и работой уже существует" } }));
// var orig = await applicationsInWorkService.Get()
// .Include(t => t.WorkGroups)
// .Include(t => t.EsppSchValues)
// .FirstOrDefaultAsync(t => t.Id == id);
// if (orig == null)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении задания на выполнение работ. Не найдено задание с Id: {id}" } }));
// //Расписание было изменено, ниже добавим задание в очередь на обновление расписаний у связанных шаблонов
// var isScheduleChanged = IsScheduleChanged(orig, request);
// orig.WorkId = request.WorkId;
// orig.ApplicationId = request.ApplicationId;
// orig.TemplateDuration = request.TemplateDuration;
// orig.ShortDescription = request.ShortDescription.Trim();
// orig.FullDescription = request.FullDescription.Trim();
// orig.Solution = request.Solution.Trim();
// //orig.NextRun = request.NextRun;
// orig.ReferenceDate = request.ReferenceDate;
// orig.IsAutoDistributionEnabled = request.IsAutoDistributionEnabled;
// orig.IsAgent = request.IsAgent;
// orig.AgentName = request.AgentName?.Trim();
// orig.AgentTimeOutSec = request.AgentTimeOutSec;
// orig.AgentScript = request.AgentScript?.Trim();
// orig.DateModified = DateTimeOffset.UtcNow;
// //обновляем планировщик
// orig.EsppSchValues.Clear();
// request.Schedule.ForEach(item =>
// {
// orig.EsppSchValues.Add(new EsppSchValue
// {
// ApplicationsInWorkId = orig.Id,
// TypeConfigId = item.TypeConfigId,
// TypeValueId = item.TypeValueId
// });
// });
// //Обновляем рабочие группы
// orig.WorkGroups.Clear();
// request.WorkGroups.ForEach(workGroupId =>
// {
// orig.WorkGroups.Add(new AppInWorkInWorkGroup
// {
// ApplicationsInWorkId = orig.Id,
// WorkGroupId = workGroupId
// });
// });
// if (!await applicationsInWorkService.CommitAsync())
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении задания на выполнение работ." } }));
// logger.LogInformation($"Пользователь {User.Identity?.Name} обновил задание на выполнение работ: {orig.Id}," +
// $" {orig.WorkId}, {orig.ApplicationId}, {orig.TemplateDuration}, {orig.ShortDescription}," +
// $" {orig.FullDescription}, {orig.Solution}, {nameof(orig.IsAutoDistributionEnabled)}: {orig.IsAutoDistributionEnabled}, {orig.IsAgent}, {orig.AgentName}, {orig.AgentTimeOutSec}, {orig.AgentScript}");
// if (isScheduleChanged)
// {
// //расписание было обновлено, отправим задание в очередь на перерасчет NextRun
// var requestToMq = new TemplateDistributorMq
// {
// ApplicationInWorkId = id
// };
// var msg = JsonSerializer.Serialize(requestToMq);
// logger.LogDebug($"Расписание в РР applicationInWorkId: {id} было изменено. Отправляем задание в очередь на перерасчет NextRun");
// var sendResult = mqService.Send(mqSettings.TemplateDistributor, new[] { msg });
// if (sendResult.IsSuccess)
// logger.LogInformation($"Задание на перерасчет NextRun успешно отправлено в очередь MQ {mqSettings.TemplateDistributor.QueueName}");
// else
// logger.LogError($"Ошибка при отправке задания на перерасчет NextRun в очередь MQ {mqSettings.TemplateDistributor.QueueName}");
// }
// var updatedApplicationInWork = await applicationsInWorkService.Get()
// .Include(t => t.Application).ThenInclude(t => t!.ApplicationType)
// .Include(t => t.Work)
// //.Include(t => t.Templates)
// .Include(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobAutoControl)
// .FirstAsync(t => t.Id == orig.Id);
// var response = mapper.Map<ApplicationInWorkResponse>(updatedApplicationInWork);
// response.TemplatesCount = await templateService.Get().CountAsync(t => t.ApplicationInWorkId == id);
// var statistics = await GetStatisticsAsync(response.Id);
// BindStatistics(response, statistics);
// return Ok(new Response<ApplicationInWorkResponse>(response, true));
//}
/// <summary>
/// Удалить задание на выполнение работ (только если нет связанных шаблонов)
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
//[HttpDelete(ApiRoutes.Job.Delete)]
//public async Task<IActionResult> Delete([FromRoute] Guid id)
//{
// var applicationsInWork = await applicationsInWorkService.Get()
// //.Include(t => t.Templates)
// .FirstOrDefaultAsync(t => t.Id == id);
// if (applicationsInWork == null)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel {
// Message = $"Ошибка при удалении задания на выполнение работ. Не найдено задание на выполнение работ Id: {id}"
// } }));
// var templateCount = await templateService.Get().CountAsync(t => t.ApplicationInWorkId == id);
// //if (applicationsInWork.Templates.Any())
// if (templateCount > 0)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel {
// Message = $"Ошибка при удалении задания на выполнение работ. С данным заданием связаны шаблоны: {templateCount} шт."
// } }));
// if (!applicationsInWorkService.Delete(applicationsInWork) || !await applicationsInWorkService.CommitAsync())
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel {
// Message = $"Ошибка при удалении задания на выполнение работ"
// } }));
// logger.LogInformation($"Пользователь {User.Identity?.Name} удалил задание на выполнение работ: {applicationsInWork.Id},{applicationsInWork.WorkId}," +
// $" {applicationsInWork.ApplicationId}, {applicationsInWork.TemplateDuration}, {applicationsInWork.ShortDescription}," +
// $" {applicationsInWork.FullDescription}, {applicationsInWork.Solution}, {nameof(applicationsInWork.IsAutoDistributionEnabled)}: {applicationsInWork.IsAutoDistributionEnabled}, {applicationsInWork.IsAgent}," +
// $" {applicationsInWork.AgentName}, {applicationsInWork.AgentTimeOutSec}, {applicationsInWork.AgentScript}");
// return NoContent();
//}
/// <summary>
/// Проверка, были ли изменения в расписании
/// </summary>
/// <param name="orig"></param>
/// <param name="request"></param>
/// <returns></returns>
//private bool IsScheduleChanged(ApplicationsInWork orig, ApplicationInWorkRequest request)
//{
// var isScheduleChanged = false;
// if (orig.ReferenceDate != request.ReferenceDate)
// isScheduleChanged = true;
// if (request.Schedule.Count() != orig.EsppSchValues.Count())
// isScheduleChanged = true;
// if (request.IsAutoDistributionEnabled != orig.IsAutoDistributionEnabled)
// isScheduleChanged = true;
// request.Schedule.ForEach(requestSchedule =>
// {
// var schExist = orig.EsppSchValues.FirstOrDefault(t => t.ApplicationsInWorkId == orig.Id
// && t.TypeValueId == requestSchedule.TypeValueId
// && t.TypeConfigId == requestSchedule.TypeConfigId);
// if (schExist == null)
// isScheduleChanged = true;
// });
// return isScheduleChanged;
//}
/// <summary>
/// Загрузка статистики
/// </summary>
/// <param name="applicationInWorkId"></param>
/// <returns></returns>
//private async Task<AppInWorkStatModel> GetStatisticsAsync(Guid applicationInWorkId)
//{
// var statResult = await applicationsInWorkService.Get()
// .Include(t => t.Templates).ThenInclude(t => t.RobotConfigurations)
// .Where(x => x.Id == applicationInWorkId)
// .Select(t => new
// {
// TemplateActivated = t.Templates.Count(x => x.IsActiveTemplate),
// TemplateSynchronized = t.Templates.Count(x => x.RobotConfigurations.Any(c => c.TaskStatusCode == (int)TaskStatusEnum.Ok && c.RobotCode == (int)RobotsEnum.TemplateOrder)),
// TemplateErrors = t.Templates.Count(x => x.RobotConfigurations.Any(c => c.RobotStatusCode == (int)RobotStatusEnum.Error && c.RobotCode == (int)RobotsEnum.TemplateOrder)),
// ScheduleActivated = t.Templates.Count(x => x.IsActiveSchedule),
// ScheduleSynchronized = t.Templates.Count(x => x.RobotConfigurations.Any(c => c.TaskStatusCode == (int)TaskStatusEnum.Ok && c.RobotCode == (int)RobotsEnum.ScheduleOrder)),
// ScheduleErrors = t.Templates.Count(x => x.RobotConfigurations.Any(c => c.RobotStatusCode == (int)RobotStatusEnum.Error && c.RobotCode == (int)RobotsEnum.ScheduleOrder))
// }).FirstOrDefaultAsync();
// return new AppInWorkStatModel
// {
// ScheduleStatistics = new ScheduleStats { Activated = statResult?.ScheduleActivated ?? 0, Errors = statResult?.ScheduleErrors ?? 0, Synchronized = statResult?.ScheduleSynchronized ?? 0 },
// TemplateStatistics = new TemplateStats { Activated = statResult?.TemplateActivated ?? 0, Errors = statResult?.TemplateErrors ?? 0, Synchronized = statResult?.TemplateSynchronized ?? 0 }
// };
//}
private void BindStatistics(ApplicationInWorkResponse applicationsInWork, AppInWorkStatModel statistics)
{
applicationsInWork.TemplateStatistics = new TemplateStats { Activated = statistics.TemplateStatistics.Activated, Errors = statistics.TemplateStatistics.Errors, Synchronized = statistics.TemplateStatistics.Synchronized };
applicationsInWork.ScheduleStatistics = new ScheduleStats { Activated = statistics.ScheduleStatistics.Activated, Errors = statistics.ScheduleStatistics.Errors, Synchronized = statistics.ScheduleStatistics.Synchronized };
}
}
public class AppInWorkStatModel
{
public TemplateStats TemplateStatistics { get; set; }
public ScheduleStats ScheduleStatistics { get; set; }
}
}

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -7,9 +7,9 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -21,13 +21,13 @@ namespace PARR.API.Controllers.V1
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class DistributorController : BaseApiController
{
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly MqSettings mqSettings;
private readonly IValidator<DistributeRequest> validator;
private readonly IClientService clientService;
public DistributorController(
IMqService mqService,
IRabbitService mqService,
MqSettings mqSettings,
IValidator<DistributeRequest> validator,
IClientService clientService

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -7,104 +7,104 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1
{
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class GeneratorTemplateController : BaseApiController
{
private readonly IValidator<GeneratorTemplateRequest> validator;
private readonly IMqService mqService;
private readonly IUriService uriService;
private readonly MqSettings mqSettings;
private readonly IClientService clientService;
//[Authorize(Roles = ParrRoles.Administrator.Role)]
//public class GeneratorTemplateController : BaseApiController
//{
// private readonly IValidator<GeneratorTemplateRequest> validator;
// private readonly IRabbitService mqService;
// private readonly IUriService uriService;
// private readonly MqSettings mqSettings;
// private readonly IClientService clientService;
public GeneratorTemplateController(
IValidator<GeneratorTemplateRequest> validator,
IMqService mqService,
IUriService uriService,
MqSettings mqSettings,
IClientService clientService
)
{
this.validator = validator;
this.mqService = mqService;
this.uriService = uriService;
this.mqSettings = mqSettings;
this.clientService = clientService;
}
// public GeneratorTemplateController(
// IValidator<GeneratorTemplateRequest> validator,
// IRabbitService mqService,
// IUriService uriService,
// MqSettings mqSettings,
// IClientService clientService
// )
// {
// this.validator = validator;
// this.mqService = mqService;
// this.uriService = uriService;
// this.mqSettings = mqSettings;
// this.clientService = clientService;
// }
/// !!!!!!!!!! Это старый контроллер, удалить !!!!!!!!!!
// /// !!!!!!!!!! Это старый контроллер, удалить !!!!!!!!!!
/// <summary>
/// Запрос на генерацию шаблонов
/// </summary>
/// <returns></returns>
[HttpPost(ApiRoutes.GeneratorTemplate.Create)]
public async Task<IActionResult> Create([FromBody] GeneratorTemplateRequest request)
{
var resultValidate = await validator.ValidateAsync(request);
if (!resultValidate.IsValid)
return BadRequest(new Response(resultValidate.Errors));
// /// <summary>
// /// Запрос на генерацию шаблонов
// /// </summary>
// /// <returns></returns>
// [HttpPost(ApiRoutes.GeneratorTemplate.Create)]
// public async Task<IActionResult> Create([FromBody] GeneratorTemplateRequest request)
// {
// var resultValidate = await validator.ValidateAsync(request);
// if (!resultValidate.IsValid)
// return BadRequest(new Response(resultValidate.Errors));
var result = true;
// var result = true;
request.Ek.ForEach(ek =>
{
//todo: проверить в ForEach(async status - отрабатывает ли нормально async, возможно надо переделать в обычный foreach
request.Status.ForEach(async status =>
{
var obj = new GeneratorTemplateMq
{
Action = request.Action,
ApplicationId = request.ApplicationId,
Ek = ek,
WorkId = request.WorkId,
StatusEk = status,
IsActiveTemplate = request.IsActiveTemplate,
IsActiveSchedule = request.IsActiveSchedule,
HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api }
};
// request.Ek.ForEach(ek =>
// {
// //todo: проверить в ForEach(async status - отрабатывает ли нормально async, возможно надо переделать в обычный foreach
// request.Status.ForEach(async status =>
// {
// var obj = new GeneratorTemplateMq
// {
// Action = request.Action,
// ApplicationId = request.ApplicationId,
// Ek = ek,
// WorkId = request.WorkId,
// StatusEk = status,
// IsActiveTemplate = request.IsActiveTemplate,
// IsActiveSchedule = request.IsActiveSchedule,
// HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api }
// };
//var msg = JsonSerializer.Serialize(obj);
// //var msg = JsonSerializer.Serialize(obj);
//var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new[] { msg });
var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new List<object> { obj });
// //var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new[] { msg });
// var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new List<object> { obj });
if (_result.IsSuccess == false)
result = false;
// if (_result.IsSuccess == false)
// result = false;
});
});
// });
// });
//var obj = new GeneratorTemplateMq
//{
// Action = request.Action,
// ApplicationId = request.ApplicationId,
// Ek = request.Ek,
// WorkId = request.WorkId,
// StatusEk = request.Status,
// IsActiveTemplate = request.IsActiveTemplate,
// IsActiveSchedule = request.IsActiveSchedule
//};
// //var obj = new GeneratorTemplateMq
// //{
// // Action = request.Action,
// // ApplicationId = request.ApplicationId,
// // Ek = request.Ek,
// // WorkId = request.WorkId,
// // StatusEk = request.Status,
// // IsActiveTemplate = request.IsActiveTemplate,
// // IsActiveSchedule = request.IsActiveSchedule
// //};
//var msg = JsonSerializer.Serialize(obj);
// //var msg = JsonSerializer.Serialize(obj);
//var result = mqService.Send(mqSettings.GenerateTemplates, new[] { msg });
// //var result = mqService.Send(mqSettings.GenerateTemplates, new[] { msg });
//if (!result.IsSuccess)
if (!result)
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при отправке данных." } }));
// //if (!result.IsSuccess)
// if (!result)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при отправке данных." } }));
var createdUri = uriService.GetAllUri(ApiRoutes.Template.GetAll);
// var createdUri = uriService.GetAllUri(ApiRoutes.Template.GetAll);
return Created(createdUri, new Response<string?>(null, true, new List<ErrorModel>(), "Отправлен запрос на генерацию шаблонов."));
}
}
// return Created(createdUri, new Response<string?>(null, true, new List<ErrorModel>(), "Отправлен запрос на генерацию шаблонов."));
// }
//}
}

View File

@@ -9,9 +9,9 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -12,10 +12,8 @@ using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Helpers;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.DAL.DomainServices.Interfaces;
using PARR.DAL.DomainServices.UnitFilterService;
using PARR.DAL.Extensions;
@@ -24,6 +22,8 @@ using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -41,7 +41,7 @@ namespace PARR.API.Controllers.V1
private readonly IJobService jobService;
private readonly ITemplateService templateService;
private readonly IValidator<JobRequest> jobValidator;
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly MqSettings mqSettings;
private readonly IClientService clientService;
private readonly IJobAutoControlService jobAutoControlService;
@@ -57,7 +57,7 @@ namespace PARR.API.Controllers.V1
IValidator<JobRequest> jobValidator,
IUnitFilterService unitFilterService,
IUnitService unitService,
IMqService mqService,
IRabbitService mqService,
MqSettings mqSettings,
IClientService clientService,
IJobAutoControlService jobAutoControlService,

View File

@@ -12,10 +12,8 @@ using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Helpers;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.DAL.DomainServices.Interfaces;
using PARR.DAL.Models;
using PARR.DAL.Models.Job;
@@ -23,6 +21,8 @@ using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -44,7 +44,7 @@ namespace PARR.API.Controllers.V1
private readonly IJobGroupTypeService jobGroupTypeService;
private readonly IMatchingStatusService matchingStatusService;
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly MqSettings mqSettings;
public JobGroupController(
@@ -58,7 +58,7 @@ namespace PARR.API.Controllers.V1
IJobGroupTypeService jobGroupTypeService,
IMatchingStatusService matchingStatusService,
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService,
IMqService mqService,
IRabbitService mqService,
MqSettings mqSettings
)
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces.Job;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -5,10 +5,10 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.DAL.Services.Interfaces.Job;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -20,12 +20,12 @@ namespace PARR.API.Controllers.V1
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class JobGroupUpdateNextRunController : BaseApiController
{
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly MqSettings mqSettings;
private readonly IJobGroupService jobGroupService;
public JobGroupUpdateNextRunController(
IMqService mqService,
IRabbitService mqService,
MqSettings mqSettings,
IJobGroupService jobGroupService
)

View File

@@ -8,10 +8,10 @@ using PARR.API.Contracts.V1.Requests;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.DomainServices.UnitFilterService;
using PARR.DAL.Services.Interfaces.Job;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
using Job = PARR.DAL.Models.Job.Job;
namespace PARR.API.Controllers.V1

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -8,10 +8,10 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -11,10 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -11,10 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -9,13 +9,13 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.BLL.Helpers;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.DomainServices.Shortcodes;
using PARR.DAL.Models;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;

View File

@@ -8,10 +8,10 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -5,8 +5,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.DomainServices.Shortcodes;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -5,9 +5,9 @@ using PARR.API.Contracts.V1.Requests.Queries;
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.InfluxDbServices;
using PARR.DAL.Settings;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -9,9 +9,9 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Helpers;
using PARR.Constants;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -5,8 +5,8 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Settings;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{
@@ -16,17 +16,17 @@ namespace PARR.API.Controllers.V1.Statistics
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class StatRabbitMqController : BaseApiController
{
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly MqSettings mqSettings;
private readonly ILogger<StatRabbitMqController> logger;
private readonly IMqAdminService mqAdminService;
private readonly IRabbitAdminService mqAdminService;
private readonly MonitoringSettings monitoringSettings;
public StatRabbitMqController(
IMqService mqService,
IRabbitService mqService,
MqSettings mqSettings,
ILogger<StatRabbitMqController> logger,
IMqAdminService mqAdminService,
IRabbitAdminService mqAdminService,
MonitoringSettings monitoringSettings
)
{

View File

@@ -10,8 +10,8 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -10,9 +10,9 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Helpers;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -14,10 +14,11 @@ using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.Constants;
using PARR.DAL.InfluxDbServices;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Settings;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -7,8 +7,8 @@ using PARR.API.Contracts.V1.Responses;
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.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -8,9 +8,9 @@ using PARR.API.Contracts.V1.Responses;
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;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1.Statistics

View File

@@ -7,8 +7,8 @@ using PARR.API.Contracts.V1.Responses;
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.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -6,7 +6,6 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Helpers;
using PARR.Constants;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Enums;

View File

@@ -7,10 +7,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Helpers;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1.Statistics

View File

@@ -8,7 +8,6 @@ using PARR.API.Contracts.V1.Responses;
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.DomainServices.Shortcodes;
using PARR.DAL.Models;
using PARR.DAL.Models.Job;
@@ -16,6 +15,8 @@ using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -7,9 +7,9 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Contracts.V1.Responses.Statistics;
using PARR.API.Controllers.V1.Base;
using PARR.API.Helpers;
using PARR.Constants;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -6,10 +6,10 @@ using PARR.API.Contracts.V1.Requests.BaseRequests;
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.NextRunServices;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -2,7 +2,7 @@
using Microsoft.AspNetCore.Mvc;
using PARR.API.Contracts.V1;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1.Statistics
{

View File

@@ -11,10 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -5,9 +5,9 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
using PARR.Core.Common.RabbitServices;
using PARR.DAL.DomainServices.Interfaces;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -16,7 +16,7 @@ namespace PARR.API.Controllers.V1
public class SyncTaskController : BaseApiController
{
private readonly ILogger<SyncTaskController> logger;
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly IUriService uriService;
private readonly MqSettings mqSettings;
private readonly IClientService clientService;
@@ -24,7 +24,7 @@ namespace PARR.API.Controllers.V1
public SyncTaskController(
ILogger<SyncTaskController> logger,
IMqService mqService,
IRabbitService mqService,
IUriService uriService,
MqSettings mqSettings,
IClientService clientService,

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -7,10 +7,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces;
using PARR.Constants;
using PARR.Core.Common.RabbitServices;
using PARR.DAL.Services.Interfaces.Job;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -23,7 +23,7 @@ namespace PARR.API.Controllers.V1
public class TemplateActivatorController : BaseApiController
{
private readonly IValidator<TemplateActivatorRequest> validator;
private readonly IMqService mqService;
private readonly IRabbitService mqService;
private readonly IUriService uriService;
private readonly MqSettings mqSettings;
private readonly IJobService jobService;
@@ -31,7 +31,7 @@ namespace PARR.API.Controllers.V1
public TemplateActivatorController(
IValidator<TemplateActivatorRequest> validator,
IMqService mqService,
IRabbitService mqService,
IUriService uriService,
MqSettings mqSettings,
IJobService jobService,

View File

@@ -11,13 +11,13 @@ using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.BLL.Helpers;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.DomainServices.Shortcodes;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Schedule;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;

View File

@@ -8,10 +8,10 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -8,8 +8,8 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,9 +6,9 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1

View File

@@ -11,10 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -9,10 +9,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.BLL.Helpers;
using PARR.Constants;
using PARR.DAL.Models.Unit;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -6,8 +6,8 @@ using PARR.API.Contracts.V1;
using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.Constants;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -9,10 +9,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.BLL.Helpers;
using PARR.Constants;
using PARR.DAL.Models.Unit;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -11,10 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -8,9 +8,9 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -11,10 +11,10 @@ using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.API.Services.Interfaces;
using PARR.Constants;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
namespace PARR.API.Controllers.V1
{

View File

@@ -8,11 +8,11 @@ using PARR.API.Contracts.V1.Responses;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.API.Controllers.V1.Base;
using PARR.API.Extensions;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.Domain.Common.Pagination;
using PARR.Domain.Common.Roles;
using PARR.Domain.Enums;
namespace PARR.API.Controllers.V1

View File

@@ -3,12 +3,12 @@ using PARR.API.Authentication.Models;
using PARR.API.Domain.InfluxDbModels;
using PARR.API.Services.Interfaces;
using PARR.API.Settings;
using PARR.Constants;
using PARR.DAL.Cache.Services.Base;
using PARR.DAL.InfluxDbServices;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Unit;
using PARR.DAL.Settings;
using PARR.Domain.Common.Roles;
namespace PARR.API.Services.Implementations
{

View File

@@ -1,5 +1,5 @@
using PARR.BLL.Contracts.Interfaces;
using PARR.Domain.Enums;
using PARR.Domain.Enums;
using PARR.Domain.Settings;
namespace PARR.API.Settings
{
@@ -26,11 +26,11 @@ namespace PARR.API.Settings
public class StatMqAuth : IMqSettings
{
public string HostName { get; set; } = string.Empty;
public string QueueName { get; set; } = string.Empty;
public string User { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public ushort? PrefetchCount { get; set; } = 0;
public string HostName { get; init; } = string.Empty;
public string QueueName { get; init; } = string.Empty;
public string User { get; init; } = string.Empty;
public string Password { get; init; } = string.Empty;
public ushort? PrefetchCount { get; init; } = 0;
}
}

View File

@@ -1,64 +1,58 @@
using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.BLL.Contracts;
using PARR.DAL.Services.Interfaces;
using System.Linq;
namespace PARR.API.Validators
namespace PARR.API.Validators
{
public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
{
private readonly IApplicationsInWorkService applicationsInWorkService;
//public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
//{
// private readonly IApplicationsInWorkService applicationsInWorkService;
private bool? isValid = null;
// private bool? isValid = null;
public GeneratorTemplateRequestValidator(IApplicationsInWorkService applicationsInWorkService)
{
this.applicationsInWorkService = applicationsInWorkService;
// public GeneratorTemplateRequestValidator(IApplicationsInWorkService applicationsInWorkService)
// {
// this.applicationsInWorkService = applicationsInWorkService;
RuleFor(t => t.WorkId)
.MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, entity.ApplicationId))
.WithMessage("У данной работы нет связанных приложений");
// RuleFor(t => t.WorkId)
// .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, entity.ApplicationId))
// .WithMessage("У данной работы нет связанных приложений");
RuleFor(t => t.ApplicationId)
.MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value))
.WithMessage("У данного приложения нет связанных работ");
// RuleFor(t => t.ApplicationId)
// .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value))
// .WithMessage("У данного приложения нет связанных работ");
//TODO: возможно сделать проверку, по данному выражению есть ли ЭК
RuleFor(t => t.Ek).NotEmpty().WithMessage("Недопустимое значение ЭК. Возможные значения: *, ВРТ-*-ДВС");
// //TODO: возможно сделать проверку, по данному выражению есть ли ЭК
// RuleFor(t => t.Ek).NotEmpty().WithMessage("Недопустимое значение ЭК. Возможные значения: *, ВРТ-*-ДВС");
RuleFor(t => t.Action)
.Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
.WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");
// RuleFor(t => t.Action)
// .Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
// .WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");
//0 - все статусы, 1,2,3,4,5,6,7,9
var ekStatuses = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 9 };
//RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
RuleFor(t => t.Status).Must((statuses) =>
{
if (statuses.Count < 1)
return false;
// //0 - все статусы, 1,2,3,4,5,6,7,9
// var ekStatuses = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 9 };
// //RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
// RuleFor(t => t.Status).Must((statuses) =>
// {
// if (statuses.Count < 1)
// return false;
var isContains = true;
statuses.ForEach(status =>
{
if (ekStatuses.Contains(status) == false)
isContains = false;
});
// var isContains = true;
// statuses.ForEach(status =>
// {
// if (ekStatuses.Contains(status) == false)
// isContains = false;
// });
return isContains;
}).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
}
// return isContains;
// }).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
// }
private async Task<bool> IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)
{
//чтобы не делать 2 раза валидацию
if (isValid.HasValue)
return isValid.Value;
// private async Task<bool> IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)
// {
// //чтобы не делать 2 раза валидацию
// if (isValid.HasValue)
// return isValid.Value;
isValid = await applicationsInWorkService.GetAsync(applicationId, request.WorkId) != null;
// isValid = await applicationsInWorkService.GetAsync(applicationId, request.WorkId) != null;
return isValid.Value;
}
}
// return isValid.Value;
// }
//}
}

View File

@@ -1,6 +1,6 @@
using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.Constants;
using PARR.Domain.Enums;
namespace PARR.API.Validators
{

View File

@@ -1,8 +1,8 @@
using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job;
using PARR.Domain.Enums;
namespace PARR.API.Validators
{