feat(dal): добавлено расширение string ApplyShortcode - позволяет подставлять в строковых переменные шаблонные значения типа %ЭК%

This commit is contained in:
Mikhail Kuznetsov
2024-03-20 15:26:14 +10:00
parent ff712ed126
commit b803f8beaa
6 changed files with 54 additions and 7 deletions

View File

@@ -3,7 +3,9 @@ using PARR.API.Authentication.Models;
using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses;
using PARR.API.MappingProfiles.Resolvers; using PARR.API.MappingProfiles.Resolvers;
using PARR.BLL.Helpers; using PARR.BLL.Helpers;
using PARR.Constants.Shortcode;
using PARR.DAL.DomainModels; using PARR.DAL.DomainModels;
using PARR.DAL.Extensions;
using PARR.DAL.Models; using PARR.DAL.Models;
namespace PARR.API.MappingProfiles namespace PARR.API.MappingProfiles
@@ -118,9 +120,11 @@ namespace PARR.API.MappingProfiles
.ForMember(d => d.ProcessEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Process!.EsppId)) .ForMember(d => d.ProcessEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Process!.EsppId))
.ForMember(d => d.SubprocessName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Name)) .ForMember(d => d.SubprocessName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Name))
.ForMember(d => d.SubprocessEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.EsppId)) .ForMember(d => d.SubprocessEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Subprocess!.EsppId))
.ForMember(d => d.TnkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Name)) .ForMember(d => d.TnkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.Name.ApplyShortcode(Shortcodes.EK, s.Template!.Host!.Ek)))
.ForMember(d => d.TnkEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.EsppId)) .ForMember(d => d.TnkEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Tnk!.EsppId))
.ForMember(d => d.WorkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Name)) //.ForMember(d => d.WorkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Name))
// .ForMember(d => d.WorkName, o => o.MapFrom(s => ShortcodeHelpers.ApplyShortcode(Shortcodes.EK, s.Template.Host.Ek, ref s.Template!.ApplicationsInWork!.Work!.Name.ToString())))
.ForMember(d => d.WorkName, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.Name.ApplyShortcode(Shortcodes.EK, s.Template!.Host!.Ek)))
.ForMember(d => d.WorkEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.EsppId)); .ForMember(d => d.WorkEsppId, o => o.MapFrom(s => s.Template!.ApplicationsInWork!.Work!.EsppId));
CreateMap<RobotConfiguration, RobotTaskScheduleResponse>() CreateMap<RobotConfiguration, RobotTaskScheduleResponse>()

View File

@@ -0,0 +1,16 @@
namespace PARR.Constants.Shortcode
{
public static class ShortcodeNames
{
private static Dictionary<Shortcodes, string> ShortcodeNamesList = new Dictionary<Shortcodes, string>
{
{Shortcodes.EK, "%ЭК%" }
};
public static string GetShortcodeName(Shortcodes shortcode)
{
return ShortcodeNamesList[shortcode];
}
}
}

View File

@@ -0,0 +1,8 @@
namespace PARR.Constants.Shortcode
{
public enum Shortcodes
{
EK
//!!!Не забыть добавить в справочник имен (ShortcodeName) строковое значение
}
}

View File

@@ -1,4 +1,5 @@
using System.Text.Encodings.Web; using PARR.Constants.Shortcode;
using System.Text.Encodings.Web;
using System.Text.Json; using System.Text.Json;
using System.Text.Unicode; using System.Text.Unicode;
@@ -26,6 +27,8 @@ namespace PARR.DAL.Extensions
return null; return null;
} }
} }
public static DateTimeOffset EndOfDay(this DateTimeOffset date) public static DateTimeOffset EndOfDay(this DateTimeOffset date)
{ {
return new DateTimeOffset(date.Year, date.Month, date.Day, 23, 59, 59, 999, new TimeSpan(0)); return new DateTimeOffset(date.Year, date.Month, date.Day, 23, 59, 59, 999, new TimeSpan(0));
@@ -35,5 +38,19 @@ namespace PARR.DAL.Extensions
{ {
return new DateTimeOffset(date.Year, date.Month, date.Day, 0, 0, 0, 0, new TimeSpan(0)); return new DateTimeOffset(date.Year, date.Month, date.Day, 0, 0, 0, 0, new TimeSpan(0));
} }
/// <summary>
///
/// </summary>
/// <param name="sourceString">Исходная строка, включающая переменные части вида %ШАБЛОН%</param>
/// <param name="shortcode">Код шаблона из PARR.Constants.Shortcode.Shortcodes</param>
/// <param name="shortcodeValue">Итоговое строковое значение</param>
/// <returns></returns>
public static string ApplyShortcode(this string sourceString, Shortcodes shortcode, string shortcodeValue)
{
var shortcodeName = ShortcodeNames.GetShortcodeName(shortcode);
return sourceString.Replace(shortcodeName, shortcodeValue);
}
} }
} }

View File

@@ -1,6 +1,7 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using PARR.BLL.Services.Interfaces; using PARR.BLL.Services.Interfaces;
using PARR.DAL.Contracts; using PARR.DAL.Contracts;
using PARR.DAL.Extensions;
using PARR.DAL.Models; using PARR.DAL.Models;
using PARR.EsppSync; using PARR.EsppSync;
using PARR.EsppTemplateSync.Domain; using PARR.EsppTemplateSync.Domain;
@@ -81,8 +82,8 @@ namespace PARR.EsppTemplateSync
Solution = template.ApplicationsInWork.Solution, Solution = template.ApplicationsInWork.Solution,
Process = template.ApplicationsInWork.Work!.Tnk!.Subprocess!.Process!.Name, Process = template.ApplicationsInWork.Work!.Tnk!.Subprocess!.Process!.Name,
SubProcess = template.ApplicationsInWork.Work.Tnk.Subprocess.Name, SubProcess = template.ApplicationsInWork.Work.Tnk.Subprocess.Name,
TNK = template.ApplicationsInWork.Work.Tnk.Name, TNK = template.ApplicationsInWork.Work.Tnk.Name.ApplyShortcode(Constants.Shortcode.Shortcodes.EK, template.Host.Ek),
Work = template.ApplicationsInWork.Work.Name Work = template.ApplicationsInWork.Work.Name.ApplyShortcode(Constants.Shortcode.Shortcodes.EK, template.Host.Ek)
}; };
return templateFromDb; return templateFromDb;

View File

@@ -4,6 +4,7 @@ using PARR.BLL.Domain.Mq;
using PARR.BLL.Helpers; using PARR.BLL.Helpers;
using PARR.Constants; using PARR.Constants;
using PARR.DAL.Contracts; using PARR.DAL.Contracts;
using PARR.DAL.Extensions;
using PARR.DAL.Models; using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces;
using System.Text.Json; using System.Text.Json;
@@ -90,7 +91,7 @@ namespace PARR.GeneratorTemplates.Services
Id = Guid.NewGuid(), Id = Guid.NewGuid(),
//TODO:!!! //TODO:!!!
//Name = TemplateHelpers.GenerateTemplateName("ЗО" ,settingsFromDb.TemplatePrefixName, host.Ek, appInWork.Work!.Name), //Name = TemplateHelpers.GenerateTemplateName("ЗО" ,settingsFromDb.TemplatePrefixName, host.Ek, appInWork.Work!.Name),
Name = TemplateHelpers.GenerateTemplateNameWithResponseArea(host.ResponseArea!.Name, settingsFromDb.TemplatePrefixName, host.Ek, appInWork.Work!.Name), Name = TemplateHelpers.GenerateTemplateNameWithResponseArea(host.ResponseArea!.Name, settingsFromDb.TemplatePrefixName, host.Ek, appInWork.Work!.Name.ApplyShortcode(Constants.Shortcode.Shortcodes.EK, host.Ek)),
IsActiveTemplate = true, IsActiveTemplate = true,
IsActiveSchedule = true, IsActiveSchedule = true,
ApplicationInWorkId = appInWork.Id, ApplicationInWorkId = appInWork.Id,