diff --git a/PARR.TemplateActivator/ITemplateActivator.cs b/PARR.TemplateActivator/ITemplateActivator.cs index c0d9f359..eb57e928 100644 --- a/PARR.TemplateActivator/ITemplateActivator.cs +++ b/PARR.TemplateActivator/ITemplateActivator.cs @@ -4,5 +4,11 @@ namespace PARR.TemplateActivator; public interface ITemplateActivator { + /// + /// Обновить состояние шаблонов или расписаний в соответствии со значением параметра action по applicationInWorkId + /// + /// + /// + /// Task ChangeStateAsync(Guid applicationInWorkId, TemplateActivatorActionsEnum action); } diff --git a/PARR.TemplateActivator/TemplateActivator.cs b/PARR.TemplateActivator/TemplateActivator.cs index 29c9bbd2..49303378 100644 --- a/PARR.TemplateActivator/TemplateActivator.cs +++ b/PARR.TemplateActivator/TemplateActivator.cs @@ -23,6 +23,8 @@ internal class TemplateActivator : ITemplateActivator this.templateService = templateService; this.robotConfigurationService = robotConfigurationService; } + + public async Task ChangeStateAsync(Guid applicationInWorkId, TemplateActivatorActionsEnum action) { var query = templateService.Get() @@ -32,35 +34,43 @@ internal class TemplateActivator : ITemplateActivator switch (action) { case TemplateActivatorActionsEnum.ActivateAllTemplates: + logger.LogInformation($"Получен запрос на активацию всех шаблонов"); query = query.Where(t => !t.IsActiveTemplate); changes = await UpdateTemplateStateAsync(query, true); break; case TemplateActivatorActionsEnum.ActivateTemplatesWithActiveSchedules: + logger.LogInformation($"Получен запрос на активацию всех шаблонов, у которых активировано расписание"); query = query.Where(t => !t.IsActiveTemplate && t.IsActiveSchedule); changes = await UpdateTemplateStateAsync(query, true); break; case TemplateActivatorActionsEnum.DeactivateAllTemplates: + logger.LogInformation($"Получен запрос на деактивацию всех шаблонов"); query = query.Where(t => t.IsActiveTemplate); changes = await UpdateTemplateStateAsync(query, false); break; case TemplateActivatorActionsEnum.DeactivateTemplatesWithDeactivationSchedules: - query = query.Where(t => !t.IsActiveTemplate && !t.IsActiveSchedule); + logger.LogInformation($"Получен запрос на деактивацию всех шаблонов, у которых неактивированы расписания"); + query = query.Where(t => t.IsActiveTemplate && !t.IsActiveSchedule); changes = await UpdateTemplateStateAsync(query, false); break; case TemplateActivatorActionsEnum.ActivateAllSchedules: + logger.LogInformation($"Получен запрос на активацию всех расписаний"); query = query.Where(t => !t.IsActiveSchedule); changes = await UpdateScheduleStateAsync(query, true); break; case TemplateActivatorActionsEnum.DeactivateAllSchedules: + logger.LogInformation($"Получен запрос на деактивацию всех расписаний"); query = query.Where(t => t.IsActiveSchedule); changes = await UpdateScheduleStateAsync(query, false); break; case TemplateActivatorActionsEnum.ActivateSchedulesWithActiveTemplates: + logger.LogInformation($"Получен запрос на активацию всех расписаний, у которых активированы шаблоны"); query = query.Where(t => t.IsActiveTemplate && !t.IsActiveSchedule); changes = await UpdateScheduleStateAsync(query, true); break; case TemplateActivatorActionsEnum.DeactivateSchedulesWithDeactivationTemplates: - query = query.Where(t => !t.IsActiveTemplate); + logger.LogInformation($"Получен запрос на деактивацию всех расписаний, у которых неактивированы шаблоны"); + query = query.Where(t => !t.IsActiveTemplate && t.IsActiveSchedule); changes = await UpdateScheduleStateAsync(query, false); break; default: @@ -68,10 +78,17 @@ internal class TemplateActivator : ITemplateActivator } if (changes > 0 && !await templateService.CommitAsync()) - logger.LogError($"{this.GetType} не удалось записать измения состояний шаблонов и расписаний регламентной работы {applicationInWorkId}"); + logger.LogError($"{this.GetType} не удалось записать измения в БД о новых состояниях шаблонов и расписаний регламентной работы Id {applicationInWorkId}"); } + + /// + /// Обновить состояние расписаний по запросу query на newState, без записи в БД. Возвращает количество шаблонов требующих фиксации в БД + /// + /// + /// + /// private async Task UpdateScheduleStateAsync(IQueryable