diff --git a/PARR.BLL/Helpers/SqlHelpers.cs b/PARR.BLL/Helpers/SqlHelpers.cs
new file mode 100644
index 00000000..fc654e65
--- /dev/null
+++ b/PARR.BLL/Helpers/SqlHelpers.cs
@@ -0,0 +1,15 @@
+namespace PARR.BLL.Helpers
+{
+ public static class SqlHelpers
+ {
+ ///
+ /// Преобразует Regex в Like для SQL
+ ///
+ ///
+ ///
+ public static string RegexToLike(string regexPattern)
+ {
+ return regexPattern.Replace("*", "%").ToLower();
+ }
+ }
+}
diff --git a/PARR.BLL/Helpers/TemplateHelpers.cs b/PARR.BLL/Helpers/TemplateHelpers.cs
new file mode 100644
index 00000000..93e6bf3a
--- /dev/null
+++ b/PARR.BLL/Helpers/TemplateHelpers.cs
@@ -0,0 +1,21 @@
+namespace PARR.BLL.Helpers
+{
+ public static class TemplateHelpers
+ {
+ ///
+ /// Генерация имени шаблона
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GenerateTemplateName(string prefix, string ek, string work)
+ {
+ if (string.IsNullOrEmpty(prefix))
+ prefix = "ПАРР-PREFIX";
+
+ var splitter = "__";
+ return prefix + splitter + ek + splitter + work.Replace(" ", "-").ToUpper();
+ }
+ }
+}
diff --git a/PARR.DAL/Context/DataContext.cs b/PARR.DAL/Context/DataContext.cs
index d6cad437..dedfba05 100644
--- a/PARR.DAL/Context/DataContext.cs
+++ b/PARR.DAL/Context/DataContext.cs
@@ -117,7 +117,7 @@ namespace PARR.DAL.Context
new { Name = nameof(SettingsFromDb.Initiator), Description = "Инициатор регламентной работы, указывается при создании шаблона в ЕСПП.", Value = "КУЗНЕЦОВ МИХАИЛ ВАЛЕРЬЕВИЧ (IVC_KUZNETSOVMV@DVGD.OAO.RZD)" },
new { Name = nameof(SettingsFromDb.ClosingCode), Description = "Код закрытия регламентной работы, указывается при создании шаблона в ЕСПП.", Value = "выполнен" },
new { Name = nameof(SettingsFromDb.Category), Description = "Категория создаваемого объекта в ЕСПП", Value = "регламентная работа" },
- new { Name = nameof(SettingsFromDb.TemplatePrefixName), Description = "Префикс имени шаблона в ЕСПП", Value = "ПАРР-ДВС-ПТК__" }
+ new { Name = nameof(SettingsFromDb.TemplatePrefixName), Description = "Префикс имени шаблона в ЕСПП", Value = "ПАРР-ДВС-ПТК" }
);
});
diff --git a/PARR.DAL/Contracts/AIHTITSettings.cs b/PARR.DAL/Contracts/AIHTITSettings.cs
index d6c727a3..73b22099 100644
--- a/PARR.DAL/Contracts/AIHTITSettings.cs
+++ b/PARR.DAL/Contracts/AIHTITSettings.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PARR.DAL.Contracts
+namespace PARR.DAL.Contracts
{
public class AIHTITSettings
{
diff --git a/PARR.DAL/Migrations/20230925013923_TblSettingUpdPrefix.Designer.cs b/PARR.DAL/Migrations/20230925013923_TblSettingUpdPrefix.Designer.cs
new file mode 100644
index 00000000..0a48931b
--- /dev/null
+++ b/PARR.DAL/Migrations/20230925013923_TblSettingUpdPrefix.Designer.cs
@@ -0,0 +1,1451 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using PARR.DAL.Context;
+
+#nullable disable
+
+namespace PARR.DAL.Migrations
+{
+ [DbContext(typeof(DataContext))]
+ [Migration("20230925013923_TblSettingUpdPrefix")]
+ partial class TblSettingUpdPrefix
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.5")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("PARR.DAL.Models.AIHIT.RawDataEK", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AIHID")
+ .HasColumnType("integer");
+
+ b.Property("APPType")
+ .HasColumnType("text");
+
+ b.Property("AdditionalInfo")
+ .HasColumnType("text");
+
+ b.Property("CKBSServerType")
+ .HasColumnType("text");
+
+ b.Property("CTSDirection")
+ .HasColumnType("text");
+
+ b.Property("ClientOS")
+ .HasColumnType("text");
+
+ b.Property("ClientSoftware")
+ .HasColumnType("text");
+
+ b.Property("Company")
+ .HasColumnType("text");
+
+ b.Property("CreateTime")
+ .HasColumnType("text");
+
+ b.Property("DBType")
+ .HasColumnType("text");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EKCategory")
+ .HasColumnType("text");
+
+ b.Property("EKFindCode")
+ .HasColumnType("text");
+
+ b.Property("EKRegister")
+ .HasColumnType("text");
+
+ b.Property("EKRevizor")
+ .HasColumnType("text");
+
+ b.Property("EKSubCategory")
+ .HasColumnType("text");
+
+ b.Property("EKType")
+ .HasColumnType("text");
+
+ b.Property("EndExplotationDate")
+ .HasColumnType("text");
+
+ b.Property("FullName")
+ .HasColumnType("text");
+
+ b.Property("IBServerType")
+ .HasColumnType("text");
+
+ b.Property("IP")
+ .HasColumnType("text");
+
+ b.Property("InfrastructureServerType")
+ .HasColumnType("text");
+
+ b.Property("IsActive")
+ .HasColumnType("text");
+
+ b.Property("IsImportant")
+ .HasColumnType("text");
+
+ b.Property("IsUnreliableData")
+ .HasColumnType("character(1)");
+
+ b.Property("Location")
+ .HasColumnType("text");
+
+ b.Property("Metka")
+ .HasColumnType("text");
+
+ b.Property("MonitoringServerType")
+ .HasColumnType("text");
+
+ b.Property("NetworkName")
+ .HasColumnType("text");
+
+ b.Property("NewEKFindCode")
+ .HasColumnType("text");
+
+ b.Property("OSType")
+ .HasColumnType("text");
+
+ b.Property("OldEKFindCode")
+ .HasColumnType("text");
+
+ b.Property("PlannedTimeToRepair")
+ .HasColumnType("text");
+
+ b.Property("Prescription")
+ .HasColumnType("text");
+
+ b.Property("ProductCode")
+ .HasColumnType("text");
+
+ b.Property("ResponseArea")
+ .HasColumnType("text");
+
+ b.Property("ResponsibleByEK")
+ .HasColumnType("text");
+
+ b.Property("ServiceCode")
+ .HasColumnType("text");
+
+ b.Property("ShiftWorkGroup")
+ .HasColumnType("text");
+
+ b.Property("ShortName")
+ .HasColumnType("text");
+
+ b.Property("StartExplotationDate")
+ .HasColumnType("text");
+
+ b.Property("Status")
+ .HasColumnType("text");
+
+ b.Property("SysModTime")
+ .HasColumnType("text");
+
+ b.Property("SysModUser")
+ .HasColumnType("text");
+
+ b.Property("TargetRepairTime")
+ .HasColumnType("text");
+
+ b.Property("WorkGroup")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("RawDataEKs", "AIHIT");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.AIHIT.Setting", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("Group")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Settings", "AIHIT");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("b16afd06-605b-499f-9e35-a19586de96b0"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ГВЦ",
+ Value = "00-ГВЦ"
+ },
+ new
+ {
+ Id = new Guid("42a2ec03-da3a-45fc-971e-399910fdc5ae"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ОКТ",
+ Value = "01-ОКТ"
+ },
+ new
+ {
+ Id = new Guid("17efaf65-ae8c-45f1-b187-e6cb1bd6385b"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "КЛГ",
+ Value = "10-КЛГ"
+ },
+ new
+ {
+ Id = new Guid("51270997-20f6-4a61-85ac-64f6b6dd5dc4"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "МСК",
+ Value = "17-МСК"
+ },
+ new
+ {
+ Id = new Guid("b94f8c38-e78a-494e-81ba-39e4e902ffcc"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ГОР",
+ Value = "24-ГОР"
+ },
+ new
+ {
+ Id = new Guid("52ba20ea-4e7a-4500-939b-e2cff563809a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "СЕВ",
+ Value = "28-СЕВ"
+ },
+ new
+ {
+ Id = new Guid("cb9da805-29e9-4e08-b1ed-d4b374920f77"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "СКВ",
+ Value = "51-СКВ"
+ },
+ new
+ {
+ Id = new Guid("1943a65c-2060-4b5f-af1f-acec74835481"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ЮВСТ",
+ Value = "58-ЮВСТ"
+ },
+ new
+ {
+ Id = new Guid("4d9ef2ee-d4fa-4d28-a93b-6f1fd0a639f9"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ПРИВ",
+ Value = "61-ПРИВ"
+ },
+ new
+ {
+ Id = new Guid("f1a54c25-a93a-4fe3-8268-afbcc435b6e9"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "КБШ",
+ Value = "63-КБШ"
+ },
+ new
+ {
+ Id = new Guid("cc839c48-62bb-46a8-924c-85b5e7a3e245"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "СВРД",
+ Value = "76-СВРД"
+ },
+ new
+ {
+ Id = new Guid("c98fb684-ff03-441e-a9c3-ac5071d69857"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ЮУР",
+ Value = "80-ЮУР"
+ },
+ new
+ {
+ Id = new Guid("f2684a90-6029-4476-bd3d-e713a8a228d6"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ЗСИБ",
+ Value = "83-ЗСИБ"
+ },
+ new
+ {
+ Id = new Guid("b3c73162-21ea-42f0-b0e1-3c5076176f8a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "КРАСН",
+ Value = "88-КРАСН"
+ },
+ new
+ {
+ Id = new Guid("a8cff6fd-28b7-49f2-a412-9208c10f6516"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ВСИБ",
+ Value = "92-ВСИБ"
+ },
+ new
+ {
+ Id = new Guid("50f66704-4d26-4587-bb1e-dca70c8f4b89"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ЗАБ",
+ Value = "94-ЗАБ"
+ },
+ new
+ {
+ Id = new Guid("1fd43634-4a06-4237-9727-edfa6f3eebe8"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зона ответственности",
+ Group = "ResponsibleArea",
+ Name = "ДВС",
+ Value = "96-ДВС"
+ },
+ new
+ {
+ Id = new Guid("77c73c0a-8e4d-4676-b6e2-6a112f20e346"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Статус актуальных ЭК",
+ Group = "Status",
+ Name = "Exploitation",
+ Value = "3-В эксплуатации"
+ });
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Application", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationTypeId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationTypeId");
+
+ b.ToTable("Applications");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationInHost", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HostId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationId");
+
+ b.HasIndex("HostId");
+
+ b.ToTable("ApplicationsInHost");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationTypeId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationTypeId");
+
+ b.ToTable("ApplicationTypes");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("32c28386-6f13-4f7b-8508-be165b7fabdb"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Поле СП xml АИХ ИТ",
+ Name = "APP"
+ },
+ new
+ {
+ Id = new Guid("7848a96c-cdee-48c1-a786-de9cb889723a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Поле ОС xml АИХ ИТ",
+ Name = "OS"
+ },
+ new
+ {
+ Id = new Guid("aae2636f-b93a-42dc-873e-0764a90a0a40"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Поле СУБД xml АИХ ИТ",
+ Name = "DB"
+ });
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationsInWork", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("FullDescription")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ShortDescription")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Solution")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TemplateDuration")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("WorkId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationId");
+
+ b.HasIndex("WorkId", "ApplicationId")
+ .IsUnique();
+
+ b.ToTable("ApplicationsInWorks");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Host", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Ek")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IP")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ResponseArea")
+ .HasColumnType("text");
+
+ b.Property("Status")
+ .HasColumnType("text");
+
+ b.Property("WorkGroup")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Hosts");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Process", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppId")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Processes");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Setting", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Name");
+
+ b.ToTable("Settings");
+
+ b.HasData(
+ new
+ {
+ Name = "Initiator",
+ Description = "Инициатор регламентной работы, указывается при создании шаблона в ЕСПП.",
+ Value = "КУЗНЕЦОВ МИХАИЛ ВАЛЕРЬЕВИЧ (IVC_KUZNETSOVMV@DVGD.OAO.RZD)"
+ },
+ new
+ {
+ Name = "ClosingCode",
+ Description = "Код закрытия регламентной работы, указывается при создании шаблона в ЕСПП.",
+ Value = "выполнен"
+ },
+ new
+ {
+ Name = "Category",
+ Description = "Категория создаваемого объекта в ЕСПП",
+ Value = "регламентная работа"
+ },
+ new
+ {
+ Name = "TemplatePrefixName",
+ Description = "Префикс имени шаблона в ЕСПП",
+ Value = "ПАРР-ДВС-ПТК"
+ });
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.StatusTemplate", b =>
+ {
+ b.Property("Code")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Code"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Code");
+
+ b.ToTable("StatusTemplates");
+
+ b.HasData(
+ new
+ {
+ Code = 10,
+ Description = "Создали шаблон в ПАРР",
+ Name = "Creating"
+ },
+ new
+ {
+ Code = 20,
+ Description = "Выявлено несоответствие. Требуется привлечение робота",
+ Name = "Updating"
+ },
+ new
+ {
+ Code = 30,
+ Description = "Нормальное состояние шаблона в ЕСПП и ПАРР. Шаблон в ПАРР соответствует шаблону в ЕСПП",
+ Name = "Ok"
+ });
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Subprocess", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppId")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ProcessId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ProcessId");
+
+ b.ToTable("Subprocesses");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Template", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationInWorkId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HostId")
+ .HasColumnType("uuid");
+
+ b.Property("IsActive")
+ .HasColumnType("boolean");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("StatusCode")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationInWorkId");
+
+ b.HasIndex("HostId");
+
+ b.HasIndex("Name")
+ .IsUnique();
+
+ b.HasIndex("StatusCode");
+
+ b.ToTable("Templates");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppId")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("SubprocessId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SubprocessId");
+
+ b.ToTable("Tnks");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationTypeId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationTypeId");
+
+ b.ToTable("V1_Applications");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationInHost", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HostId")
+ .HasColumnType("uuid");
+
+ b.Property("V1_ApplicationId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationId");
+
+ b.HasIndex("HostId");
+
+ b.HasIndex("V1_ApplicationId");
+
+ b.ToTable("V1_ApplicationsInHost");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("V1_ApplicationTypeId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("V1_ApplicationTypeId");
+
+ b.ToTable("V1_ApplicationTypes");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Host", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HostName")
+ .HasColumnType("text");
+
+ b.Property("IP")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("LinkEK")
+ .HasColumnType("text");
+
+ b.Property("RegionalEK")
+ .HasColumnType("text");
+
+ b.Property("Responsible")
+ .HasColumnType("text");
+
+ b.Property("Status")
+ .HasColumnType("text");
+
+ b.Property("WorkGroup")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("V1_Hosts");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Frequency")
+ .HasColumnType("integer");
+
+ b.Property("IsEnabled")
+ .HasColumnType("boolean");
+
+ b.Property("JobCategoryId")
+ .HasColumnType("uuid");
+
+ b.Property("JobModeId")
+ .HasColumnType("uuid");
+
+ b.Property("JobTypeId")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ScriptName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("StartAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationId");
+
+ b.HasIndex("JobCategoryId");
+
+ b.HasIndex("JobModeId");
+
+ b.HasIndex("JobTypeId");
+
+ b.ToTable("V1_Jobs");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("V1_JobCategorys");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobJournal", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateOper")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HostId")
+ .HasColumnType("uuid");
+
+ b.Property("Info")
+ .HasColumnType("text");
+
+ b.Property("JobId")
+ .HasColumnType("uuid");
+
+ b.Property("JobStatusId")
+ .HasColumnType("uuid");
+
+ b.Property("Other")
+ .HasColumnType("text");
+
+ b.Property("TimeOut")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("HostId");
+
+ b.HasIndex("JobId");
+
+ b.HasIndex("JobStatusId");
+
+ b.ToTable("V1_JobJournals");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobMode", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("V1_JobModes");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("fba4202c-5bad-49c4-b076-d1ca6e1fb158"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Name = "auto"
+ },
+ new
+ {
+ Id = new Guid("7516b952-510d-4aaa-971c-a14b184fc1d5"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Name = "manual"
+ });
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobStatus", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("V1_JobStatuses");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("edef6dc3-adad-4c77-8ad1-63bb9052355a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Задание запущено",
+ Name = "started"
+ },
+ new
+ {
+ Id = new Guid("7b945eb6-d885-4570-aff5-8866f1f75ff2"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Задание выполнено",
+ Name = "finished"
+ });
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("V1_JobTypes");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Work", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppId")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TnkId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TnkId");
+
+ b.ToTable("Works");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Application", b =>
+ {
+ b.HasOne("PARR.DAL.Models.ApplicationType", "ApplicationType")
+ .WithMany()
+ .HasForeignKey("ApplicationTypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("ApplicationType");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationInHost", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Application", "Application")
+ .WithMany("ApplicationsInHosts")
+ .HasForeignKey("ApplicationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.Host", "Host")
+ .WithMany("ApplicationsInHosts")
+ .HasForeignKey("HostId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Application");
+
+ b.Navigation("Host");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b =>
+ {
+ b.HasOne("PARR.DAL.Models.ApplicationType", null)
+ .WithMany("ApplicationTypes")
+ .HasForeignKey("ApplicationTypeId");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationsInWork", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Application", "Application")
+ .WithMany("ApplicationsInWorks")
+ .HasForeignKey("ApplicationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.Work", "Work")
+ .WithMany("ApplicationsInWorks")
+ .HasForeignKey("WorkId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Application");
+
+ b.Navigation("Work");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Subprocess", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Process", "Process")
+ .WithMany("Subprocesses")
+ .HasForeignKey("ProcessId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Process");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Template", b =>
+ {
+ b.HasOne("PARR.DAL.Models.ApplicationsInWork", "ApplicationsInWork")
+ .WithMany("Templates")
+ .HasForeignKey("ApplicationInWorkId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.Host", "Host")
+ .WithMany("Templates")
+ .HasForeignKey("HostId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.StatusTemplate", "StatusTemplate")
+ .WithMany("Templates")
+ .HasForeignKey("StatusCode")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("ApplicationsInWork");
+
+ b.Navigation("Host");
+
+ b.Navigation("StatusTemplate");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Subprocess", "Subprocess")
+ .WithMany("Tnks")
+ .HasForeignKey("SubprocessId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Subprocess");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b =>
+ {
+ b.HasOne("PARR.DAL.Models.V1.V1_ApplicationType", "ApplicationType")
+ .WithMany()
+ .HasForeignKey("ApplicationTypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("ApplicationType");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationInHost", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Application", "Application")
+ .WithMany()
+ .HasForeignKey("ApplicationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.V1.V1_Host", "Host")
+ .WithMany("ApplicationsInHosts")
+ .HasForeignKey("HostId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.V1.V1_Application", null)
+ .WithMany("V1_ApplicationsInHosts")
+ .HasForeignKey("V1_ApplicationId");
+
+ b.Navigation("Application");
+
+ b.Navigation("Host");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b =>
+ {
+ b.HasOne("PARR.DAL.Models.V1.V1_ApplicationType", null)
+ .WithMany("V1_ApplicationTypes")
+ .HasForeignKey("V1_ApplicationTypeId");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Application", "Application")
+ .WithMany()
+ .HasForeignKey("ApplicationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.V1.V1_JobCategory", "JobCategorye")
+ .WithMany("Jobs")
+ .HasForeignKey("JobCategoryId");
+
+ b.HasOne("PARR.DAL.Models.V1.V1_JobMode", "JobMode")
+ .WithMany("Jobs")
+ .HasForeignKey("JobModeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.V1.V1_JobType", "JobType")
+ .WithMany("Jobs")
+ .HasForeignKey("JobTypeId");
+
+ b.Navigation("Application");
+
+ b.Navigation("JobCategorye");
+
+ b.Navigation("JobMode");
+
+ b.Navigation("JobType");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobJournal", b =>
+ {
+ b.HasOne("PARR.DAL.Models.V1.V1_Host", "Host")
+ .WithMany("JobJournals")
+ .HasForeignKey("HostId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.V1.V1_Job", "Job")
+ .WithMany("Journals")
+ .HasForeignKey("JobId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("PARR.DAL.Models.V1.V1_JobStatus", "Status")
+ .WithMany("Journals")
+ .HasForeignKey("JobStatusId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Host");
+
+ b.Navigation("Job");
+
+ b.Navigation("Status");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Work", b =>
+ {
+ b.HasOne("PARR.DAL.Models.Tnk", "Tnk")
+ .WithMany("Works")
+ .HasForeignKey("TnkId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Tnk");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Application", b =>
+ {
+ b.Navigation("ApplicationsInHosts");
+
+ b.Navigation("ApplicationsInWorks");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationType", b =>
+ {
+ b.Navigation("ApplicationTypes");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.ApplicationsInWork", b =>
+ {
+ b.Navigation("Templates");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Host", b =>
+ {
+ b.Navigation("ApplicationsInHosts");
+
+ b.Navigation("Templates");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Process", b =>
+ {
+ b.Navigation("Subprocesses");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.StatusTemplate", b =>
+ {
+ b.Navigation("Templates");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Subprocess", b =>
+ {
+ b.Navigation("Tnks");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Tnk", b =>
+ {
+ b.Navigation("Works");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Application", b =>
+ {
+ b.Navigation("V1_ApplicationsInHosts");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_ApplicationType", b =>
+ {
+ b.Navigation("V1_ApplicationTypes");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Host", b =>
+ {
+ b.Navigation("ApplicationsInHosts");
+
+ b.Navigation("JobJournals");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_Job", b =>
+ {
+ b.Navigation("Journals");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobCategory", b =>
+ {
+ b.Navigation("Jobs");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobMode", b =>
+ {
+ b.Navigation("Jobs");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobStatus", b =>
+ {
+ b.Navigation("Journals");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.V1.V1_JobType", b =>
+ {
+ b.Navigation("Jobs");
+ });
+
+ modelBuilder.Entity("PARR.DAL.Models.Work", b =>
+ {
+ b.Navigation("ApplicationsInWorks");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/PARR.DAL/Migrations/20230925013923_TblSettingUpdPrefix.cs b/PARR.DAL/Migrations/20230925013923_TblSettingUpdPrefix.cs
new file mode 100644
index 00000000..50fb7456
--- /dev/null
+++ b/PARR.DAL/Migrations/20230925013923_TblSettingUpdPrefix.cs
@@ -0,0 +1,32 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace PARR.DAL.Migrations
+{
+ ///
+ public partial class TblSettingUpdPrefix : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.UpdateData(
+ table: "Settings",
+ keyColumn: "Name",
+ keyValue: "TemplatePrefixName",
+ column: "Value",
+ value: "ПАРР-ДВС-ПТК");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.UpdateData(
+ table: "Settings",
+ keyColumn: "Name",
+ keyValue: "TemplatePrefixName",
+ column: "Value",
+ value: "ПАРР-ДВС-ПТК__");
+ }
+ }
+}
diff --git a/PARR.DAL/Migrations/DataContextModelSnapshot.cs b/PARR.DAL/Migrations/DataContextModelSnapshot.cs
index bfce0c7f..4ea15957 100644
--- a/PARR.DAL/Migrations/DataContextModelSnapshot.cs
+++ b/PARR.DAL/Migrations/DataContextModelSnapshot.cs
@@ -616,7 +616,7 @@ namespace PARR.DAL.Migrations
{
Name = "TemplatePrefixName",
Description = "Префикс имени шаблона в ЕСПП",
- Value = "ПАРР-ДВС-ПТК__"
+ Value = "ПАРР-ДВС-ПТК"
});
});
diff --git a/PARR.GeneratorTemplates/GeneratorTemplate.cs b/PARR.GeneratorTemplates/GeneratorTemplate.cs
index 7b5aa93a..f26cbc64 100644
--- a/PARR.GeneratorTemplates/GeneratorTemplate.cs
+++ b/PARR.GeneratorTemplates/GeneratorTemplate.cs
@@ -44,7 +44,9 @@ namespace PARR.GeneratorTemplates
// logger.LogInformation($"Привет откуда надо!!! ${msg}");
// //todo: идем дальеш!
- string msg = "{\"WorkId\":\"91219bec-e5f7-4a1a-b4c9-c135035d2498\",\"ApplicationId\":\"13044a1f-fa0c-476f-b501-2b8d06bac9f8\",\"Action\":\"deactivate\",\"Ek\":\"вРТ-*RZD\"}";
+ //string msg = "{\"WorkId\":\"91219bec-e5f7-4a1a-b4c9-c135035d2498\",\"ApplicationId\":\"13044a1f-fa0c-476f-b501-2b8d06bac9f8\",\"Action\":\"create\",\"Ek\":\"вРТ-*RZD\"}";
+ string msg = "{\"WorkId\":\"91219bec-e5f7-4a1a-b4c9-c135035d2498\",\"ApplicationId\":\"13044a1f-fa0c-476f-b501-2b8d06bac9f8\",\"Action\":\"create\",\"Ek\":\"*ДВС\"}";
+ //string msg = "{\"WorkId\":\"91219bec-e5f7-4a1a-b4c9-c135035d2498\",\"ApplicationId\":\"13044a1f-fa0c-476f-b501-2b8d06bac9f8\",\"Action\":\"deactivate\",\"Ek\":\"вРТ-*RZD\"}";
await GenerateTemplates(msg);
// // проверить как ту дела с асинком
diff --git a/PARR.GeneratorTemplates/Services/TemplateManager.cs b/PARR.GeneratorTemplates/Services/TemplateManager.cs
index 2afdfa6e..ad9c74f9 100644
--- a/PARR.GeneratorTemplates/Services/TemplateManager.cs
+++ b/PARR.GeneratorTemplates/Services/TemplateManager.cs
@@ -1,40 +1,108 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.BLL.Domain.Mq;
+using PARR.BLL.Helpers;
using PARR.DAL.Contracts;
+using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
+using System.Text.Json;
namespace PARR.GeneratorTemplates.Services
{
internal class TemplateManager : ITemplateManager
{
private readonly ITemplateService templateService;
+ private readonly IHostService hostService;
private readonly ILogger logger;
+ private readonly SettingsFromDb settingsFromDb;
public TemplateManager(
ITemplateService templateService,
- ILogger logger
+ IHostService hostService,
+ ILogger logger,
+ SettingsFromDb settingsFromDb
)
{
this.templateService = templateService;
+ this.hostService = hostService;
this.logger = logger;
+ this.settingsFromDb = settingsFromDb;
}
public async Task CreateTemplates(GeneratorTemplateMq query)
{
//Согласно параметрам, находит все ЭК в таблице Hosts.
- //Далее проверяет есть ли такие шаблоны в таблице Templates, если нет, то создает.
+ //Далее проверяет есть ли такие шаблоны в таблице Templates, если нет, то создает, активирует и ставит статус Creating.
//Если такие шаблоны уже есть, ничего с ними не делает.
- //TODO:
+ string ekPattern = SqlHelpers.RegexToLike(query.Ek);
+
+ // список хостов для создания шаблонов
+ var hosts = await hostService.Get()
+ .Include(t => t.ApplicationsInHosts)
+ .ThenInclude(t => t.Application).ThenInclude(t => t!.ApplicationsInWorks).ThenInclude(w => w.Work)
+ .Include(t => t.Templates)
+ .ThenInclude(w => w.ApplicationsInWork)
+ .Where(t =>
+ //TODO: add status ЭК
+ t.ApplicationsInHosts.Any(h =>
+ h.ApplicationId == query.ApplicationId
+ && h.Application!.ApplicationsInWorks.Any(w => w.WorkId == query.WorkId)
+ )
+ && EF.Functions.Like(t.Ek.ToLower(), ekPattern)
+ // смотрим что нет такого шаблона
+ && t.Templates.Any(templ => templ.ApplicationsInWork!.WorkId == query.WorkId && templ.ApplicationsInWork.ApplicationId == query.ApplicationId) == false
+ )
+ .AsSplitQuery()
+ .ToListAsync();
+
+ if (!hosts.Any())
+ {
+ logger.LogInformation($"Не найдено ЭК попадающих под условие: ${JsonSerializer.Serialize(query)}");
+ return;
+ }
+
+
+ //Создаем шаблоны
+ foreach (var host in hosts)
+ {
+ var appInWork = host.ApplicationsInHosts.FirstOrDefault(t => t.ApplicationId == query.ApplicationId)?.Application?.ApplicationsInWorks.FirstOrDefault(a => a.WorkId == query.WorkId);
+
+ if (appInWork == null)
+ {
+ // такого не может быть, так как выполнился запрос при получении списка хостов, но мало ли
+ logger.LogError($"Ошибка при создании шаблона. В таблице ApplicationsInWorks не найден Id согласно запроса WorkId: {query.WorkId}, ApplicationId: {query.ApplicationId}");
+ return;
+ }
+
+ var template = new Template
+ {
+ Id = Guid.NewGuid(),
+ Name = TemplateHelpers.GenerateTemplateName(settingsFromDb.TemplatePrefixName, host.Ek, appInWork.Work!.Name),
+ IsActive = true,
+ StatusCode = (int)StatusTemplateEnum.Creating,
+ ApplicationInWorkId = appInWork.Id,
+ HostId = host.Id
+ };
+
+ if (!await templateService.CreateAsync(template) || !await templateService.CommitAsync())
+ {
+ logger.LogError($"Ошибка при создании шаблона: Name: {template.Name}, ApplicationInWorkId: {template.ApplicationInWorkId}, HostId: {template.HostId}");
+ }
+ else
+ {
+ logger.LogInformation($"Создан шаблон: Name: {template.Name}, ApplicationInWorkId: {template.ApplicationInWorkId}, " +
+ $"HostId: {template.HostId}, IsActive: {template.IsActive}, StatusCode: {template.StatusCode}");
+ }
+ }
}
public async Task DeactivateTemplates(GeneratorTemplateMq query)
{
//Ищет все активные шаблоны согласно параметрам в таблице Templates, и деактивирует их. Меняем на статус Updating
- // делаем sql форматдля like из запроса.
- string pattern = query.Ek.Replace("*", "%").ToLower();
+ // делаем sql формат для like из запроса.
+ string ekPattern = SqlHelpers.RegexToLike(query.Ek);
var existTemplates = await templateService.Get()
.Include(t => t.Host)
@@ -43,7 +111,8 @@ namespace PARR.GeneratorTemplates.Services
t.IsActive == true
&& t.ApplicationsInWork!.ApplicationId == query.ApplicationId
&& t.ApplicationsInWork!.WorkId == query.WorkId
- && EF.Functions.Like(t.Host!.Ek.ToLower(), pattern)
+ //TODO: add status ЭК
+ && EF.Functions.Like(t.Host!.Ek.ToLower(), ekPattern)
)
.ToListAsync();
diff --git a/PARR.GeneratorTemplatesWorker/Program.cs b/PARR.GeneratorTemplatesWorker/Program.cs
index b9739fda..d911047a 100644
--- a/PARR.GeneratorTemplatesWorker/Program.cs
+++ b/PARR.GeneratorTemplatesWorker/Program.cs
@@ -19,7 +19,7 @@ IHost host = Host.CreateDefaultBuilder(args)
//})
.ConfigureServices((hostContext, services) =>
{
- //services.AddGeneratorTemplateSettings(hostContext.Configuration);
+ services.AddGeneratorTemplateSettings(hostContext.Configuration);
services.AddHostedService();
})