diff --git a/PARR.TemplateActivator/TemplateActivator.cs b/PARR.TemplateActivator/TemplateActivator.cs index f6c6af2f..4525d793 100644 --- a/PARR.TemplateActivator/TemplateActivator.cs +++ b/PARR.TemplateActivator/TemplateActivator.cs @@ -1,9 +1,12 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; +using PARR.BLL.Helpers; using PARR.Constants; using PARR.DAL.Contracts; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; +using System.Threading.Channels; +using System.Threading.Tasks; namespace PARR.TemplateActivator; @@ -12,16 +15,22 @@ internal class TemplateActivator : ITemplateActivator private readonly ILogger logger; private readonly ITemplateService templateService; private readonly IRobotConfigurationService robotConfigurationService; + private readonly IJobAutoControlService jobAutoControlService; + private readonly IApplicationsInWorkService applicationsInWorkService; public TemplateActivator( ILogger logger, ITemplateService templateService, - IRobotConfigurationService robotConfigurationService + IRobotConfigurationService robotConfigurationService, + IJobAutoControlService jobAutoControlService, + IApplicationsInWorkService applicationsInWorkService ) { this.logger = logger; this.templateService = templateService; this.robotConfigurationService = robotConfigurationService; + this.jobAutoControlService = jobAutoControlService; + this.applicationsInWorkService = applicationsInWorkService; } @@ -82,16 +91,121 @@ internal class TemplateActivator : ITemplateActivator ); changes = await UpdateScheduleStateAsync(query, false); break; + case TemplateActivatorActionsEnum.ActivateAllForAutoControl: + logger.LogInformation($"Получен запрос на активацию шаблонов и расписаний, для ЭК удовлетворяющим условиям автоконтроля"); + changes = await CoordinateJobsWithAutoControl(applicationInWorkId, query, true); + break; + case TemplateActivatorActionsEnum.DeactivateAllForAutoControl: + logger.LogInformation($"Получен запрос на деактивацию шаблонов и расписаний, для ЭК неудовлетворяющим условиям автоконтроля"); + changes = await CoordinateJobsWithAutoControl(applicationInWorkId, query, false); + break; default: break; } if (changes > 0 && !await templateService.CommitAsync()) - logger.LogError($"{this.GetType} не удалось записать измения в БД о новых состояниях шаблонов и расписаний регламентной работы Id {applicationInWorkId}"); + logger.LogError($"{GetType().Name} не удалось записать измения в БД о новых состояниях шаблонов и расписаний регламентной работы Id {applicationInWorkId}"); - logger.LogDebug($"{GetType} изменил состояние шаблонов/расписаний({changes}) регламентной работы Id {applicationInWorkId}"); + logger.LogDebug($"{GetType().Name} изменил состояние шаблонов/расписаний({changes}) регламентной работы Id {applicationInWorkId}"); } + private async Task CoordinateJobsWithAutoControl(Guid applicationInWorkId, IQueryable