using Microsoft.EntityFrameworkCore; using PARR.DAL.Context; using PARR.DAL.Models.Base; using PARR.DAL.Settings; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace PARR.DAL.Models.Job { [Table("Groups", Schema = DataContextSettings.Job)] [Comment("Таблица описания групп работ, для реализации зонтиков")] public class JobGroup : IBase { [Key] public Guid Id { get; set; } public DateTimeOffset DateCreated { get; set; } public DateTimeOffset? DateModified { get; set; } /// /// Наименование работ для интерфеса в ПАРР /// public required string GroupName { get; set; } ///// ///// Связана ли работа с групповыми ЭК(зонтами) ///// //public bool? IsUmbrella { get; set; } /// /// Поле Короткое описания шаблона АСУ ЕСПП /// public required string ShortDescription { get; set; } /// /// Поле Подробное описания шаблона АСУ ЕСПП /// private string _fullDescription = string.Empty; public required string FullDescription { get { //В полное описание подставляем префикс, для дальнейшего поиска наряда return $"{_fullDescription}\r\n{PrefixSettings.PrefixWithoutVariable}"; } set { //удаляем префикс, если он есть //_fullDescription = value.Replace($"\r\n{PrefixSettings.PrefixWithoutVariable}", string.Empty); _fullDescription = value.Replace($"{PrefixSettings.PrefixWithoutVariable}", string.Empty).TrimEnd(); } } //public required string FullDescription { get; set; } /// /// Поле Решение описания шаблона АСУ ЕСПП /// public required string Solution { get; set; } /// /// Поле Длительность описания шаблона АСУ ЕСПП /// public required string TemplateDuration { get; set; } /// /// TemplateDuration в формате TimeSpan /// public TimeSpan? TemplateDurationTimeSpan { get { try { //ЕСПП кривоногие, они почему-то таймспан пишут так "7 00:00:00", а правильно так: "7:00:00:00" var durationWithTimeSpanFormat = TemplateDuration.Replace(" ", ":"); return TimeSpan.Parse(durationWithTimeSpanFormat); } catch { return null; } } } /// /// Дата начала работ или дата для отсчёта периода следующего выполнения /// public DateTimeOffset ReferenceDate { get; set; } /// /// Включить автораспределение /// public bool IsAutoDistributionEnabled { get; set; } /// /// Выполняет агент /// public bool IsAgent { get; set; } /// /// Какое-то имя которое мы передаем агенту, пока непонятно что это такое. /// public string? AgentName { get; set; } /// /// Сколько времени ожидать выполнение скрипта агентом (секунд) /// public int? AgentTimeOutSec { get; set; } /// /// Скрипт для автоматического выполнения /// public string? AgentScript { get; set; } public Guid GroupTypeId { get; set; } [ForeignKey(nameof(GroupTypeId))] public JobGroupType? GroupType { get; set; } public ICollection Jobs { get; set; } = new HashSet(); public ICollection EsppSchValues { get; set; } = new HashSet(); } }