72 lines
2.8 KiB
C#
72 lines
2.8 KiB
C#
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}"));
|
||
}
|
||
|
||
|
||
}
|
||
}
|