From f2329e936703f76eb69543bf40e256b90a3811b6 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Fri, 6 Oct 2023 14:24:58 +1000 Subject: [PATCH] =?UTF-8?q?refactor(api):=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B=20=D1=81=D0=B2=D1=8F=D0=B7?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=81=D0=BE=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=BE=D0=B9=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B9=20=D1=80=D0=BE?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BE=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.API/Contracts/V1/ApiRoutes.cs | 12 +- .../V1/Responses/StatusTemplateResponse.cs | 13 - .../Responses/TemplateRobotStatusResponse.cs | 8 - PARR.API/Controllers/V1/EsppDataController.cs | 55 - .../Controllers/V1/RobotHistoryController.cs | 7 +- ...eController.cs => TaskStatusController.cs} | 12 +- PARR.API/Controllers/V1/TemplateController.cs | 164 +- .../V1/TemplateRobotStatusController.cs | 91 - .../DomainToResponseProfile.cs | 7 +- PARR.DAL/Context/DataContext.cs | 1 - ...31006042130_TblTemplatesUpdate.Designer.cs | 1950 +++++++++++++++++ .../20231006042130_TblTemplatesUpdate.cs | 135 ++ .../Migrations/DataContextModelSnapshot.cs | 91 +- PARR.DAL/Models/RobotHistoryLevel.cs | 2 - PARR.DAL/Models/RobotTemplateHistory.cs | 46 - PARR.DAL/Models/TaskStatus.cs | 2 - PARR.DAL/Models/Template.cs | 18 +- PARR.DAL/ParrDalInstaller.cs | 1 - .../RobotTemplateHistoryService.cs | 23 - .../Implementations/TemplateService.cs | 60 - .../IRobotTemplateHistoryService.cs | 9 - .../Services/Interfaces/ITemplateService.cs | 15 - PARR.EsppTemplateSync/Services/Manager.cs | 7 +- .../Services/TemplateManager.cs | 8 +- 24 files changed, 2199 insertions(+), 538 deletions(-) delete mode 100644 PARR.API/Contracts/V1/Responses/StatusTemplateResponse.cs delete mode 100644 PARR.API/Contracts/V1/Responses/TemplateRobotStatusResponse.cs delete mode 100644 PARR.API/Controllers/V1/EsppDataController.cs rename PARR.API/Controllers/V1/{StatusTemplateController.cs => TaskStatusController.cs} (71%) delete mode 100644 PARR.API/Controllers/V1/TemplateRobotStatusController.cs create mode 100644 PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.Designer.cs create mode 100644 PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.cs delete mode 100644 PARR.DAL/Models/RobotTemplateHistory.cs delete mode 100644 PARR.DAL/Services/Implementations/RobotTemplateHistoryService.cs delete mode 100644 PARR.DAL/Services/Interfaces/IRobotTemplateHistoryService.cs diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index 324039ba..a972f212 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -63,23 +63,15 @@ public const string getParam = "{id}"; } - public static class TemplateRobotStatus - { - public const string Get = Base + "/templates/" + templateId + "/robot-statuses"; - public const string Update = Base + "/templates/" + templateId + "/robot-statuses"; - - public const string templateId = "{templateId}"; - } - public static class RobotHistory { //public const string GetAll = Base + "/robot-histories/"; public const string Create = Base + "/robot-histories/"; } - public static class StatusTemplate + public static class TaskStatus { - public const string GetAll = Base + "/template-statuses/"; + public const string GetAll = Base + "/task-statuses/"; } public static class GeneratorTemplate diff --git a/PARR.API/Contracts/V1/Responses/StatusTemplateResponse.cs b/PARR.API/Contracts/V1/Responses/StatusTemplateResponse.cs deleted file mode 100644 index f6e3e7bf..00000000 --- a/PARR.API/Contracts/V1/Responses/StatusTemplateResponse.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace PARR.API.Contracts.V1.Responses -{ - public class StatusTemplateResponse - { - public int Code { get; set; } - - public required string Name { get; set; } - - public required string Description { get; set; } - } -} diff --git a/PARR.API/Contracts/V1/Responses/TemplateRobotStatusResponse.cs b/PARR.API/Contracts/V1/Responses/TemplateRobotStatusResponse.cs deleted file mode 100644 index 84536b44..00000000 --- a/PARR.API/Contracts/V1/Responses/TemplateRobotStatusResponse.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace PARR.API.Contracts.V1.Responses -{ - public class TemplateRobotStatusResponse : RobotStatusResponse - { - public int RobotAttemptsNumber { get; set; } - public DateTimeOffset? RobotLastStatusUpdated { get; set; } - } -} diff --git a/PARR.API/Controllers/V1/EsppDataController.cs b/PARR.API/Controllers/V1/EsppDataController.cs deleted file mode 100644 index cb001b78..00000000 --- a/PARR.API/Controllers/V1/EsppDataController.cs +++ /dev/null @@ -1,55 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.ModelBinding; -using PARR.API.Contracts.V1; -using PARR.API.Contracts.V1.Responses.Base; -using PARR.API.Controllers.V1.Base; -using PARR.BLL.Services.Interfaces; -using PARR.BLL.Settings; - -namespace PARR.API.Controllers.V1 -{ - public class EsppDataController : BaseApiController - { - private readonly ILogger logger; - private readonly IFileService fileService; - private readonly StorageSettings storageSettings; - - public EsppDataController( - ILogger logger, - IFileService fileService, - StorageSettings storageSettings - ) - { - this.logger = logger; - this.fileService = fileService; - this.storageSettings = storageSettings; - } - - // UploadTemplates - неактуально, так как стали брать данные с RabbitMQ - - ///// - ///// Загрузить файл списка шаблонов полученных из ЕСПП в формате csv - ///// - ///// - //[HttpPost(ApiRoutes.EsppData.UploadTemplates)] - //public async Task UploadTemplates([BindRequired] IFormFile file) - //{ - // if (!fileService.IsExtensionAllowed(file, storageSettings.EsppTemplates!.AllowedExtensions)) - // return BadRequest( - // new Response(false, - // new List { - // new ErrorModel { - // Message = $"Недопустимое расширение файла. Разрешенные расширения: {string.Join(", ", storageSettings.EsppTemplates.AllowedExtensions)}" - // } })); - - // if (!fileService.IsNotExceededLimit(file, storageSettings.EsppTemplates.MaxFileSizeMb)) - // return BadRequest(new Response(false, new List { new ErrorModel { FieldName = nameof(file), Message = $"Размер файла превышает {storageSettings.EsppTemplates.MaxFileSizeMb} МБайт" } })); - - // var uploadResult = await fileService.UploadAsync(file, storageSettings.EsppTemplates.TemplatePath); - // if (uploadResult == null) - // return BadRequest(new Response(false, new List { new ErrorModel { Message = "Ошибка при сохранении файла" } })); - - // return Ok(new Response("", true, new List(), $"Файл загружен.")); - //} - } -} diff --git a/PARR.API/Controllers/V1/RobotHistoryController.cs b/PARR.API/Controllers/V1/RobotHistoryController.cs index 15f48e29..4516c988 100644 --- a/PARR.API/Controllers/V1/RobotHistoryController.cs +++ b/PARR.API/Controllers/V1/RobotHistoryController.cs @@ -16,8 +16,7 @@ namespace PARR.API.Controllers.V1 public class RobotHistoryController : BaseApiController { private readonly IValidator validator; - private readonly ITemplateService templateService; - private readonly IRobotTemplateHistoryService historyService; + private readonly IMapper mapper; private readonly IUriService uriService; private readonly IRobotHistoryService robotHistoryService; @@ -25,8 +24,6 @@ namespace PARR.API.Controllers.V1 public RobotHistoryController( IValidator validator, - ITemplateService templateService, - IRobotTemplateHistoryService historyService, IMapper mapper, IUriService uriService, IRobotHistoryService robotHistoryService, @@ -34,8 +31,6 @@ namespace PARR.API.Controllers.V1 ) { this.validator = validator; - this.templateService = templateService; - this.historyService = historyService; this.mapper = mapper; this.uriService = uriService; this.robotHistoryService = robotHistoryService; diff --git a/PARR.API/Controllers/V1/StatusTemplateController.cs b/PARR.API/Controllers/V1/TaskStatusController.cs similarity index 71% rename from PARR.API/Controllers/V1/StatusTemplateController.cs rename to PARR.API/Controllers/V1/TaskStatusController.cs index 0db18d40..64a44d01 100644 --- a/PARR.API/Controllers/V1/StatusTemplateController.cs +++ b/PARR.API/Controllers/V1/TaskStatusController.cs @@ -9,12 +9,12 @@ using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { - public class StatusTemplateController : BaseApiController + public class TaskStatusController : BaseApiController { private readonly IMapper mapper; private readonly IStatusTemplateService statusTemplateService; - public StatusTemplateController( + public TaskStatusController( IMapper mapper, IStatusTemplateService statusTemplateService ) @@ -24,19 +24,19 @@ namespace PARR.API.Controllers.V1 } /// - /// Получить список статусов + /// Получить список статусов заданий /// /// - [HttpGet(ApiRoutes.StatusTemplate.GetAll)] + [HttpGet(ApiRoutes.TaskStatus.GetAll)] public async Task GetAll() { var statusList = await statusTemplateService.Get() .OrderBy(t => t.Code) .ToListAsync(); - var response = mapper.Map>(statusList); + var response = mapper.Map>(statusList); - return Ok(new Response>(response, true)); + return Ok(new Response>(response, true)); } } } diff --git a/PARR.API/Controllers/V1/TemplateController.cs b/PARR.API/Controllers/V1/TemplateController.cs index 13ee4049..2f0e4463 100644 --- a/PARR.API/Controllers/V1/TemplateController.cs +++ b/PARR.API/Controllers/V1/TemplateController.cs @@ -47,23 +47,25 @@ namespace PARR.API.Controllers.V1 .OrderBy(t => t.Name) .AsSplitQuery(); - if (filter.StatusCode.HasValue) - { - switch (filter.StatusCode.Value) - { - case (int)TaskStatusEnum.Ok: - query = query.Where(t => t.StatusCode == (int)TaskStatusEnum.Ok); - break; - case (int)TaskStatusEnum.Creating: - query = query.Where(t => t.StatusCode == (int)TaskStatusEnum.Creating); - break; - case (int)TaskStatusEnum.Updating: - query = query.Where(t => t.StatusCode == (int)TaskStatusEnum.Updating); - break; - default: - break; - } - } + //TODO:!!! + + //if (filter.StatusCode.HasValue) + //{ + // switch (filter.StatusCode.Value) + // { + // case (int)TaskStatusEnum.Ok: + // query = query.Where(t => t.StatusCode == (int)TaskStatusEnum.Ok); + // break; + // case (int)TaskStatusEnum.Creating: + // query = query.Where(t => t.StatusCode == (int)TaskStatusEnum.Creating); + // break; + // case (int)TaskStatusEnum.Updating: + // query = query.Where(t => t.StatusCode == (int)TaskStatusEnum.Updating); + // break; + // default: + // break; + // } + //} if (!string.IsNullOrEmpty(filter.Mask)) query = query.Where(t => EF.Functions.Like(t.Name.ToLower(), SqlHelpers.RegexToLike(filter.Mask))); @@ -84,75 +86,75 @@ namespace PARR.API.Controllers.V1 /// /// /// - [HttpGet(ApiRoutes.Template.Get)] - public async Task GetById([FromRoute] Guid id) - { - var template = await templateService.GetWithIncludes() - .AsSplitQuery() - .FirstOrDefaultAsync(t => t.Id == id); + //[HttpGet(ApiRoutes.Template.Get)] + //public async Task GetById([FromRoute] Guid id) + //{ + // var template = await templateService.GetWithIncludes() + // .AsSplitQuery() + // .FirstOrDefaultAsync(t => t.Id == id); - if (template == null) - return NotFound(); + // if (template == null) + // return NotFound(); - var response = mapper.Map(template); + // var response = mapper.Map(template); - return Ok(new Response(response, true)); - } + // return Ok(new Response(response, true)); + //} /// /// Получить один шаблон по заданному статусу /// /// /// - [HttpGet(ApiRoutes.Template.GetByStatusCode)] - public async Task GetByStatus([FromRoute] int statusCode, [FromQuery] RobinQuery query) - { - Template? template = null; + //[HttpGet(ApiRoutes.Template.GetByStatusCode)] + //public async Task GetByStatus([FromRoute] int statusCode, [FromQuery] RobinQuery query) + //{ + // Template? template = null; - //1.Ищем `RobotStatusCode` = 22 и `RobotLastStatusUpdated` истекло и `RobotAttemptsNumber` >= допустимого значения из настроек, - //ставим всем этим записям `RobotStatusCode`= 33 - //2.Поиск шаблонов со `StatusCode` 10 или 20 и `RobotStatusCode` = 11.Находим, **выбрали эту запись, конец**. - //3.Поиск шаблонов со `StatusCode` 10 или 20 и `RobotStatusCode` = 22. - //Далее проверяется `RobotLastStatusUpdated`, что время последнего смены статуса не превышает допустимого(берется из настроек, поле `RobotWaitTime`) - //и что текущая попытка не больше разрешенной(берется из настроек, поле `RobotAttemptsNumber`) - если это так, берется эта запись. + // //1.Ищем `RobotStatusCode` = 22 и `RobotLastStatusUpdated` истекло и `RobotAttemptsNumber` >= допустимого значения из настроек, + // //ставим всем этим записям `RobotStatusCode`= 33 + // //2.Поиск шаблонов со `StatusCode` 10 или 20 и `RobotStatusCode` = 11.Находим, **выбрали эту запись, конец**. + // //3.Поиск шаблонов со `StatusCode` 10 или 20 и `RobotStatusCode` = 22. + // //Далее проверяется `RobotLastStatusUpdated`, что время последнего смены статуса не превышает допустимого(берется из настроек, поле `RobotWaitTime`) + // //и что текущая попытка не больше разрешенной(берется из настроек, поле `RobotAttemptsNumber`) - если это так, берется эта запись. - //1. - await templateService.CheckAndSetErrorRobotStatusAsync(settingsFromDb.RobotAttemptsNumber, settingsFromDb.RobotWaitTime); + // //1. + // await templateService.CheckAndSetErrorRobotStatusAsync(settingsFromDb.RobotAttemptsNumber, settingsFromDb.RobotWaitTime); - //2. - template = await templateService.GetWithIncludes() - .AsSplitQuery() - .FirstOrDefaultAsync(t => t.StatusCode == statusCode && t.RobotStatusCode == (int)RobotStatusEnum.Wait); + // //2. + // template = await templateService.GetWithIncludes() + // .AsSplitQuery() + // .FirstOrDefaultAsync(t => t.StatusCode == statusCode && t.RobotStatusCode == (int)RobotStatusEnum.Wait); - //3. - if (template == null) - { - var endDate = DateTimeOffset.UtcNow.Add(-settingsFromDb.RobotWaitTime); - template = await templateService.GetWithIncludes() - .AsSplitQuery() - .FirstOrDefaultAsync(t => - t.StatusCode == statusCode - && t.RobotStatusCode == (int)RobotStatusEnum.InProgress - && t.RobotAttemptsNumber < settingsFromDb.RobotAttemptsNumber - && t.RobotLastStatusUpdated < endDate - ); - } + // //3. + // if (template == null) + // { + // var endDate = DateTimeOffset.UtcNow.Add(-settingsFromDb.RobotWaitTime); + // template = await templateService.GetWithIncludes() + // .AsSplitQuery() + // .FirstOrDefaultAsync(t => + // t.StatusCode == statusCode + // && t.RobotStatusCode == (int)RobotStatusEnum.InProgress + // && t.RobotAttemptsNumber < settingsFromDb.RobotAttemptsNumber + // && t.RobotLastStatusUpdated < endDate + // ); + // } - if (template == null) - return NotFound(); + // if (template == null) + // return NotFound(); - var response = mapper.Map(template); + // var response = mapper.Map(template); - if (query.Robin == true) - { - var stringResponse = mapper.Map(response); - return Ok(stringResponse); - } + // if (query.Robin == true) + // { + // var stringResponse = mapper.Map(response); + // return Ok(stringResponse); + // } - return Ok(new Response(response, true)); - } + // return Ok(new Response(response, true)); + //} /// @@ -160,25 +162,25 @@ namespace PARR.API.Controllers.V1 /// /// /// - [HttpPut(ApiRoutes.Template.SetOkStatus)] - public async Task SetOkStatus([FromRoute] Guid id) - { - var template = await templateService.GetWithIncludes() - .AsSplitQuery() - .FirstOrDefaultAsync(t => t.Id == id); + //[HttpPut(ApiRoutes.Template.SetOkStatus)] + //public async Task SetOkStatus([FromRoute] Guid id) + //{ + // var template = await templateService.GetWithIncludes() + // .AsSplitQuery() + // .FirstOrDefaultAsync(t => t.Id == id); - if (template == null) - return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Не найден шаблон с id: {id}" } })); + // if (template == null) + // return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Не найден шаблон с id: {id}" } })); - template.StatusCode = (int)TaskStatusEnum.Ok; + // template.StatusCode = (int)TaskStatusEnum.Ok; - if (!await templateService.CommitAsync()) - return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при изменении статуса у шаблона с id: {id}" } })); + // if (!await templateService.CommitAsync()) + // return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при изменении статуса у шаблона с id: {id}" } })); - var response = mapper.Map(template); + // var response = mapper.Map(template); - return Ok(new Response(response, true)); - } + // return Ok(new Response(response, true)); + //} } diff --git a/PARR.API/Controllers/V1/TemplateRobotStatusController.cs b/PARR.API/Controllers/V1/TemplateRobotStatusController.cs deleted file mode 100644 index 6a5e4961..00000000 --- a/PARR.API/Controllers/V1/TemplateRobotStatusController.cs +++ /dev/null @@ -1,91 +0,0 @@ -using AutoMapper; -using FluentValidation; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using PARR.API.Contracts.V1; -using PARR.API.Contracts.V1.Requests; -using PARR.API.Contracts.V1.Responses; -using PARR.API.Contracts.V1.Responses.Base; -using PARR.API.Controllers.V1.Base; -using PARR.DAL.Contracts; -using PARR.DAL.Models; -using PARR.DAL.Services.Interfaces; - -namespace PARR.API.Controllers.V1 -{ - public class TemplateRobotStatusController : BaseApiController - { - private readonly IMapper mapper; - private readonly ITemplateService templateService; - private readonly IValidator validator; - - public TemplateRobotStatusController( - IMapper mapper, - ITemplateService templateService, - IValidator validator - ) - { - this.mapper = mapper; - this.templateService = templateService; - this.validator = validator; - } - - - /// - /// Получить статус робота по Id шаблона - /// - /// - /// - [HttpGet(ApiRoutes.TemplateRobotStatus.Get)] - public async Task Get([FromRoute] Guid templateId) - { - var template = await templateService.Get() - .Include(t => t.RobotStatus) - .FirstOrDefaultAsync(t => t.Id == templateId); - - if (template == null) - return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Не найден шаблон с id: {templateId}" } })); - - var response = mapper.Map(template); - - return Ok(new Response(response, true)); - } - - - /// - /// Обновить статус робота по Id шаблона - /// - /// - /// - [HttpPut(ApiRoutes.TemplateRobotStatus.Update)] - public async Task UpdateStatus([FromRoute] Guid templateId, [FromBody] TemplateRobotStatusRequest request) - { - var resultValidate = await validator.ValidateAsync(request); - if (!resultValidate.IsValid) - return BadRequest(new Response(resultValidate.Errors)); - - var template = await templateService.Get() - .FirstOrDefaultAsync(t => t.Id == templateId); - - if (template == null) - return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Не найден шаблон с id: {templateId}" } })); - - var enumStatus = (RobotStatusEnum)request.Code; - - // изменение статуса - templateService.ChangeRobotStatus(enumStatus, ref template); - - if (!await templateService.CommitAsync()) - return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при изменении статуса шаблону {templateId}" } })); - - var templateToResponse = await templateService.Get() - .Include(t => t.RobotStatus) - .FirstOrDefaultAsync(t => t.Id == templateId); - - var response = mapper.Map(templateToResponse); - - return Ok(new Response(response, true)); - } - - } -} diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index 9355d0e1..eeb7fa6a 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -63,12 +63,7 @@ namespace PARR.API.MappingProfiles // === Template === - CreateMap(); - - CreateMap() - .ForMember(d => d.Code, o => o.MapFrom(s => s.RobotStatus!.Code)) - .ForMember(d => d.Name, o => o.MapFrom(s => s.RobotStatus!.Name)) - .ForMember(d => d.Description, o => o.MapFrom(s => s.RobotStatus!.Description)); + CreateMap(); CreateMap(); diff --git a/PARR.DAL/Context/DataContext.cs b/PARR.DAL/Context/DataContext.cs index 125fa912..30360a65 100644 --- a/PARR.DAL/Context/DataContext.cs +++ b/PARR.DAL/Context/DataContext.cs @@ -46,7 +46,6 @@ namespace PARR.DAL.Context public DbSet Setting { get; set; } public DbSet RobotHistoryLevels { get; set; } - public DbSet RobotTemplateHistories { get; set; } public DbSet Robots { get; set; } public DbSet RobotConfigurations { get; set; } diff --git a/PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.Designer.cs b/PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.Designer.cs new file mode 100644 index 00000000..6a6ee60f --- /dev/null +++ b/PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.Designer.cs @@ -0,0 +1,1950 @@ +// +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("20231006042130_TblTemplatesUpdate")] + partial class TblTemplatesUpdate + { + /// + 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("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("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.EkStatus", b => + { + b.Property("Code") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Code")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Code"); + + b.ToTable("EkStatuses"); + + b.HasData( + new + { + Code = 1, + Name = "1-Новый" + }, + new + { + Code = 2, + Name = "2-Подготовка к эксплуатации" + }, + new + { + Code = 3, + Name = "3-В эксплуатации" + }, + new + { + Code = 4, + Name = "4-В ремонте" + }, + new + { + Code = 5, + Name = "5-В резерве" + }, + new + { + Code = 6, + Name = "6-Выведен из эксплуатации" + }, + new + { + Code = 7, + Name = "7-Тестовый" + }, + new + { + Code = 9, + Name = "9-В разработке" + }); + }); + + 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("EkStatusCode") + .HasColumnType("integer"); + + b.Property("IP") + .IsRequired() + .HasColumnType("text"); + + b.Property("ResponseAreaCode") + .HasColumnType("integer"); + + b.Property("WorkGroup") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("EkStatusCode"); + + b.HasIndex("ResponseAreaCode"); + + 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.ResponseArea", b => + { + b.Property("Code") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Code")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Code"); + + b.ToTable("ResponseAreas"); + + b.HasData( + new + { + Code = 96, + Name = "96-ДВС" + }, + new + { + Code = 94, + Name = "94-ЗАБ" + }, + new + { + Code = 92, + Name = "92-ВСИБ" + }, + new + { + Code = 88, + Name = "88-КРАСН" + }, + new + { + Code = 83, + Name = "83-ЗСИБ" + }, + new + { + Code = 80, + Name = "80-ЮУР" + }, + new + { + Code = 76, + Name = "76-СВРД" + }, + new + { + Code = 63, + Name = "63-КБШ" + }, + new + { + Code = 61, + Name = "61-ПРИВ" + }, + new + { + Code = 58, + Name = "58-ЮВСТ" + }, + new + { + Code = 51, + Name = "51-СКВ" + }, + new + { + Code = 28, + Name = "28-СЕВ" + }, + new + { + Code = 24, + Name = "24-ГОР" + }, + new + { + Code = 17, + Name = "17-МСК" + }, + new + { + Code = 10, + Name = "10-КЛГ" + }, + new + { + Code = 1, + Name = "01-ОКТ" + }, + new + { + Code = 99, + Name = "00-ГВЦ" + }); + }); + + modelBuilder.Entity("PARR.DAL.Models.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.DAL.Models.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.ToTable("RobotConfigurations"); + }); + + modelBuilder.Entity("PARR.DAL.Models.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("RobotMessage") + .HasColumnType("text"); + + b.Property("TaskStatusCode") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("HistoryLevel"); + + b.HasIndex("RobotConfigurationId"); + + b.HasIndex("TaskStatusCode"); + + b.ToTable("RobotHistories"); + }); + + modelBuilder.Entity("PARR.DAL.Models.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 = "Inforamtion" + }, + new + { + Level = 10, + Description = "Ошибка", + Name = "Error" + }, + new + { + Level = 15, + Description = "Успешно завершил работу", + Name = "Complete" + }); + }); + + modelBuilder.Entity("PARR.DAL.Models.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.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 = "ПАРР-ДВС-ПТК" + }, + new + { + Name = "RobotAttemptsNumber", + Description = "Количество попыток выполнения задания роботом", + Value = "3" + }, + new + { + Name = "RobotWaitTime", + Description = "Время ожидания выполнения роботом задания", + Value = "00:15:00" + }); + }); + + 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.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.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("IsActiveSchedule") + .HasColumnType("boolean"); + + b.Property("IsActiveTemplate") + .HasColumnType("boolean"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("RobotStatusCode") + .HasColumnType("integer"); + + b.Property("TaskStatusCode") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationInWorkId"); + + b.HasIndex("HostId"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("RobotStatusCode"); + + b.HasIndex("TaskStatusCode"); + + 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("Applications") + .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.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.Host", b => + { + b.HasOne("PARR.DAL.Models.EkStatus", "EkStatus") + .WithMany("Hosts") + .HasForeignKey("EkStatusCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.ResponseArea", "ResponseArea") + .WithMany("Hosts") + .HasForeignKey("ResponseAreaCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EkStatus"); + + b.Navigation("ResponseArea"); + }); + + modelBuilder.Entity("PARR.DAL.Models.RobotConfiguration", b => + { + b.HasOne("PARR.DAL.Models.Robot", "Robot") + .WithMany("RobotConfigurations") + .HasForeignKey("RobotCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.RobotStatus", "RobotStatus") + .WithMany() + .HasForeignKey("RobotStatusCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.TaskStatus", "StatusTask") + .WithMany() + .HasForeignKey("TaskStatusCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.Template", "Template") + .WithMany("RobotConfigurations") + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Robot"); + + b.Navigation("RobotStatus"); + + b.Navigation("StatusTask"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("PARR.DAL.Models.RobotHistory", b => + { + b.HasOne("PARR.DAL.Models.RobotHistoryLevel", "RobotHistoryLevel") + .WithMany("RobotHistories") + .HasForeignKey("HistoryLevel") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.RobotConfiguration", "RobotConfiguration") + .WithMany("RobotHistories") + .HasForeignKey("RobotConfigurationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PARR.DAL.Models.TaskStatus", "StatusTask") + .WithMany() + .HasForeignKey("TaskStatusCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("RobotConfiguration"); + + b.Navigation("RobotHistoryLevel"); + + b.Navigation("StatusTask"); + }); + + 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.RobotStatus", null) + .WithMany("Templates") + .HasForeignKey("RobotStatusCode"); + + b.HasOne("PARR.DAL.Models.TaskStatus", null) + .WithMany("Templates") + .HasForeignKey("TaskStatusCode"); + + b.Navigation("ApplicationsInWork"); + + b.Navigation("Host"); + }); + + 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("Applications"); + }); + + modelBuilder.Entity("PARR.DAL.Models.ApplicationsInWork", b => + { + b.Navigation("Templates"); + }); + + modelBuilder.Entity("PARR.DAL.Models.EkStatus", b => + { + b.Navigation("Hosts"); + }); + + 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.ResponseArea", b => + { + b.Navigation("Hosts"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Robot", b => + { + b.Navigation("RobotConfigurations"); + }); + + modelBuilder.Entity("PARR.DAL.Models.RobotConfiguration", b => + { + b.Navigation("RobotHistories"); + }); + + modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b => + { + b.Navigation("RobotHistories"); + }); + + modelBuilder.Entity("PARR.DAL.Models.RobotStatus", b => + { + b.Navigation("Templates"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Subprocess", b => + { + b.Navigation("Tnks"); + }); + + modelBuilder.Entity("PARR.DAL.Models.TaskStatus", b => + { + b.Navigation("Templates"); + }); + + modelBuilder.Entity("PARR.DAL.Models.Template", b => + { + b.Navigation("RobotConfigurations"); + }); + + 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/20231006042130_TblTemplatesUpdate.cs b/PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.cs new file mode 100644 index 00000000..97ded9a2 --- /dev/null +++ b/PARR.DAL/Migrations/20231006042130_TblTemplatesUpdate.cs @@ -0,0 +1,135 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PARR.DAL.Migrations +{ + /// + public partial class TblTemplatesUpdate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Templates_TaskStatuses_StatusCode", + table: "Templates"); + + migrationBuilder.DropTable( + name: "RobotTemplateHistories"); + + migrationBuilder.DropColumn( + name: "RobotAttemptsNumber", + table: "Templates"); + + migrationBuilder.DropColumn( + name: "RobotLastStatusUpdated", + table: "Templates"); + + migrationBuilder.RenameColumn( + name: "StatusCode", + table: "Templates", + newName: "TaskStatusCode"); + + migrationBuilder.RenameIndex( + name: "IX_Templates_StatusCode", + table: "Templates", + newName: "IX_Templates_TaskStatusCode"); + + migrationBuilder.AddForeignKey( + name: "FK_Templates_TaskStatuses_TaskStatusCode", + table: "Templates", + column: "TaskStatusCode", + principalTable: "TaskStatuses", + principalColumn: "Code"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Templates_TaskStatuses_TaskStatusCode", + table: "Templates"); + + migrationBuilder.RenameColumn( + name: "TaskStatusCode", + table: "Templates", + newName: "StatusCode"); + + migrationBuilder.RenameIndex( + name: "IX_Templates_TaskStatusCode", + table: "Templates", + newName: "IX_Templates_StatusCode"); + + migrationBuilder.AddColumn( + name: "RobotAttemptsNumber", + table: "Templates", + type: "integer", + nullable: true); + + migrationBuilder.AddColumn( + name: "RobotLastStatusUpdated", + table: "Templates", + type: "timestamp with time zone", + nullable: true); + + migrationBuilder.CreateTable( + name: "RobotTemplateHistories", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + HistoryLevel = table.Column(type: "integer", nullable: false), + TemplateId = table.Column(type: "uuid", nullable: false), + TemplateStatusCode = table.Column(type: "integer", nullable: false), + DateCreated = table.Column(type: "timestamp with time zone", nullable: false), + EsppMessage = table.Column(type: "text", nullable: true), + IdSeries = table.Column(type: "uuid", nullable: false), + RobotMessage = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_RobotTemplateHistories", x => x.Id); + table.ForeignKey( + name: "FK_RobotTemplateHistories_RobotHistoryLevels_HistoryLevel", + column: x => x.HistoryLevel, + principalTable: "RobotHistoryLevels", + principalColumn: "Level", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_RobotTemplateHistories_TaskStatuses_TemplateStatusCode", + column: x => x.TemplateStatusCode, + principalTable: "TaskStatuses", + principalColumn: "Code", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_RobotTemplateHistories_Templates_TemplateId", + column: x => x.TemplateId, + principalTable: "Templates", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_RobotTemplateHistories_HistoryLevel", + table: "RobotTemplateHistories", + column: "HistoryLevel"); + + migrationBuilder.CreateIndex( + name: "IX_RobotTemplateHistories_TemplateId", + table: "RobotTemplateHistories", + column: "TemplateId"); + + migrationBuilder.CreateIndex( + name: "IX_RobotTemplateHistories_TemplateStatusCode", + table: "RobotTemplateHistories", + column: "TemplateStatusCode"); + + migrationBuilder.AddForeignKey( + name: "FK_Templates_TaskStatuses_StatusCode", + table: "Templates", + column: "StatusCode", + principalTable: "TaskStatuses", + principalColumn: "Code"); + } + } +} diff --git a/PARR.DAL/Migrations/DataContextModelSnapshot.cs b/PARR.DAL/Migrations/DataContextModelSnapshot.cs index d5cef6e9..937184ae 100644 --- a/PARR.DAL/Migrations/DataContextModelSnapshot.cs +++ b/PARR.DAL/Migrations/DataContextModelSnapshot.cs @@ -946,44 +946,6 @@ namespace PARR.DAL.Migrations }); }); - modelBuilder.Entity("PARR.DAL.Models.RobotTemplateHistory", 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("IdSeries") - .HasColumnType("uuid"); - - b.Property("RobotMessage") - .HasColumnType("text"); - - b.Property("TemplateId") - .HasColumnType("uuid"); - - b.Property("TemplateStatusCode") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.HasIndex("HistoryLevel"); - - b.HasIndex("TemplateId"); - - b.HasIndex("TemplateStatusCode"); - - b.ToTable("RobotTemplateHistories"); - }); - modelBuilder.Entity("PARR.DAL.Models.Setting", b => { b.Property("Name") @@ -1138,16 +1100,10 @@ namespace PARR.DAL.Migrations .IsRequired() .HasColumnType("text"); - b.Property("RobotAttemptsNumber") - .HasColumnType("integer"); - - b.Property("RobotLastStatusUpdated") - .HasColumnType("timestamp with time zone"); - b.Property("RobotStatusCode") .HasColumnType("integer"); - b.Property("StatusCode") + b.Property("TaskStatusCode") .HasColumnType("integer"); b.HasKey("Id"); @@ -1161,7 +1117,7 @@ namespace PARR.DAL.Migrations b.HasIndex("RobotStatusCode"); - b.HasIndex("StatusCode"); + b.HasIndex("TaskStatusCode"); b.ToTable("Templates"); }); @@ -1701,33 +1657,6 @@ namespace PARR.DAL.Migrations b.Navigation("StatusTask"); }); - modelBuilder.Entity("PARR.DAL.Models.RobotTemplateHistory", b => - { - b.HasOne("PARR.DAL.Models.RobotHistoryLevel", "RobotHistoryLevel") - .WithMany("robotTemplateHistories") - .HasForeignKey("HistoryLevel") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("PARR.DAL.Models.Template", "Template") - .WithMany("RobotTemplateHistories") - .HasForeignKey("TemplateId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("PARR.DAL.Models.TaskStatus", "StatusTemplate") - .WithMany("RobotTemplateHistories") - .HasForeignKey("TemplateStatusCode") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("RobotHistoryLevel"); - - b.Navigation("StatusTemplate"); - - b.Navigation("Template"); - }); - modelBuilder.Entity("PARR.DAL.Models.Subprocess", b => { b.HasOne("PARR.DAL.Models.Process", "Process") @@ -1753,21 +1682,17 @@ namespace PARR.DAL.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PARR.DAL.Models.RobotStatus", "RobotStatus") + b.HasOne("PARR.DAL.Models.RobotStatus", null) .WithMany("Templates") .HasForeignKey("RobotStatusCode"); - b.HasOne("PARR.DAL.Models.TaskStatus", "StatusTask") + b.HasOne("PARR.DAL.Models.TaskStatus", null) .WithMany("Templates") - .HasForeignKey("StatusCode"); + .HasForeignKey("TaskStatusCode"); b.Navigation("ApplicationsInWork"); b.Navigation("Host"); - - b.Navigation("RobotStatus"); - - b.Navigation("StatusTask"); }); modelBuilder.Entity("PARR.DAL.Models.Tnk", b => @@ -1943,8 +1868,6 @@ namespace PARR.DAL.Migrations modelBuilder.Entity("PARR.DAL.Models.RobotHistoryLevel", b => { b.Navigation("RobotHistories"); - - b.Navigation("robotTemplateHistories"); }); modelBuilder.Entity("PARR.DAL.Models.RobotStatus", b => @@ -1959,16 +1882,12 @@ namespace PARR.DAL.Migrations modelBuilder.Entity("PARR.DAL.Models.TaskStatus", b => { - b.Navigation("RobotTemplateHistories"); - b.Navigation("Templates"); }); modelBuilder.Entity("PARR.DAL.Models.Template", b => { b.Navigation("RobotConfigurations"); - - b.Navigation("RobotTemplateHistories"); }); modelBuilder.Entity("PARR.DAL.Models.Tnk", b => diff --git a/PARR.DAL/Models/RobotHistoryLevel.cs b/PARR.DAL/Models/RobotHistoryLevel.cs index 771fe06c..4c7fd96f 100644 --- a/PARR.DAL/Models/RobotHistoryLevel.cs +++ b/PARR.DAL/Models/RobotHistoryLevel.cs @@ -17,8 +17,6 @@ namespace PARR.DAL.Models public required string Description { get; set; } - public ICollection robotTemplateHistories { get; set; } = new HashSet(); - public ICollection RobotHistories { get; set; } = new HashSet(); diff --git a/PARR.DAL/Models/RobotTemplateHistory.cs b/PARR.DAL/Models/RobotTemplateHistory.cs deleted file mode 100644 index c6458ffd..00000000 --- a/PARR.DAL/Models/RobotTemplateHistory.cs +++ /dev/null @@ -1,46 +0,0 @@ -using PARR.DAL.Models.Base; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PARR.DAL.Models -{ - /// - /// История работы робота по управлению шаблонами в ЕСПП - /// - [Table("RobotTemplateHistories")] - public class RobotTemplateHistory : IBase - { - [Key] - public Guid Id { get; set; } - - public DateTimeOffset DateCreated { get; set; } - - [NotMapped] - public DateTimeOffset? DateModified { get; set; } - - public int HistoryLevel { get; set; } - - public string? RobotMessage { get; set; } - - public string? EsppMessage { get; set; } - - public Guid TemplateId { get; set; } - - public int TemplateStatusCode { get; set; } - - /// - /// Уникальный идентификатор серии выполнения, нужен для сопоставления истории - /// - public Guid IdSeries { get; set; } - - - [ForeignKey(nameof(HistoryLevel))] - public RobotHistoryLevel? RobotHistoryLevel { get; set; } - - [ForeignKey(nameof(TemplateId))] - public Template? Template { get; set; } - - [ForeignKey(nameof(TemplateStatusCode))] - public TaskStatus? StatusTemplate { get; set; } - } -} diff --git a/PARR.DAL/Models/TaskStatus.cs b/PARR.DAL/Models/TaskStatus.cs index ea62bc99..8c86ee6a 100644 --- a/PARR.DAL/Models/TaskStatus.cs +++ b/PARR.DAL/Models/TaskStatus.cs @@ -19,7 +19,5 @@ namespace PARR.DAL.Models public string Description { get; set; } = string.Empty; public ICollection