using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using PARR.BLL.Domain.Mq; using PARR.DAL.Contracts; using PARR.DAL.Services.Interfaces; namespace PARR.GeneratorTemplates.Services { internal class TemplateManager : ITemplateManager { private readonly ITemplateService templateService; private readonly ILogger logger; public TemplateManager( ITemplateService templateService, ILogger logger ) { this.templateService = templateService; this.logger = logger; } public async Task CreateTemplates(GeneratorTemplateMq query) { //Согласно параметрам, находит все ЭК в таблице Hosts. //Далее проверяет есть ли такие шаблоны в таблице Templates, если нет, то создает. //Если такие шаблоны уже есть, ничего с ними не делает. //TODO: } public async Task DeactivateTemplates(GeneratorTemplateMq query) { //Ищет все активные шаблоны согласно параметрам в таблице Templates, и деактивирует их. Меняем на статус Updating // делаем sql форматдля like из запроса. string pattern = query.Ek.Replace("*", "%").ToLower(); var existTemplates = await templateService.Get() .Include(t => t.Host) .Include(t => t.ApplicationsInWork) .Where(t => t.IsActive == true && t.ApplicationsInWork!.ApplicationId == query.ApplicationId && t.ApplicationsInWork!.WorkId == query.WorkId && EF.Functions.Like(t.Host!.Ek.ToLower(), pattern) ) .ToListAsync(); if (!existTemplates.Any()) { logger.LogInformation("Нет шаблонов для деактивации"); return; } existTemplates.ForEach(item => { item.IsActive = false; item.StatusCode = (int)StatusTemplateEnum.Updating; item.DateModified = DateTimeOffset.UtcNow; }); if (await templateService.CommitAsync()) existTemplates.ForEach(item => logger.LogInformation($"Деактивирован шаблон: {item.Name}")); else existTemplates.ForEach(item => logger.LogError($"Ошибка при дактивации шаблона: {item.Name}")); } } }