⟨/⟩ Ntr/50_Domain/Reference/Period.cs

63 строк · в начало

using System;
using Rugrid.Sdaid.Notation.Documents;

namespace Rugrid.Sdaid.Epas.Ntr.Domain.Reference
{
    /// <summary>
    /// Справочник учётных периодов, загружаемый из АИС ОИА ПЭО.
    /// </summary>
    public class DOC_Period : IDomainEntityDocument, IFolder<NtrDomainFolder>
    {
        public static string _refName = "Учётный период (сущность)";

        public string Name => "Учётный период (сущность)";

        public string Description => "Период, за который ведётся учёт потребления ТЭР.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public Type Entity => typeof(Period);

        public static string Body = """
            Справочник загружается из АИС ОИА ПЭО и в Сервисе не редактируется. Тип периода задаёт его
            продолжительность, номер — порядковый номер периода внутри года: для месячного периода это
            номер месяца.
            """;
    }

    /// <summary>
    /// Доменная сущность «Учётный период (сущность)».
    /// Класс — источник структуры: таблица свойств и диаграмма связей на странице документа
    /// строятся генератором по нему. Прозу ведёт документ DOC_Period.
    /// </summary>
    [DomainEntity]
    public class Period
    {
        /// <summary>Идентификатор записи</summary>
        [DomainField(Alias = "id", RequiredOnCreate = true, Immutable = true)]
        public Guid Id { get; set; }

        /// <summary>ИД объекта в АИС</summary>
        [DomainField(Alias = "ais_id", RequiredOnCreate = true, Description = "ИД объекта в АИС ОИА ПЭО", Immutable = true)]
        public Guid AisId { get; set; }

        /// <summary>Наименование</summary>
        [DomainField(Alias = "name", RequiredOnCreate = true)]
        public string? Name { get; set; }

        /// <summary>Код</summary>
        [DomainField(Alias = "code", Description = "Уникальный строковый код записи справочника")]
        public string? Code { get; set; }

        /// <summary>Номер периода</summary>
        [DomainField(Alias = "number", RequiredOnCreate = true, Description = "Порядковый номер периода внутри года")]
        public int Number { get; set; }

        /// <summary>Тип периода</summary>
        [DomainField(Alias = "type", RequiredOnCreate = true, Description = "Продолжительность периода; учёт потребления ТЭР ведётся периодами типа `month`")]
        public string? Type { get; set; }
    }
}