Files
parr_api/PARR.TemplateMatcher/Services/Implementations/UnusedTemplateMessageFactory.cs
Mikhail Kuznetsov f9f234d119 refactor(templateMatcher):
- унификация деактивации шаблонов между разными синхронизаторами
- поиск ЭК выделен в отдельную сущность
2026-10-14 14:28:58 +10:00

83 lines
3.0 KiB
C#

using Microsoft.Extensions.Options;
using PARR.Domain.Common.Rabbit.Messages.TemplateMatching;
using PARR.Domain.Entities;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Entities.JobEntities;
using PARR.Domain.Entities.Unit;
using PARR.Domain.Enums;
using PARR.TemplateMatcher.Constants;
using PARR.TemplateMatcher.Services.Interfaces;
using PARR.TemplateMatcher.Settings;
namespace PARR.TemplateMatcher.Services.Implementations;
internal class UnusedTemplateMessageFactory : IUnusedTemplateMessageFactory
{
private readonly ITemplateNameNormalizer _templateNameNormalizer;
private readonly IOptions<TemplateSettings> _templateSettings;
public UnusedTemplateMessageFactory(
ITemplateNameNormalizer templateNameNormalizer,
IOptions<TemplateSettings> templateSettings)
{
_templateNameNormalizer = templateNameNormalizer;
_templateSettings = templateSettings;
}
public async Task<TemplateUpdaterMessage> CreateAsync(
Template template,
Job unusedJob,
Unit targetUnit,
HistoryInitiator initiator,
CancellationToken ct = default)
{
var jobForName = new Job
{
Id = unusedJob.Id,
Name = unusedJob.Name,
WorkName = unusedJob.WorkName,
MinValueRelationships = unusedJob.MinValueRelationships,
MaxValueRelationships = unusedJob.MaxValueRelationships,
IsParentRelationships = unusedJob.IsParentRelationships,
TemplateNameMask = _templateSettings.Value.UnusedTemplateNameMask,
WorkGroupMask = unusedJob.WorkGroupMask,
ResponseAreaMask = unusedJob.ResponseAreaMask,
TnkId = unusedJob.TnkId,
GroupId = unusedJob.GroupId,
Group = unusedJob.Group,
Tnk = unusedJob.Tnk,
UnitFilters = unusedJob.UnitFilters,
Templates = unusedJob.Templates,
AutoControl = unusedJob.AutoControl
};
var templateForName = new Template
{
Id = template.Id,
Name = template.Name,
JobId = unusedJob.Id,
UnitId = targetUnit.Id,
Index = null,
Job = jobForName,
Unit = targetUnit,
UnitsInTemplate = new List<UnitsInTemplate>()
};
var expectedName = await _templateNameNormalizer.GetNormalizedTemplateNameAsync(templateForName);
return new TemplateUpdaterMessage
{
TemplateId = template.Id,
JobId = unusedJob.Id,
UnitId = targetUnit.Id,
Name = expectedName,
IsActiveTemplate = UnusedTemplateConstants.DefaultUnusedTemplateState,
IsActiveSchedule = UnusedTemplateConstants.DefaultUnusedScheduleState,
IsNew = false,
Index = null,
StatusTypeId = TemplateStatusTypeEnum.Unused,
Initiator = initiator,
UnitsInTemplate = new List<UnitInTemplateMessage>()
};
}
}