⟨/⟩ Ntr/50_Domain/ConsumptionModel/Lighting.cs

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

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

namespace Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel
{
    /// <summary>
    /// Доменная сущность. Перенесено дословно из ntr-01/domain/consumption-model/lighting.md.
    /// </summary>
    public class DOC_Lighting : IDomainEntityDocument, IHasStructuralLinks, IFolder<NtrDomainFolder>
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel.DOC_LightingModel>(),
        };

        public static string _refName = "Освещение (сущность)";

        public string Name => "Освещение (сущность)";

        public string Description => "Алиасы: Освещение (сущность). parents: [lighting-model-diagram].";

        public string Version => "1.0";
        public string Status => "accepted";
        public string[] Comments => new string[0];
        public Type Entity => typeof(Lighting);
    }

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

        /// <summary>ais_lightings_id</summary>
        [DomainField(Alias = "ais_id", Immutable = true)]
        public Guid AisId { get; set; }

        /// <summary>Наименование</summary>
        [DomainField(
            Alias = "name",
            Calculated = "Да, вычисляется при чтении / на UI; не хранится. Формула: $\"{lighting_type} ({Количество ламп в светильнике, шт} * {Количество светильников, шт.} * {Мощность одной лампы, Вт})\", где lighting_type: \"Внутреннее\" — если is_internal_lighting=true, иначе \"Наружное\""
        )]
        public string? Name { get; set; }

        /// <summary>Модель освещения</summary>
        [Relation]
        [DomainField(Alias = "lighting_model_id", RequiredOnCreate = true, Immutable = true)]
        public LightingModel? LightingModel { get; set; }

        /// <summary>Внутреннее освещение</summary>
        [DomainField(Alias = "is_internal_lighting")]
        public bool IsInternalLighting { get; set; }

        /// <summary>Количество ламп в светильнике, шт</summary>
        [DomainField(Alias = "lamp_per_illuminator", RequiredForCalc = "Да", Range = "> 0")]
        public int LampPerIlluminator { get; set; }

        /// <summary>Количество светильников, шт.</summary>
        [DomainField(Alias = "lighting_amount", RequiredForCalc = "Да", Range = "> 0")]
        public int LightingAmount { get; set; }

        /// <summary>Мощность одной лампы, Вт</summary>
        [DomainField(Alias = "lamp_power_wt", RequiredForCalc = "Да", Range = "> 0")]
        public decimal LampPowerWt { get; set; }

        /// <summary>Время работы в сутках, час. в сут.</summary>
        [DomainField(Alias = "operating_time_hour_per_day", RequiredForCalc = "Да", Range = "(0; 24]")]
        public decimal OperatingTimeHourPerDay { get; set; }

        /// <summary>Время работы в году, дней в год</summary>
        [DomainField(Alias = "operating_time_days_per_year", RequiredForCalc = "Да", Range = "(0; 366]")]
        public decimal OperatingTimeDaysPerYear { get; set; }

        /// <summary>Установленная мощность, кВт</summary>
        [DomainField(Alias = "ee_receiver_power_kw", Calculated = "Да", Unit = "кВт", Range = "> 0")]
        public decimal EeReceiverPowerKw { get; set; }

        /// <summary>Годовое потребление, кВт·ч</summary>
        [DomainField(Alias = "ee_receiver_energy_kwh", Calculated = "Да", Unit = "кВт·ч", Range = "> 0")]
        public decimal EeReceiverEnergyKwh { get; set; }
    }

}