diff --git a/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs b/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs
index 00798498..fe588d79 100644
--- a/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs
+++ b/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs
@@ -10,5 +10,7 @@ namespace PARR.API.Contracts.V1.Responses.Statistics
public WorkloadCacheInfo.StatusEnum Status { get; set; }
public DateTimeOffset? Date { get; init; }
+
+ public int? ProgressPercent { get; init; }
}
}
diff --git a/PARR.Core/Common/Interfaces/IProgressAsync.cs b/PARR.Core/Common/Interfaces/IProgressAsync.cs
new file mode 100644
index 00000000..d4998400
--- /dev/null
+++ b/PARR.Core/Common/Interfaces/IProgressAsync.cs
@@ -0,0 +1,40 @@
+namespace PARR.Core.Common.Interfaces
+{
+ ///
+ /// Отслеживание програсса (% от задачи)
+ ///
+ ///
+ public interface IProgressAsync
+ {
+ ///
+ /// Установить значение програсса (%)
+ ///
+ ///
+ ///
+ Task ReportAsync(T value);
+ }
+
+ ///
+ /// Отслеживание програсса (% от задачи)
+ ///
+ ///
+ public class ProgressAsync : IProgressAsync
+ {
+ private readonly Func _handler;
+
+ ///
+ /// Отслеживание програсса (% от задачи)
+ ///
+ ///
+ public ProgressAsync(Func handler)
+ {
+ _handler = handler;
+ }
+
+ public Task ReportAsync(T value)
+ {
+ return _handler(value);
+ }
+ }
+
+}
diff --git a/PARR.Core/Repositories/Interfaces/TaskRepositories/ITaskRepository.cs b/PARR.Core/Repositories/Interfaces/TaskRepositories/ITaskRepository.cs
index 5bf52170..3ba8ef7f 100644
--- a/PARR.Core/Repositories/Interfaces/TaskRepositories/ITaskRepository.cs
+++ b/PARR.Core/Repositories/Interfaces/TaskRepositories/ITaskRepository.cs
@@ -11,5 +11,14 @@ namespace PARR.Core.Repositories.Interfaces.TaskRepositories
///
/// Возвращает кол-во обработанных строк
Task TaskCaptureAsync(Guid taskId);
+
+ ///
+ /// Обновляет процент выполнения задачи.
+ /// Возвращает количество затронутых строк (0 или 1).
+ ///
+ /// Id задачи
+ /// Процент (0-100)
+ ///
+ Task UpdateProgressAsync(Guid taskId, int percent);
}
}
diff --git a/PARR.Core/Services/TaskServices/Handlers/BaseTaskHandler.cs b/PARR.Core/Services/TaskServices/Handlers/BaseTaskHandler.cs
index 80796717..84e6cf4a 100644
--- a/PARR.Core/Services/TaskServices/Handlers/BaseTaskHandler.cs
+++ b/PARR.Core/Services/TaskServices/Handlers/BaseTaskHandler.cs
@@ -114,6 +114,10 @@ namespace PARR.Core.Services.TaskServices.Handlers
task.StatusCode = TaskItemStatusEnum.Processing;
task.DateModified = DateTimeOffset.UtcNow;
+ // Ставим процент 0
+ task.ProgressPercent = 0;
+ await taskRepository.UpdateProgressAsync(task.Id, 0);
+
return true;
}
@@ -129,7 +133,7 @@ namespace PARR.Core.Services.TaskServices.Handlers
///
///
///
- private async System.Threading.Tasks.Task HandleSuccessAsync(TaskItem task, HandlerResult result)
+ private async Task HandleSuccessAsync(TaskItem task, HandlerResult result)
{
logger.LogInformation("Задача {TaskId} успешно выполнена", task.Id);
@@ -137,6 +141,9 @@ namespace PARR.Core.Services.TaskServices.Handlers
task.ProcessedAt = DateTimeOffset.UtcNow;
task.DateModified = DateTimeOffset.UtcNow;
+ // Ставим 100%
+ task.ProgressPercent = 100;
+
//todo: если есть результат, его можно сохранить, если надо
if (!string.IsNullOrEmpty(result.ResultData))
{
@@ -158,8 +165,19 @@ namespace PARR.Core.Services.TaskServices.Handlers
///
///
///
- private async System.Threading.Tasks.Task HandleErrorAsync(TaskItem task, Exception? ex)
+ private async Task HandleErrorAsync(TaskItem task, Exception? ex)
{
+ // задача в БД, у которой можно получить актуальный процент прогресса
+ var taskInDb = await taskRepository.Get()
+ .AsNoTracking()
+ .FirstOrDefaultAsync(t=>t.Id==task.Id);
+
+ if (taskInDb != null)
+ {
+ //так как в БД мы обновлям атомарно прогресс, то пришедший нам task не знает фактическое значение прогресса
+ task.ProgressPercent = taskInDb.ProgressPercent;
+ }
+
var attemptNumber = task.RetryCount + 1;
var errorMessage = ex?.Message ?? "Неизвестная ошибка";
var stackTrace = ex?.StackTrace;
@@ -219,7 +237,7 @@ namespace PARR.Core.Services.TaskServices.Handlers
///
///
///
- protected virtual async System.Threading.Tasks.Task ScheduleRetryAsync(TaskItem task)
+ protected virtual async Task ScheduleRetryAsync(TaskItem task)
{
// Здесь нужна интеграция с ITaskQueueService
// Для этого можно использовать событие или callback
@@ -254,7 +272,7 @@ namespace PARR.Core.Services.TaskServices.Handlers
///
///
///
- protected virtual System.Threading.Tasks.Task OnSuccessAsync(TaskItem task, HandlerResult result) => System.Threading.Tasks.Task.CompletedTask;
+ protected virtual Task OnSuccessAsync(TaskItem task, HandlerResult result) => System.Threading.Tasks.Task.CompletedTask;
///
@@ -264,7 +282,43 @@ namespace PARR.Core.Services.TaskServices.Handlers
///
///
///
- protected virtual System.Threading.Tasks.Task OnErrorAsync(TaskItem task, Exception? ex, int attemptNumber) => System.Threading.Tasks.Task.CompletedTask;
+ protected virtual Task OnErrorAsync(TaskItem task, Exception? ex, int attemptNumber) => System.Threading.Tasks.Task.CompletedTask;
+
+
+ ///
+ /// Обновляет процент выполнения задачи.
+ /// Обновлять процент не чаще 1 раза в 5 сек.
+ /// Вызывается из конкретного хендлера при желании показать прогресс.
+ ///
+ /// Id задачи
+ /// Процент (0-100). Значения >100 будут ограничены до 100.
+ ///
+ protected async Task UpdateProgressAsync(Guid taskId, int percent)
+ {
+ if (percent < 0)
+ {
+ logger.LogWarning("Попытка установить отрицательный прогресс {Percent} для задачи {TaskId}", percent, taskId);
+ percent = 0;
+ }
+ else if (percent > 100)
+ {
+ logger.LogWarning("Прогресс {Percent} для задачи {TaskId} превысил 100%. Записываем 100.", percent, taskId);
+ percent = 100;
+ }
+
+ // Обновляем в БД
+ var affectedRows = await taskRepository.UpdateProgressAsync(taskId, percent);
+
+ if (affectedRows == 0)
+ {
+ // Задача не найдена или уже завершена — не считаем ошибкой
+ logger.LogDebug("Не удалось обновить прогресс задачи {TaskId} (возможно, уже завершена)", taskId);
+ }
+ else
+ {
+ logger.LogDebug("Прогресс задачи {TaskId} обновлен: {Percent}%", taskId, percent);
+ }
+ }
}
diff --git a/PARR.Core/Services/TaskServices/Handlers/WorkloadReportHandler.cs b/PARR.Core/Services/TaskServices/Handlers/WorkloadReportHandler.cs
index cebd4f8f..9715c9df 100644
--- a/PARR.Core/Services/TaskServices/Handlers/WorkloadReportHandler.cs
+++ b/PARR.Core/Services/TaskServices/Handlers/WorkloadReportHandler.cs
@@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
+using PARR.Core.Common.Interfaces;
using PARR.Core.Repositories.Interfaces.TaskRepositories;
using PARR.Core.Services.Workload.Implementations;
using PARR.Domain.Entities.TaskEntities;
@@ -37,9 +38,18 @@ namespace PARR.Core.Services.TaskServices.Handlers
// тут логика построения отчета
+
+ // Создаём прогресс-репортер
+ var progress = new ProgressAsync(async percent =>
+ {
+ await UpdateProgressAsync(task.Id, percent);
+ logger.LogDebug("Процент выполнения: {Percent}%", percent);
+ });
+
+
await workloadCacheService.DeleteWorkloadCacheAsync();
await workloadCacheService.DeleteTemplateCacheAsync();
- await workloadCacheService.CreateTemplateCacheAsync();
+ await workloadCacheService.CreateTemplateCacheAsync(progress);
//await System.Threading.Tasks.Task.CompletedTask;
diff --git a/PARR.Core/Services/TaskServices/Helpers/TaskManagementHelpers.cs b/PARR.Core/Services/TaskServices/Helpers/TaskManagementHelpers.cs
new file mode 100644
index 00000000..dcc5dc13
--- /dev/null
+++ b/PARR.Core/Services/TaskServices/Helpers/TaskManagementHelpers.cs
@@ -0,0 +1,38 @@
+using AutoMapper;
+using Microsoft.EntityFrameworkCore;
+using PARR.Core.Repositories.Interfaces.TaskRepositories;
+using PARR.Domain.DTOs.TaskDTO;
+using PARR.Domain.Enums;
+
+namespace PARR.Core.Services.TaskServices.Helpers
+{
+ ///
+ /// Хелпеы для TaskManagement
+ ///
+ internal static class TaskManagementHelpers
+ {
+ ///
+ /// Получить список активных задач
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task> GetActiveTasksAsync(ITaskRepository taskRepository, IMapper mapper, TaskTypeEnum? typeCode = null)
+ {
+ var query = taskRepository.Get()
+ .AsNoTracking()
+ .Include(t => t.TaskStatus)
+ .Include(t => t.TaskType)
+ .Where(t => t.StatusCode == TaskItemStatusEnum.Pending || t.StatusCode == TaskItemStatusEnum.Processing);
+
+ if (typeCode.HasValue)
+ query = query.Where(t => t.TypeCode == typeCode.Value);
+
+ var tasks = await query.OrderByDescending(t => t.DateCreated).ToListAsync();
+
+ return mapper.Map>(tasks);
+ }
+
+ }
+}
diff --git a/PARR.Core/Services/TaskServices/Implementations/TaskManagementService.cs b/PARR.Core/Services/TaskServices/Implementations/TaskManagementService.cs
index 6194cd68..b6d7dbf2 100644
--- a/PARR.Core/Services/TaskServices/Implementations/TaskManagementService.cs
+++ b/PARR.Core/Services/TaskServices/Implementations/TaskManagementService.cs
@@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PARR.Core.Common.Interfaces.RabbitServices;
using PARR.Core.Repositories.Interfaces.TaskRepositories;
+using PARR.Core.Services.TaskServices.Helpers;
using PARR.Core.Services.TaskServices.Interfaces;
using PARR.Domain.Common.Rabbit.Messages;
using PARR.Domain.DTOs.TaskDTO;
@@ -112,18 +113,20 @@ namespace PARR.Core.Services.TaskServices.Implementations
public async Task> GetActiveTasksAsync(TaskTypeEnum? typeCode = null)
{
- var query = taskRepository.Get()
- .AsNoTracking()
- .Include(t => t.TaskStatus)
- .Include(t => t.TaskType)
- .Where(t => t.StatusCode == TaskItemStatusEnum.Pending || t.StatusCode == TaskItemStatusEnum.Processing);
+ //var query = taskRepository.Get()
+ // .AsNoTracking()
+ // .Include(t => t.TaskStatus)
+ // .Include(t => t.TaskType)
+ // .Where(t => t.StatusCode == TaskItemStatusEnum.Pending || t.StatusCode == TaskItemStatusEnum.Processing);
- if (typeCode.HasValue)
- query = query.Where(t => t.TypeCode == typeCode.Value);
+ //if (typeCode.HasValue)
+ // query = query.Where(t => t.TypeCode == typeCode.Value);
- var tasks = await query.OrderByDescending(t => t.DateCreated).ToListAsync();
+ //var tasks = await query.OrderByDescending(t => t.DateCreated).ToListAsync();
- return mapper.Map>(tasks);
+ //return mapper.Map>(tasks);
+
+ return await TaskManagementHelpers.GetActiveTasksAsync(taskRepository, mapper, typeCode);
}
diff --git a/PARR.Core/Services/TaskServices/Implementations/TaskReconciliationService.cs b/PARR.Core/Services/TaskServices/Implementations/TaskReconciliationService.cs
index f0820e29..265d3272 100644
--- a/PARR.Core/Services/TaskServices/Implementations/TaskReconciliationService.cs
+++ b/PARR.Core/Services/TaskServices/Implementations/TaskReconciliationService.cs
@@ -177,6 +177,7 @@ namespace PARR.Core.Services.TaskServices.Implementations
task.RetryCount++;
task.DateModified = DateTimeOffset.UtcNow;
+ task.ProgressPercent = 0;
await taskRepository.CommitAsync();
diff --git a/PARR.Core/Services/Workload/Implementations/WorkloadCacheService.cs b/PARR.Core/Services/Workload/Implementations/WorkloadCacheService.cs
index aeadd86d..db1d7ce4 100644
--- a/PARR.Core/Services/Workload/Implementations/WorkloadCacheService.cs
+++ b/PARR.Core/Services/Workload/Implementations/WorkloadCacheService.cs
@@ -82,7 +82,7 @@ namespace PARR.Core.Services.Workload.Implementations
/// КЭШ рабочих групп и зон ответственности
///
///
- public async Task CreateTemplateCacheAsync()
+ public async Task CreateTemplateCacheAsync(IProgressAsync progress)
{
var dtStart = DateTimeOffset.UtcNow;
@@ -97,10 +97,25 @@ namespace PARR.Core.Services.Workload.Implementations
logger.LogInformation("Получил из БД шаблонов {TemplateCount} шт.", templates.Count);
+ //Ставим сразу 5% - получили из БД
+ await progress.ReportAsync(5);
+
+
+ if (templates.Count == 0)
+ {
+ logger.LogWarning("Список шаблонов пуст, кэш не формируется");
+ await progress.ReportAsync(100);
+ return;
+ }
+
//2. Получить по каждому шаблону ЗО и РГ
var cacheData = new List();
int templateCount = 0;
+ int totalTemplates = templates.Count;
+ // последний отправленный процент
+ int lastReportedPercent = 5;
+
foreach (var template in templates)
{
var (workGroup, responseArea) = await ApplyShortcodesAsync(template);
@@ -116,8 +131,26 @@ namespace PARR.Core.Services.Workload.Implementations
cacheData.Add(cacheItem);
templateCount++;
+
+ #region Расчет и отрпавка прогресса
+ // Считаем текущий процент(0 - 100). Этап идёт от 5% до 95%
+ var currentPercent = 5 + (int)((templateCount * 90.0) / totalTemplates);
+
+ // Округляем вниз до кратного 5 (33→30, 37→35, 99→95)
+ var roundedPercent = (currentPercent / 5) * 5;
+
+ // Отправляем, только если прогресс реально изменился (защита от дублей)
+ if (roundedPercent > lastReportedPercent && roundedPercent <= 95)
+ {
+ await progress.ReportAsync(roundedPercent);
+ lastReportedPercent = roundedPercent;
+ }
+ #endregion
}
+ //95%
+ await progress.ReportAsync(95);
+
//3. Сохранить в Redis
logger.LogDebug("Для сохранения в Redis подготовлен массив из {Count} строк", cacheData.Count);
var hashKey = redisCacheService.GetKey(cacheTemplateKey);
@@ -127,6 +160,8 @@ namespace PARR.Core.Services.Workload.Implementations
await redisCacheService.SetHashFieldAsync(hashKey, item.Data.TemplateId.ToString(), item, cacheTemplateTtl);
}
+ await progress.ReportAsync(100);
+
var duration = DateTimeOffset.UtcNow - dtStart;
logger.LogInformation("Завершено формирование кэша. Key: {HashKey}, ttl: {Ttl}, кол-во записей: {CacheCount}. Продолжительность формирования КЭШ {Duration}", hashKey, cacheTemplateTtl, cacheData.Count, duration);
}
diff --git a/PARR.Core/Services/Workload/Implementations/WorkloadService.cs b/PARR.Core/Services/Workload/Implementations/WorkloadService.cs
index 7e6ebefc..c2c46308 100644
--- a/PARR.Core/Services/Workload/Implementations/WorkloadService.cs
+++ b/PARR.Core/Services/Workload/Implementations/WorkloadService.cs
@@ -1,9 +1,10 @@
-using Microsoft.Extensions.Logging;
+using AutoMapper;
+using Microsoft.Extensions.Logging;
+using PARR.Core.Repositories.Interfaces.TaskRepositories;
using PARR.Core.Services.NextRunServices;
-using PARR.Core.Services.TaskServices.Interfaces;
+using PARR.Core.Services.TaskServices.Helpers;
using PARR.Core.Services.Workload.Interfaces;
using PARR.Core.Services.Workload.Models;
-using PARR.Domain.DTOs.TaskDTO;
using PARR.Domain.DTOs.Workload;
using PARR.Domain.Enums;
@@ -14,19 +15,26 @@ namespace PARR.Core.Services.Workload.Implementations
private readonly ILogger logger;
private readonly WorkloadCacheService workloadCacheService;
private readonly INextRunService nextRunService;
- private readonly ITaskManagementService taskManagementService;
+ private readonly ITaskRepository taskRepository;
+ private readonly IMapper mapper;
+
+ //private readonly ITaskManagementService taskManagementService;
public WorkloadService(
ILogger logger,
WorkloadCacheService workloadCacheService,
INextRunService nextRunService,
- ITaskManagementService taskManagementService
+ ITaskRepository taskRepository,
+ IMapper mapper
+ //ITaskManagementService taskManagementService
)
{
this.logger = logger;
this.workloadCacheService = workloadCacheService;
this.nextRunService = nextRunService;
- this.taskManagementService = taskManagementService;
+ this.taskRepository = taskRepository;
+ this.mapper = mapper;
+ //this.taskManagementService = taskManagementService;
}
@@ -122,14 +130,15 @@ namespace PARR.Core.Services.Workload.Implementations
// 1. проверить что выполнились все задания на обновление кэш
- var activeTasks = await taskManagementService.GetActiveTasksAsync(TaskTypeEnum.Workload);
+ //var activeTasks = await taskManagementService.GetActiveTasksAsync(TaskTypeEnum.Workload);
+ var activeTasks = await TaskManagementHelpers.GetActiveTasksAsync(taskRepository, mapper, TaskTypeEnum.Workload);
if (activeTasks.Count > 0)
{
// идет формирование отчета
// задача может быт только одна, так как у нее такой тип
var task = activeTasks.First();
- return new WorkloadCacheInfo { Status = WorkloadCacheInfo.StatusEnum.Processing, Date = task.DateCreated };
+ return new WorkloadCacheInfo { Status = WorkloadCacheInfo.StatusEnum.Processing, Date = task.DateCreated, ProgressPercent = task.ProgressPercent };
}
// 2. получить дату кэш
diff --git a/PARR.DAL/Migrations/20260519233448_tblTaskItemAddProgressPercent.Designer.cs b/PARR.DAL/Migrations/20260519233448_tblTaskItemAddProgressPercent.Designer.cs
new file mode 100644
index 00000000..0dcb3ec3
--- /dev/null
+++ b/PARR.DAL/Migrations/20260519233448_tblTaskItemAddProgressPercent.Designer.cs
@@ -0,0 +1,3818 @@
+//
+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("20260519233448_tblTaskItemAddProgressPercent")]
+ partial class tblTaskItemAddProgressPercent
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.16")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("PARR.Domain.Entities.AgentHistory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("HistoryLevelId")
+ .HasColumnType("integer");
+
+ b.Property("Message")
+ .HasColumnType("text");
+
+ b.Property("OrderId")
+ .HasColumnType("uuid");
+
+ b.Property("TemplateId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("HistoryLevelId");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("TemplateId");
+
+ b.ToTable("AgentHistories");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.AgentHistoryLevel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("AgentHistoryLevels");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Description = "Агент начал выполнять задание",
+ Name = "Start"
+ },
+ new
+ {
+ Id = 5,
+ Description = "Агент завершил выполнение задания",
+ Name = "End"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.DistributionPeriod", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Duration")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Type");
+
+ b.ToTable("DistributionPeriods", "schedule");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("9bd0bfa8-c316-480b-a001-e09ffe8c9340"),
+ Duration = "7",
+ Name = "Еженедельно",
+ Type = "Day"
+ },
+ new
+ {
+ Id = new Guid("3a7341a8-085c-461c-babc-6b78dd5d2c67"),
+ Duration = "30",
+ Name = "Ежемесячно",
+ Type = "Day"
+ },
+ new
+ {
+ Id = new Guid("0ad2dfdb-3833-46d9-979a-c408b7eadc6c"),
+ Duration = "90",
+ Name = "Каждые 90 дней",
+ Type = "Day"
+ },
+ new
+ {
+ Id = new Guid("31dd3947-8471-4f09-852c-a4f075f1ba7f"),
+ Duration = "182",
+ Name = "Каждые пол года",
+ Type = "Day"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.DistributionPeriodType", b =>
+ {
+ b.Property("Type")
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Type");
+
+ b.ToTable("DistributionPeriodTypes", "schedule");
+
+ b.HasData(
+ new
+ {
+ Type = "Day",
+ Description = "День"
+ },
+ new
+ {
+ Type = "Month",
+ Description = "Месяц"
+ },
+ new
+ {
+ Type = "Year",
+ Description = "Год"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.Job", 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("GroupId")
+ .HasColumnType("uuid");
+
+ b.Property("IsParentRelationships")
+ .HasColumnType("boolean");
+
+ b.Property("MaxValueRelationships")
+ .HasColumnType("integer");
+
+ b.Property("MinValueRelationships")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ResponseAreaMask")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TemplateNameMask")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TnkId")
+ .HasColumnType("uuid");
+
+ b.Property("WorkGroupMask")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("WorkName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GroupId");
+
+ b.HasIndex("TnkId");
+
+ b.ToTable("Jobs", "job", t =>
+ {
+ t.HasComment("Таблица видов работ");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobAutoControl", b =>
+ {
+ b.Property("JobId")
+ .HasColumnType("uuid");
+
+ b.Property("InitUsedScheduleState")
+ .HasColumnType("boolean");
+
+ b.Property("InitUsedTemplateState")
+ .HasColumnType("boolean");
+
+ b.Property("IsEnable")
+ .HasColumnType("boolean");
+
+ b.HasKey("JobId");
+
+ b.ToTable("AutoControls", "job", t =>
+ {
+ t.HasComment("Таблица управления автоконтролем для работ");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobFieldFilter", 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("FieldId")
+ .HasColumnType("uuid");
+
+ b.Property("IsInverse")
+ .HasColumnType("boolean");
+
+ b.Property("UnitFilterId")
+ .HasColumnType("uuid");
+
+ b.Property("ValueMask")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FieldId");
+
+ b.HasIndex("UnitFilterId");
+
+ b.ToTable("FieldFilters", "job", t =>
+ {
+ t.HasComment("Таблица описания критериев выборки аттрибутов ЭК");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroup", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AgentName")
+ .HasColumnType("text");
+
+ b.Property("AgentScript")
+ .HasColumnType("text");
+
+ b.Property("AgentTimeOutSec")
+ .HasColumnType("integer");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("FullDescription")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("GroupName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("GroupTypeId")
+ .HasColumnType("uuid");
+
+ b.Property("GroupingUnitFieldId")
+ .HasColumnType("uuid");
+
+ b.Property("IsAgent")
+ .HasColumnType("boolean");
+
+ b.Property("IsAutoDistributionEnabled")
+ .HasColumnType("boolean");
+
+ b.Property("IsGroupByResponsible")
+ .HasColumnType("boolean");
+
+ b.Property("IsResponseAreaTimezone")
+ .HasColumnType("boolean");
+
+ b.Property("ReferenceDate")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ScheduleExcludeTypeCalendarId")
+ .HasColumnType("uuid");
+
+ b.Property("ScheduleExcludeTypeId")
+ .HasColumnType("uuid");
+
+ b.Property("ShortDescription")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Solution")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TemplateDuration")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("UserTimeZoneOffsetMinutes")
+ .HasColumnType("integer")
+ .HasComment("Смещение часового пояса пользователя в минутах относительно UTC на момент ReferenceDate");
+
+ b.HasKey("Id");
+
+ b.HasIndex("GroupTypeId");
+
+ b.HasIndex("GroupingUnitFieldId");
+
+ b.HasIndex("ScheduleExcludeTypeCalendarId");
+
+ b.HasIndex("ScheduleExcludeTypeId");
+
+ b.ToTable("Groups", "job", t =>
+ {
+ t.HasComment("Таблица описания групп работ, для реализации зонтиков");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroupDistributionConfig", b =>
+ {
+ b.Property("GroupId")
+ .HasColumnType("uuid");
+
+ b.Property("DistributionPeriodId")
+ .HasColumnType("uuid");
+
+ b.Property("IsExcludeWeekends")
+ .HasColumnType("boolean");
+
+ b.Property("IsGroupingByWorkGroup")
+ .HasColumnType("boolean");
+
+ b.HasKey("GroupId");
+
+ b.HasIndex("DistributionPeriodId");
+
+ b.ToTable("GroupDistributionConfigs", "job", t =>
+ {
+ t.HasComment("Настройки автораспределения для группы работ");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobGroupType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Code")
+ .HasColumnType("integer");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("GroupTypes", "job", t =>
+ {
+ t.HasComment("Таблица типов групп работ");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("4fa62e79-86bb-47c2-be1a-72a716a170fa"),
+ Code = 0,
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Обычный",
+ Name = "Simple"
+ },
+ new
+ {
+ Id = new Guid("6ec58b1a-5c40-47b9-b036-4fa490e8d503"),
+ Code = 1,
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Зонтик",
+ Name = "Umbrella"
+ },
+ new
+ {
+ Id = new Guid("318625e5-f833-436a-99df-2a382a1e71c7"),
+ Code = 2,
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Сгруппированный",
+ Name = "Group"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobRelationshipFilter", b =>
+ {
+ b.Property("UnitFilterId")
+ .HasColumnType("uuid");
+
+ b.Property("FieldId")
+ .HasColumnType("uuid");
+
+ b.Property("IsFullMatch")
+ .HasColumnType("boolean");
+
+ b.Property("IsInverse")
+ .HasColumnType("boolean");
+
+ b.Property("IsParent")
+ .HasColumnType("boolean");
+
+ b.Property("ValueMask")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("UnitFilterId", "FieldId");
+
+ b.HasIndex("FieldId");
+
+ b.ToTable("RelationshipFilters", "job", t =>
+ {
+ t.HasComment("Таблица фильтров связей ЭК");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.JobUnitFilter", 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("JobId")
+ .HasColumnType("uuid");
+
+ b.Property("UnitFilter")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("JobId");
+
+ b.ToTable("UnitFilters", "job", t =>
+ {
+ t.HasComment("Таблица описания критериев выборки ЭК, описание полей в АСУ ЕСПП");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Job.UnitsInTemplate", b =>
+ {
+ b.Property("TemplateId")
+ .HasColumnType("uuid");
+
+ b.Property("UnitId")
+ .HasColumnType("uuid");
+
+ b.Property("UnitFieldValueId")
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.HasKey("TemplateId", "UnitId", "UnitFieldValueId");
+
+ b.HasIndex("UnitFieldValueId");
+
+ b.HasIndex("UnitId");
+
+ b.ToTable("UnitsInTemplates", "job", t =>
+ {
+ t.HasComment("Таблица связи ЭК в шаблонах");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Order", 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("ExpirationDate")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("GenerateDate")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("NextStatusCode")
+ .HasColumnType("integer");
+
+ b.Property("Number")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ShortName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("StatusCode")
+ .HasColumnType("integer");
+
+ b.Property("TemplateId")
+ .HasColumnType("uuid");
+
+ b.Property("WorkGroup")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NextStatusCode");
+
+ b.HasIndex("Number")
+ .IsUnique();
+
+ b.HasIndex("StatusCode");
+
+ b.HasIndex("TemplateId");
+
+ b.ToTable("Orders");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.OrderStatus", 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("OrderStatuses");
+
+ b.HasData(
+ new
+ {
+ Code = 1,
+ Description = "1-Направлен в группу",
+ Name = "New"
+ },
+ new
+ {
+ Code = 2,
+ Description = "2-В работе",
+ Name = "InWork"
+ },
+ new
+ {
+ Code = 3,
+ Description = "3-Приостановлен",
+ Name = "Stop"
+ },
+ new
+ {
+ Code = 4,
+ Description = "4-Выполнен",
+ Name = "Complete"
+ },
+ new
+ {
+ Code = 5,
+ Description = "5-Закрыт",
+ Name = "Closed"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.ParrComponent", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Name")
+ .IsUnique();
+
+ b.ToTable("ParrComponents");
+
+ b.HasData(
+ new
+ {
+ Id = 0,
+ Description = "API",
+ Name = "Api"
+ },
+ new
+ {
+ Id = 1,
+ Description = "Загрузчик из АИХИТ",
+ Name = "AihitLoader"
+ },
+ new
+ {
+ Id = 2,
+ Description = "Синхронизатор АИХИТ",
+ Name = "AihitSyncer"
+ },
+ new
+ {
+ Id = 3,
+ Description = "Загрузчик нарядов из ЕСПП",
+ Name = "EsppOrderLoader"
+ },
+ new
+ {
+ Id = 4,
+ Description = "Управление нарядами ЕСПП",
+ Name = "EsppOrderManager"
+ },
+ new
+ {
+ Id = 5,
+ Description = "Синхронизатор расписаний",
+ Name = "EsppScheduleSync"
+ },
+ new
+ {
+ Id = 6,
+ Description = "Синхронизатор шаблонов",
+ Name = "EsppTemplateSync"
+ },
+ new
+ {
+ Id = 7,
+ Description = "Генератор шаблонов",
+ Name = "GeneratorTemplates"
+ },
+ new
+ {
+ Id = 8,
+ Description = "Авто-контроль РР",
+ Name = "JobAutoControl"
+ },
+ new
+ {
+ Id = 9,
+ Description = "Связывание нарядов ЕСПП с ПАРР (шаблонами, агентами)",
+ Name = "Master"
+ },
+ new
+ {
+ Id = 10,
+ Description = "Рассчет даты следующего срабатывания",
+ Name = "NextRun"
+ },
+ new
+ {
+ Id = 11,
+ Description = "Активатор шаблонов / расписаний",
+ Name = "TemplateActivator"
+ },
+ new
+ {
+ Id = 12,
+ Description = "Автораспределение РР",
+ Name = "TemplateDistributor"
+ },
+ new
+ {
+ Id = 13,
+ Description = "Генератор шаблонов",
+ Name = "TemplateTaskGenerator"
+ },
+ new
+ {
+ Id = 14,
+ Description = "Генератор кэша отчетов workload",
+ Name = "WorkloadBuilder"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.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.HasIndex("EsppId")
+ .IsUnique();
+
+ b.ToTable("Processes");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Robot", 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.HasIndex("Name")
+ .IsUnique();
+
+ b.ToTable("Robots");
+
+ b.HasData(
+ new
+ {
+ Code = 1,
+ Description = "Робот по созданию/изменению шаблона наряда ЕСПП",
+ Name = "TemplateOrder"
+ },
+ new
+ {
+ Code = 2,
+ Description = "Робот по созданию/изменению расписания шаблона наряда в ЕСПП",
+ Name = "ScheduleOrder"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.RobotConfiguration", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AttemptsNumber")
+ .HasColumnType("integer");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("LastRobotStatusUpdated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("RobotCode")
+ .HasColumnType("integer");
+
+ b.Property("RobotStatusCode")
+ .HasColumnType("integer");
+
+ b.Property("TaskStatusCode")
+ .HasColumnType("integer");
+
+ b.Property("TemplateId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RobotCode");
+
+ b.HasIndex("RobotStatusCode");
+
+ b.HasIndex("TaskStatusCode");
+
+ b.HasIndex("TemplateId", "RobotCode")
+ .IsUnique();
+
+ b.HasIndex("TemplateId", "RobotStatusCode");
+
+ b.HasIndex("TemplateId", "TaskStatusCode");
+
+ b.ToTable("RobotConfigurations");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.RobotHistory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppMessage")
+ .HasColumnType("text");
+
+ b.Property("HistoryLevel")
+ .HasColumnType("integer");
+
+ b.Property("RobotConfigurationId")
+ .HasColumnType("uuid");
+
+ b.Property("RobotIp")
+ .HasColumnType("text");
+
+ b.Property("RobotMessage")
+ .HasColumnType("text");
+
+ b.Property("TaskStatusCode")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DateCreated");
+
+ b.HasIndex("TaskStatusCode");
+
+ b.HasIndex("HistoryLevel", "DateCreated")
+ .IsDescending(false, true);
+
+ b.HasIndex("RobotConfigurationId", "DateCreated");
+
+ b.ToTable("RobotHistories");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.RobotHistoryLevel", b =>
+ {
+ b.Property("Level")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Level"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Level");
+
+ b.ToTable("RobotHistoryLevels");
+
+ b.HasData(
+ new
+ {
+ Level = 1,
+ Description = "Робот начал работу ",
+ Name = "Start"
+ },
+ new
+ {
+ Level = 5,
+ Description = "Информация",
+ Name = "Information"
+ },
+ new
+ {
+ Level = 10,
+ Description = "Ошибка",
+ Name = "Error"
+ },
+ new
+ {
+ Level = 15,
+ Description = "Успешно завершил работу",
+ Name = "Complete"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.RobotStatus", 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("RobotStatuses");
+
+ b.HasData(
+ new
+ {
+ Code = 11,
+ Description = "Ожидание, ждет пока робот возьмет в работу.",
+ Name = "Wait"
+ },
+ new
+ {
+ Code = 22,
+ Description = "Робот взял в работу.",
+ Name = "InProgress"
+ },
+ new
+ {
+ Code = 33,
+ Description = "Ошибка отработки роботом. Требует ручного вмешательства.",
+ Name = "Error"
+ },
+ new
+ {
+ Code = 44,
+ Description = "Робот успешно отработал.",
+ Name = "Complete"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Role", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Roles");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("c8f2f144-e6c2-45d7-ba66-5e9bbd376376"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Администратор",
+ Name = "administrator"
+ },
+ new
+ {
+ Id = new Guid("13bca225-7fa4-42fa-9d80-d2d46de261fe"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Description = "Робот ЕСПП",
+ Name = "espp-robot"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.EsppSchType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("EsppSchTypes", "schedule");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Description = "Через интервал",
+ Name = "Interval"
+ },
+ new
+ {
+ Id = 2,
+ Description = "День недели: пнд, вт...",
+ Name = "DayOfWeek"
+ },
+ new
+ {
+ Id = 3,
+ Description = "Число месяца: 1,2,3,4",
+ Name = "DayOfMonth"
+ },
+ new
+ {
+ Id = 4,
+ Description = "Каждый: первый, второй, третий, четвертый, последний",
+ Name = "Order"
+ },
+ new
+ {
+ Id = 5,
+ Description = "Месяц: январь, февраль...",
+ Name = "Month"
+ },
+ new
+ {
+ Id = 6,
+ Description = "Месяц (родительный падеж): января, февраля...",
+ Name = "MonthGenitive"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.EsppSchTypeConfig", 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("Order")
+ .HasColumnType("integer");
+
+ b.Property("TypeId")
+ .HasColumnType("integer");
+
+ b.Property("TypeScheduleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TypeId");
+
+ b.HasIndex("TypeScheduleId", "TypeId")
+ .IsUnique();
+
+ b.ToTable("EsppSchTypeConfigs", "schedule");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("d2693562-b3eb-41e9-97db-c6b5d2ef1bea"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 0,
+ TypeId = 1,
+ TypeScheduleId = 1
+ },
+ new
+ {
+ Id = new Guid("06b2e7aa-6927-4fbf-99fb-67c92a4fce8a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 0,
+ TypeId = 2,
+ TypeScheduleId = 2
+ },
+ new
+ {
+ Id = new Guid("78079071-ff80-417e-9bb0-d928cec853e7"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 0,
+ TypeId = 3,
+ TypeScheduleId = 3
+ },
+ new
+ {
+ Id = new Guid("accb1d46-e1c1-4396-9182-4c0766155921"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 0,
+ TypeId = 4,
+ TypeScheduleId = 4
+ },
+ new
+ {
+ Id = new Guid("162ffe73-2428-4abe-8f83-235c2593664c"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 1,
+ TypeId = 2,
+ TypeScheduleId = 4
+ },
+ new
+ {
+ Id = new Guid("8470d1ef-165d-42fc-ab05-8203e4d263cf"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 0,
+ TypeId = 5,
+ TypeScheduleId = 5
+ },
+ new
+ {
+ Id = new Guid("006900b5-f65c-413e-bc67-09e6dae60b7c"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 1,
+ TypeId = 3,
+ TypeScheduleId = 5
+ },
+ new
+ {
+ Id = new Guid("85635bc8-f17a-46b8-9c15-8615761be3d9"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 0,
+ TypeId = 4,
+ TypeScheduleId = 6
+ },
+ new
+ {
+ Id = new Guid("439460c2-deca-4b54-80e7-2f20806696ec"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 1,
+ TypeId = 2,
+ TypeScheduleId = 6
+ },
+ new
+ {
+ Id = new Guid("5c63ad8c-e9b4-43fd-9d24-5c2eed80dadd"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ Order = 2,
+ TypeId = 6,
+ TypeScheduleId = 6
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.EsppSchTypeSchedule", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("EsppSchTypeSchedules", "schedule");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Description = "Регулярно",
+ Name = "Regularly"
+ },
+ new
+ {
+ Id = 2,
+ Description = "Еженедельно",
+ Name = "Weekly"
+ },
+ new
+ {
+ Id = 3,
+ Description = "Ежемесячно",
+ Name = "Monthly"
+ },
+ new
+ {
+ Id = 4,
+ Description = "Ежемесячно-2",
+ Name = "Monthly2"
+ },
+ new
+ {
+ Id = 5,
+ Description = "Ежегодно",
+ Name = "Annually"
+ },
+ new
+ {
+ Id = 6,
+ Description = "Ежегодно-2",
+ Name = "Annually2"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.EsppSchTypeValue", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppExportValue")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Order")
+ .HasColumnType("integer");
+
+ b.Property("TypeId")
+ .HasColumnType("integer");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TypeId");
+
+ b.ToTable("EsppSchTypeValues", "schedule");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("6e3b5dd2-b2f7-40bc-bace-15bfa6bbd4ff"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "01:00:00",
+ Order = 0,
+ TypeId = 1,
+ Value = "Каждый час"
+ },
+ new
+ {
+ Id = new Guid("4df04834-f14f-43d9-8984-334f080f4107"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "02:00:00",
+ Order = 1,
+ TypeId = 1,
+ Value = "Каждые 2 часа"
+ },
+ new
+ {
+ Id = new Guid("dab6e3f9-2385-4966-b77c-133ad233c592"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "03:00:00",
+ Order = 2,
+ TypeId = 1,
+ Value = "Каждые 3 часа"
+ },
+ new
+ {
+ Id = new Guid("035f485d-8451-47df-bfaa-ba4dd36cf146"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "04:00:00",
+ Order = 3,
+ TypeId = 1,
+ Value = "Каждые 4 часа"
+ },
+ new
+ {
+ Id = new Guid("d627daa7-3eed-4571-acae-ffbb3c5bedb9"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "06:00:00",
+ Order = 4,
+ TypeId = 1,
+ Value = "Каждые 6 часов"
+ },
+ new
+ {
+ Id = new Guid("ae0a0015-0f1e-4496-b71e-6244f7e321e7"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "12:00:00",
+ Order = 5,
+ TypeId = 1,
+ Value = "Каждые 12 часов"
+ },
+ new
+ {
+ Id = new Guid("8df097aa-9860-4a62-9675-a8eecd3f2ce7"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1 00:00:00",
+ Order = 6,
+ TypeId = 1,
+ Value = "Ежедневно"
+ },
+ new
+ {
+ Id = new Guid("dee32e60-c1a1-4206-98bc-aa03deabfdf6"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "3 00:00:00",
+ Order = 7,
+ TypeId = 1,
+ Value = "Каждые 72 часа"
+ },
+ new
+ {
+ Id = new Guid("e0465fbf-e3a5-4486-9f53-5bb85c6feeca"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "4 00:00:00",
+ Order = 8,
+ TypeId = 1,
+ Value = "Каждые 96 часов"
+ },
+ new
+ {
+ Id = new Guid("4e3f73d1-a0f3-4dd1-bca9-68ada0dd5ce2"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "14 00:00:00",
+ Order = 9,
+ TypeId = 1,
+ Value = "Каждые 2 недели"
+ },
+ new
+ {
+ Id = new Guid("55833417-6a24-42f6-bcc2-5d032f883202"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "60 00:00:00",
+ Order = 10,
+ TypeId = 1,
+ Value = "Каждые 60 дней"
+ },
+ new
+ {
+ Id = new Guid("7fefa052-29db-4ce5-9c57-2fd9ff855f21"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "80 00:00:00",
+ Order = 11,
+ TypeId = 1,
+ Value = "Каждые 80 дней"
+ },
+ new
+ {
+ Id = new Guid("b0ca99f9-5ee0-45b3-bb80-948f82b1fcb1"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "90 00:00:00",
+ Order = 12,
+ TypeId = 1,
+ Value = "Каждые 90 дней"
+ },
+ new
+ {
+ Id = new Guid("086f7a37-9848-423a-a3cc-36dbb5ad43e3"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "182 00:00:00",
+ Order = 13,
+ TypeId = 1,
+ Value = "Каждые полгода"
+ },
+ new
+ {
+ Id = new Guid("f2da9e02-d619-4517-a598-374880a8c8e8"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "540 00:00:00",
+ Order = 14,
+ TypeId = 1,
+ Value = "Каждые 1,5 года"
+ },
+ new
+ {
+ Id = new Guid("f38d7d30-8923-4ea0-aa7c-5b251e19ab61"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1095 00:00:00",
+ Order = 15,
+ TypeId = 1,
+ Value = "Каждые 3 года"
+ },
+ new
+ {
+ Id = new Guid("b7303461-9a30-43fa-8e55-305aa13f186f"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1",
+ Order = 0,
+ TypeId = 2,
+ Value = "Понедельник"
+ },
+ new
+ {
+ Id = new Guid("e951135e-71f2-4262-9342-df4d5315ab6c"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "2",
+ Order = 1,
+ TypeId = 2,
+ Value = "Вторник"
+ },
+ new
+ {
+ Id = new Guid("c34d5375-70e7-4632-b3af-30e279a0621a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "3",
+ Order = 2,
+ TypeId = 2,
+ Value = "Среда"
+ },
+ new
+ {
+ Id = new Guid("ec9540df-c2de-4bda-a063-34d02d4b6e03"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "4",
+ Order = 3,
+ TypeId = 2,
+ Value = "Четверг"
+ },
+ new
+ {
+ Id = new Guid("2ed85534-4684-4eb2-9ccb-e264d212c945"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "5",
+ Order = 4,
+ TypeId = 2,
+ Value = "Пятница"
+ },
+ new
+ {
+ Id = new Guid("a6804315-96ef-484e-82ee-c5795694468b"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "6",
+ Order = 5,
+ TypeId = 2,
+ Value = "Суббота"
+ },
+ new
+ {
+ Id = new Guid("eb71e699-937f-4894-9688-f7a7f95e5e58"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "7",
+ Order = 6,
+ TypeId = 2,
+ Value = "Воскресенье"
+ },
+ new
+ {
+ Id = new Guid("e86adbfb-3345-4e0c-aa3b-b4418f9cfe88"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1",
+ Order = 0,
+ TypeId = 3,
+ Value = "1"
+ },
+ new
+ {
+ Id = new Guid("5b4d7ca6-31e7-475b-b7c8-13c6680c3dc3"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "2",
+ Order = 1,
+ TypeId = 3,
+ Value = "2"
+ },
+ new
+ {
+ Id = new Guid("0da03db0-9404-425d-bea1-5da0c9b60b59"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "3",
+ Order = 2,
+ TypeId = 3,
+ Value = "3"
+ },
+ new
+ {
+ Id = new Guid("199474c8-0a77-47e5-aab8-ba33c216cc9e"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "4",
+ Order = 3,
+ TypeId = 3,
+ Value = "4"
+ },
+ new
+ {
+ Id = new Guid("e6619da1-f7e8-45b9-bbd3-9c17bec2ccd3"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "5",
+ Order = 4,
+ TypeId = 3,
+ Value = "5"
+ },
+ new
+ {
+ Id = new Guid("a8708763-c838-49a5-95fe-bf4f73518d71"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "6",
+ Order = 5,
+ TypeId = 3,
+ Value = "6"
+ },
+ new
+ {
+ Id = new Guid("7ec056aa-820c-4900-96cb-4564d2ea6398"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "7",
+ Order = 6,
+ TypeId = 3,
+ Value = "7"
+ },
+ new
+ {
+ Id = new Guid("554d7d0c-91b1-4b81-b94d-1ee864192962"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "8",
+ Order = 7,
+ TypeId = 3,
+ Value = "8"
+ },
+ new
+ {
+ Id = new Guid("8b7847a4-23de-4199-8aad-3b5c0323b5a2"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "9",
+ Order = 8,
+ TypeId = 3,
+ Value = "9"
+ },
+ new
+ {
+ Id = new Guid("fb7f41ca-950b-4dc1-a0a6-bd9a221ab2ad"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "10",
+ Order = 9,
+ TypeId = 3,
+ Value = "10"
+ },
+ new
+ {
+ Id = new Guid("a28b530f-ea38-4a2c-a16b-0b7fa3770d3c"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "11",
+ Order = 10,
+ TypeId = 3,
+ Value = "11"
+ },
+ new
+ {
+ Id = new Guid("7a004a11-32e1-40ae-ab35-0d3dc3a69785"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "12",
+ Order = 11,
+ TypeId = 3,
+ Value = "12"
+ },
+ new
+ {
+ Id = new Guid("e0f2f4d1-4a5e-4997-8336-83c3c35f38df"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "13",
+ Order = 12,
+ TypeId = 3,
+ Value = "13"
+ },
+ new
+ {
+ Id = new Guid("9c5aaf48-88ec-4c67-b936-2be45550f8bf"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "14",
+ Order = 13,
+ TypeId = 3,
+ Value = "14"
+ },
+ new
+ {
+ Id = new Guid("8dbd680c-ce49-4d2e-8a1a-05619685e240"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "15",
+ Order = 14,
+ TypeId = 3,
+ Value = "15"
+ },
+ new
+ {
+ Id = new Guid("2f476f70-b1ef-419d-aad5-3911f1e3231f"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "16",
+ Order = 15,
+ TypeId = 3,
+ Value = "16"
+ },
+ new
+ {
+ Id = new Guid("2c635ce2-fc18-47be-b3e9-98c211abf312"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "17",
+ Order = 16,
+ TypeId = 3,
+ Value = "17"
+ },
+ new
+ {
+ Id = new Guid("f9d5b03b-624a-4f9f-8da3-1490ea5d2914"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "18",
+ Order = 17,
+ TypeId = 3,
+ Value = "18"
+ },
+ new
+ {
+ Id = new Guid("4f4b249c-db60-4582-86ed-75cfee4edd0c"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "19",
+ Order = 18,
+ TypeId = 3,
+ Value = "19"
+ },
+ new
+ {
+ Id = new Guid("220a1464-4d39-416c-b4b2-3093eb007298"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "20",
+ Order = 19,
+ TypeId = 3,
+ Value = "20"
+ },
+ new
+ {
+ Id = new Guid("c887ca60-b05d-4d3c-ad1f-223c879b1a6d"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "21",
+ Order = 20,
+ TypeId = 3,
+ Value = "21"
+ },
+ new
+ {
+ Id = new Guid("2905765d-63fb-41fe-a111-ee2f1d03d62e"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "22",
+ Order = 21,
+ TypeId = 3,
+ Value = "22"
+ },
+ new
+ {
+ Id = new Guid("dbbe704a-8d6d-40e7-bd30-6974035b1fab"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "23",
+ Order = 22,
+ TypeId = 3,
+ Value = "23"
+ },
+ new
+ {
+ Id = new Guid("cf7b9645-52ed-43a2-8267-267e0aed19b1"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "24",
+ Order = 23,
+ TypeId = 3,
+ Value = "24"
+ },
+ new
+ {
+ Id = new Guid("454788d6-d0ad-4c07-878c-da3fd3cd05e1"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "25",
+ Order = 24,
+ TypeId = 3,
+ Value = "25"
+ },
+ new
+ {
+ Id = new Guid("40d70d73-8582-4be6-a9e6-503b96ae3d49"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "26",
+ Order = 25,
+ TypeId = 3,
+ Value = "26"
+ },
+ new
+ {
+ Id = new Guid("8f6610dc-ef46-4842-a57e-18d7aaa75931"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "27",
+ Order = 26,
+ TypeId = 3,
+ Value = "27"
+ },
+ new
+ {
+ Id = new Guid("03858472-d4ce-47fd-9497-8051728766e4"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "28",
+ Order = 27,
+ TypeId = 3,
+ Value = "28"
+ },
+ new
+ {
+ Id = new Guid("b1018e07-e90e-42ee-b399-19f3d0c14dd6"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "29",
+ Order = 28,
+ TypeId = 3,
+ Value = "29"
+ },
+ new
+ {
+ Id = new Guid("a1669207-aa31-40fe-98d0-d941008d1655"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "30",
+ Order = 29,
+ TypeId = 3,
+ Value = "30"
+ },
+ new
+ {
+ Id = new Guid("0936aa99-73e0-43de-b6df-334c1228a226"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "31",
+ Order = 30,
+ TypeId = 3,
+ Value = "31"
+ },
+ new
+ {
+ Id = new Guid("626ca076-f09e-4a7a-8610-b7de6337b24a"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1",
+ Order = 0,
+ TypeId = 4,
+ Value = "Первый"
+ },
+ new
+ {
+ Id = new Guid("032fbd02-67d0-4b8c-bed0-42629ab7113b"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "2",
+ Order = 1,
+ TypeId = 4,
+ Value = "Второй"
+ },
+ new
+ {
+ Id = new Guid("fa8a8f60-e41e-495e-ac86-35174d9976bf"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "3",
+ Order = 2,
+ TypeId = 4,
+ Value = "Третий"
+ },
+ new
+ {
+ Id = new Guid("d2f90168-2b49-42f2-820b-79db2c522adf"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "4",
+ Order = 3,
+ TypeId = 4,
+ Value = "Четвертый"
+ },
+ new
+ {
+ Id = new Guid("12bb8db2-cf7f-4113-baff-6883770f1ba5"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "5",
+ Order = 4,
+ TypeId = 4,
+ Value = "Последний"
+ },
+ new
+ {
+ Id = new Guid("18260e91-3fbe-4401-9edc-78dbc419370e"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1",
+ Order = 0,
+ TypeId = 5,
+ Value = "Январь"
+ },
+ new
+ {
+ Id = new Guid("361526aa-3e1c-452e-bb44-0ade8521830d"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "2",
+ Order = 1,
+ TypeId = 5,
+ Value = "Февраль"
+ },
+ new
+ {
+ Id = new Guid("fad4bdb0-6c51-4810-a30b-6d031a0d4c46"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "3",
+ Order = 2,
+ TypeId = 5,
+ Value = "Март"
+ },
+ new
+ {
+ Id = new Guid("06ab835d-3d3e-4057-8422-a553b6b40995"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "4",
+ Order = 3,
+ TypeId = 5,
+ Value = "Апрель"
+ },
+ new
+ {
+ Id = new Guid("83f56b5d-b16b-4aa5-89d7-a253fee4e4ad"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "5",
+ Order = 4,
+ TypeId = 5,
+ Value = "Май"
+ },
+ new
+ {
+ Id = new Guid("e679ec84-a9ee-4bed-a051-2b14edddcb18"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "6",
+ Order = 5,
+ TypeId = 5,
+ Value = "Июнь"
+ },
+ new
+ {
+ Id = new Guid("d439808a-6a10-409b-8809-a755b7cca60b"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "7",
+ Order = 6,
+ TypeId = 5,
+ Value = "Июль"
+ },
+ new
+ {
+ Id = new Guid("6e9972c4-6bf7-4fe4-b4ea-bbb333fb69c8"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "8",
+ Order = 7,
+ TypeId = 5,
+ Value = "Август"
+ },
+ new
+ {
+ Id = new Guid("0883aac2-9d5b-4098-b672-c684d2a3a0c9"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "9",
+ Order = 8,
+ TypeId = 5,
+ Value = "Сентябрь"
+ },
+ new
+ {
+ Id = new Guid("5e6592bc-acb2-45a4-979b-fdecf8457453"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "10",
+ Order = 9,
+ TypeId = 5,
+ Value = "Октябрь"
+ },
+ new
+ {
+ Id = new Guid("edd7cb49-d6a0-4969-b2d6-1967da69b336"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "11",
+ Order = 10,
+ TypeId = 5,
+ Value = "Ноябрь"
+ },
+ new
+ {
+ Id = new Guid("dd695fb2-4ad0-4cda-a4df-e15059c56b24"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "12",
+ Order = 11,
+ TypeId = 5,
+ Value = "Декабрь"
+ },
+ new
+ {
+ Id = new Guid("2f473624-4eb3-49b4-a4b9-cc7fc08a50f5"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "1",
+ Order = 0,
+ TypeId = 6,
+ Value = "Января"
+ },
+ new
+ {
+ Id = new Guid("f0003490-a249-44bd-814f-4566999915d8"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "2",
+ Order = 1,
+ TypeId = 6,
+ Value = "Февраля"
+ },
+ new
+ {
+ Id = new Guid("f4c3fe38-aeaa-42f7-a9ba-190ea2dfe339"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "3",
+ Order = 2,
+ TypeId = 6,
+ Value = "Марта"
+ },
+ new
+ {
+ Id = new Guid("06a8bd2f-68e1-42f5-961c-ac3b98a2181e"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "4",
+ Order = 3,
+ TypeId = 6,
+ Value = "Апреля"
+ },
+ new
+ {
+ Id = new Guid("963b9c41-d607-444a-9fe0-fe429590e326"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "5",
+ Order = 4,
+ TypeId = 6,
+ Value = "Мая"
+ },
+ new
+ {
+ Id = new Guid("ec8554c8-dee4-49a1-b1b7-474ad8ec1473"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "6",
+ Order = 5,
+ TypeId = 6,
+ Value = "Июня"
+ },
+ new
+ {
+ Id = new Guid("e15c7c63-e29f-41a3-9c82-f70eb6c24fde"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "7",
+ Order = 6,
+ TypeId = 6,
+ Value = "Июля"
+ },
+ new
+ {
+ Id = new Guid("0b1f3cea-301a-4d74-9ce1-2cd93b41897d"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "8",
+ Order = 7,
+ TypeId = 6,
+ Value = "Августа"
+ },
+ new
+ {
+ Id = new Guid("e2fa3769-f66f-4753-a161-35adad7717a5"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "9",
+ Order = 8,
+ TypeId = 6,
+ Value = "Сентября"
+ },
+ new
+ {
+ Id = new Guid("c1de4aca-9f49-48ae-9279-cf9ec4092112"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "10",
+ Order = 9,
+ TypeId = 6,
+ Value = "Октября"
+ },
+ new
+ {
+ Id = new Guid("a74b9ebd-bcd8-4537-b371-194de2fe0a4d"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "11",
+ Order = 10,
+ TypeId = 6,
+ Value = "Ноября"
+ },
+ new
+ {
+ Id = new Guid("852a5ebd-4545-494b-bc69-c27409a41adc"),
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppExportValue = "12",
+ Order = 11,
+ TypeId = 6,
+ Value = "Декабря"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.EsppSchValue", b =>
+ {
+ b.Property("JobGroupId")
+ .HasColumnType("uuid");
+
+ b.Property("TypeValueId")
+ .HasColumnType("uuid");
+
+ b.Property("TypeConfigId")
+ .HasColumnType("uuid");
+
+ b.HasKey("JobGroupId", "TypeValueId", "TypeConfigId");
+
+ b.HasIndex("TypeConfigId");
+
+ b.HasIndex("TypeValueId");
+
+ b.ToTable("EsppSchValues", "schedule");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.ScheduleExcludeType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Code")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("EsppValue")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("ExcludeTypes", "schedule", t =>
+ {
+ t.HasComment("Расписание регламентной работы - Тип исключения");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("0595b8e0-f322-4661-b5e3-064af8fbe7cd"),
+ Code = "None",
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppName = "Нет исключений",
+ EsppValue = "NONE",
+ Title = "Нет исключений"
+ },
+ new
+ {
+ Id = new Guid("2b7a4356-9aaf-4e00-b444-42f0b5010e25"),
+ Code = "Only",
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppName = "Выполнить ТОЛЬКО В указанном календаре",
+ EsppValue = "ONLY",
+ Title = "Выполнить ТОЛЬКО В указанном календаре"
+ },
+ new
+ {
+ Id = new Guid("38cd9e64-27c1-4672-a805-2211952a48bd"),
+ Code = "Except",
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppName = "Выполнить везде, КРОМЕ указанного календаря",
+ EsppValue = "EXCEPT",
+ Title = "Выполнить везде, КРОМЕ указанного календаря"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.ScheduleExcludeTypeCalendar", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Code")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("EsppName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("EsppValue")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("ExcludeTypeCalendars", "schedule", t =>
+ {
+ t.HasComment("Расписание регламентной работы, исключение - Календарь");
+ });
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("a26edb88-0267-4fbf-b7ec-d172b0a86c9c"),
+ Code = "24x5",
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppName = "24x5",
+ EsppValue = "24x5",
+ Title = "24x5"
+ },
+ new
+ {
+ Id = new Guid("6834f1d5-ac51-43d5-974e-4c759d7bbf9f"),
+ Code = "24x7",
+ DateCreated = new DateTimeOffset(new DateTime(2023, 5, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+ EsppName = "24x7",
+ EsppValue = "24x7",
+ Title = "24x7"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Schedule.ScheduleResponseAreaTimeOffset", b =>
+ {
+ b.Property("ResponseArea")
+ .HasColumnType("text");
+
+ b.Property("EsppValue")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("UtcTimeOffset")
+ .HasColumnType("interval");
+
+ b.HasKey("ResponseArea");
+
+ b.ToTable("ResponseAreaTimeOffsets", "schedule", t =>
+ {
+ t.HasComment("Расписание в ЕСПП. Смещение часового пояса относительно МСК для зоны ответственности рабочей группы");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.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 = "ОВЧАРЕНКО АЛЕКСЕЙ ВИТАЛЬЕВИЧ (OVCHARENKOAV@GVC.OAO.RZD)"
+ },
+ new
+ {
+ Name = "ClosingCode",
+ Description = "Код закрытия регламентной работы, указывается при создании шаблона в ЕСПП.",
+ Value = "выполнен"
+ },
+ new
+ {
+ Name = "Category",
+ Description = "Категория создаваемого объекта в ЕСПП",
+ Value = "регламентная работа"
+ },
+ new
+ {
+ Name = "TemplatePrefixName",
+ Description = "Префикс имени шаблона в ЕСПП",
+ Value = "%PREFIX%-ЭИТИ-ПТК-ПАРР"
+ },
+ new
+ {
+ Name = "RobotAttemptsNumber",
+ Description = "Количество попыток выполнения задания роботом",
+ Value = "3"
+ },
+ new
+ {
+ Name = "RobotWaitTime",
+ Description = "Время ожидания выполнения роботом задания",
+ Value = "00:15:00"
+ },
+ new
+ {
+ Name = "EsppScheduleTimezone",
+ Description = "Расписание регламентной работы - В каком часовом поясе",
+ Value = "MSK"
+ },
+ new
+ {
+ Name = "ScheduleRepeatRange",
+ Description = "Расписание регламентной работы - Диапазн повторов",
+ Value = "Отсутствует дата завершения"
+ },
+ new
+ {
+ Name = "OrderSearchDeltaDate",
+ Description = "Промежуток времени для поиска нарядов в ЕСПП",
+ Value = "01:30:00"
+ },
+ new
+ {
+ Name = "EsppRobotAccountTimeZoneHour",
+ Description = "Таймзона УЗ роботов в ЕСПП, в часах (может быть положительная и отрицательная)",
+ Value = "3"
+ },
+ new
+ {
+ Name = "WeekendCacheTtl",
+ Description = "Время хранения в кэше данных о выходных и рабочих днях",
+ Value = "01:00:00"
+ },
+ new
+ {
+ Name = "TemplateNameConstantParts",
+ Description = "Список неизменных частей имени шаблона",
+ Value = "[{\"Name\":\"П-1\",\"Value\":\"ЭИТИ-ПАРР\"}]"
+ },
+ new
+ {
+ Name = "EsppUnitTag",
+ Description = "Префикс тега в поле ЭК \"Дополнительная информация\"",
+ Value = "ПАРР_"
+ },
+ new
+ {
+ Name = "JobIdForUnusedTemplates",
+ Description = "Job в который перемещаем ниспользованные шаблоны",
+ Value = "8f85a91c-a223-4686-bb69-1f0ee73624f2"
+ },
+ new
+ {
+ Name = "DefaultResponseAreaToTimeOffset",
+ Description = "Зона ответственности для получения тайм зоны по умолчанию для расписаний",
+ Value = "17-МСК"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.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("EsppId")
+ .IsUnique();
+
+ b.HasIndex("ProcessId");
+
+ b.ToTable("Subprocesses");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.TaskEntities.TaskError", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AttemptNumber")
+ .HasColumnType("integer");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ErrorMessage")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("StackTrace")
+ .HasColumnType("text");
+
+ b.Property("TaskId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TaskId");
+
+ b.ToTable("Errors", "task", t =>
+ {
+ t.HasComment("Таблица ошибок заданий");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.TaskEntities.TaskItem", 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("InitiatorComment")
+ .HasColumnType("text");
+
+ b.Property("InitiatorIp")
+ .HasColumnType("text");
+
+ b.Property("InitiatorParrComponentId")
+ .HasColumnType("integer");
+
+ b.Property("Payload")
+ .HasColumnType("text");
+
+ b.Property("ProcessedAt")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ProgressPercent")
+ .HasColumnType("integer")
+ .HasComment("Процент выполнения задачи");
+
+ b.Property("RetryCount")
+ .HasColumnType("integer");
+
+ b.Property("StatusCode")
+ .HasColumnType("integer");
+
+ b.Property("TypeCode")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("StatusCode");
+
+ b.HasIndex("TypeCode");
+
+ b.ToTable("Tasks", "task", t =>
+ {
+ t.HasComment("Таблица заданий");
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.TaskEntities.TaskStatus", b =>
+ {
+ b.Property("Code")
+ .HasColumnType("integer");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Code");
+
+ b.ToTable("Statuses", "task", t =>
+ {
+ t.HasComment("Таблица статусов заданий");
+ });
+
+ b.HasData(
+ new
+ {
+ Code = 0,
+ Description = "Ожидание",
+ Name = "Pending"
+ },
+ new
+ {
+ Code = 1,
+ Description = "В работе",
+ Name = "Processing"
+ },
+ new
+ {
+ Code = 2,
+ Description = "Выполнено успешно",
+ Name = "Success"
+ },
+ new
+ {
+ Code = 3,
+ Description = "Ошибка",
+ Name = "Failed"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.TaskEntities.TaskType", b =>
+ {
+ b.Property("Code")
+ .HasColumnType("integer");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsSingleton")
+ .HasColumnType("boolean");
+
+ b.Property("MaxExecutionTimeMinutes")
+ .HasColumnType("integer");
+
+ b.Property("MaxRetries")
+ .HasColumnType("integer");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("RetentionDays")
+ .HasColumnType("integer");
+
+ b.HasKey("Code");
+
+ b.ToTable("Types", "task", t =>
+ {
+ t.HasComment("Таблица типов заданий");
+ });
+
+ b.HasData(
+ new
+ {
+ Code = 0,
+ Description = "Формирование данных для отчетности - Загруженность",
+ IsSingleton = true,
+ MaxExecutionTimeMinutes = 90,
+ MaxRetries = 2,
+ Name = "Workload",
+ RetentionDays = 90
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.TaskStatus", 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("TaskStatuses");
+
+ b.HasData(
+ new
+ {
+ Code = 10,
+ Description = "Требуется создание объекта в ЕСПП",
+ Name = "Creating"
+ },
+ new
+ {
+ Code = 20,
+ Description = "Требуется обновление объекта в ЕСПП",
+ Name = "Updating"
+ },
+ new
+ {
+ Code = 30,
+ Description = "Нормальное состояние объекта в ЕСПП и ПАРР. Объект в ПАРР соответствует объекту в ЕСПП",
+ Name = "Ok"
+ });
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.Template", 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("Index")
+ .HasColumnType("integer");
+
+ b.Property("InitiatorComment")
+ .HasColumnType("text");
+
+ b.Property("InitiatorIp")
+ .HasColumnType("text");
+
+ b.Property("InitiatorParrComponentId")
+ .HasColumnType("integer");
+
+ b.Property("IsActiveSchedule")
+ .HasColumnType("boolean");
+
+ b.Property("IsActiveTemplate")
+ .HasColumnType("boolean");
+
+ b.Property("JobId")
+ .HasColumnType("uuid");
+
+ b.Property("LastRun")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("NextRun")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("ScheduleEsppId")
+ .HasColumnType("text");
+
+ b.Property("StatusTypeId")
+ .HasColumnType("integer");
+
+ b.Property("UnitId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("JobId");
+
+ b.HasIndex("StatusTypeId");
+
+ b.HasIndex("UnitId");
+
+ b.HasIndex("Name", "Index")
+ .IsUnique();
+
+ b.ToTable("Templates");
+ });
+
+ modelBuilder.Entity("PARR.Domain.Entities.TemplateHistory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("DateAddedToHistory")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("DateModified")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("InitiatorComment")
+ .HasColumnType("text");
+
+ b.Property("InitiatorIp")
+ .HasColumnType("text");
+
+ b.Property("InitiatorParrComponentId")
+ .HasColumnType("integer");
+
+ b.Property("IsActiveSchedule")
+ .HasColumnType("boolean");
+
+ b.Property("IsActiveTemplate")
+ .HasColumnType("boolean");
+
+ b.Property