using System;
using Rugrid.Sdaid.Notation.Documents;
using BuildingPurpose = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.BuildingPurpose;
using HeatingSystemRegulationType = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.HeatingSystemRegulationType;
using HeatingType = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.HeatingType;
namespace Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel
{
/// <summary>
/// Доменная сущность. Перенесено дословно из ntr-01/domain/consumption-model/operating-conditions.md.
/// </summary>
public class DOC_OperatingConditions : IDomainEntityDocument, IHasStructuralLinks, IFolder<NtrDomainFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel.DOC_ConsumptionModel>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_BuildingPurpose>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_HeatingSystemRegulationType>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.DOC_HeatingType>(),
};
public static string _refName = "Условия эксплуатации";
public string Name => "Условия эксплуатации";
public string Description => "Алиасы: Условия эксплуатации, Условия эксплуатации (сущность). parents: [consumption-model-diagram].";
public string Version => "1.0";
public string Status => "accepted";
public string[] Comments => new string[0];
public Type Entity => typeof(OperatingConditions);
}
/// <summary>
/// Доменная сущность «Условия эксплуатации».
/// Класс — источник структуры: таблица свойств и диаграмма связей на странице документа
/// строятся генератором по нему. Прозу и разбор ведёт документ DOC_OperatingConditions.
/// </summary>
[DomainEntity]
public class OperatingConditions
{
/// <summary>Идентификатор записи</summary>
[DomainField(Alias = "id", RequiredOnCreate = true, Range = "UUID", Immutable = true)]
public Guid Id { get; set; }
/// <summary>Модель потребления</summary>
[Relation]
[DomainField(Alias = "consumption_model_id", RequiredOnCreate = true)]
public ConsumptionModel? ConsumptionModel { get; set; }
/// <summary>Назначение здания</summary>
[Relation]
[DomainField(Alias = "building_purpose_id", RequiredForCalc = "Да")]
public BuildingPurpose? BuildingPurpose { get; set; }
/// <summary>Тип регулирования системы отопления</summary>
[Relation]
[DomainField(
Alias = "heating_sys_reg_type_id",
RequiredForCalc = "Да",
Default = "\"Система отопления без местных терморегуляторов и без авторегулирования на вводе\""
)]
public HeatingSystemRegulationType? HeatingSysRegType { get; set; }
/// <summary>Тип системы отопления</summary>
[Relation]
[DomainField(Alias = "heating_type_id", RequiredForCalc = "Да")]
public HeatingType? HeatingType { get; set; }
/// <summary>Количество рабочих мест</summary>
[DomainField(Alias = "workplaces_count", RequiredForCalc = "Да", Unit = "шт.", Range = "вещественное ≥ 0")]
public int WorkplacesCount { get; set; }
/// <summary>Средняя температура воздуха внутри здания за отопительный период</summary>
[DomainField(Alias = "int_air_temp_c", RequiredForCalc = "Да", Unit = "°C", Range = "вещественное [-50; 50]")]
public decimal IntAirTempC { get; set; }
}
}