Files
parr_api/PARR.GeneratorTemplates/Services/TemplateManager.cs
Mikhail Trubnikov 6c3ac936a1 DeactivateTemplates
2023-09-22 15:30:57 +10:00

72 lines
2.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<TemplateManager> logger;
public TemplateManager(
ITemplateService templateService,
ILogger<TemplateManager> 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}"));
}
}
}