using System;
using Rugrid.Sdaid.Notation.Documents;
using BuildingShape = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.BuildingShape;
using CardinalDirection = Rugrid.Sdaid.Epas.Ntr.Domain.Reference.SysReference.CardinalDirection;
namespace Rugrid.Sdaid.Epas.Ntr.Domain.ConsumptionModel
{
/// <summary>
/// Доменная сущность. Перенесено дословно из ntr-01/domain/consumption-model/shape-and-dimensions.md.
/// </summary>
public class DOC_ShapeAndDimensions : 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_BuildingShape>(),
Rel.Uses<Rugrid.Sdaid.Epas.Ntr.Domain.Reference.SysReference.DOC_CardinalDirection>(),
};
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(ShapeAndDimensions);
}
/// <summary>
/// Доменная сущность «Форма и габариты».
/// Класс — источник структуры: таблица свойств и диаграмма связей на странице документа
/// строятся генератором по нему. Прозу и разбор ведёт документ DOC_ShapeAndDimensions.
/// </summary>
[DomainEntity]
public class ShapeAndDimensions
{
/// <summary>Идентификатор записи</summary>
[DomainField(
Alias = "id",
RequiredOnCreate = true,
Range = "UUID",
Description = "Идентификатор сущности «Форма и габариты».",
Immutable = true
)]
public Guid Id { get; set; }
/// <summary>Модель потребления</summary>
[Relation]
[DomainField(
Alias = "consumption_model_id",
RequiredOnCreate = true,
Description = "Внешний ключ на корневую модель потребления; подмодуль входит в состав агрегата (1:1).",
Immutable = true
)]
public ConsumptionModel? ConsumptionModel { get; set; }
/// <summary>Форма здания</summary>
[Relation]
[DomainField(
Alias = "building_shape_id",
RequiredForCalc = "Да",
Description = "Классификация геометрической формы; связь на диаграмме «имеет_форму» (* : 1)."
)]
public BuildingShape? BuildingShape { get; set; }
/// <summary>Объём общий, м³</summary>
[DomainField(Alias = "total_volume", Unit = "м³", Range = "Вещественное (15,4) [0; 10000000]", Description = "Полный объём здания.")]
public decimal TotalVolume { get; set; }
/// <summary>Объём отапливаемый, м³</summary>
[DomainField(
Alias = "heated_volume",
RequiredForCalc = "Да",
Unit = "м³",
Range = "Вещественное (15,4) (0; 10000000]",
Description = "Объём отапливаемой части."
)]
public decimal HeatedVolume { get; set; }
/// <summary>Площадь общая, м²</summary>
[DomainField(Alias = "total_area", Unit = "м²", Range = "Вещественное (15,4) [0; 10000000]", Description = "Общая площадь")]
public decimal TotalArea { get; set; }
/// <summary>Площадь отапливаемая, м²</summary>
[DomainField(
Alias = "heated_area",
RequiredForCalc = "Да",
Unit = "м²",
Range = "Вещественное (15,4) (0; 10000000]",
Description = "Отапливаемая площадь."
)]
public decimal HeatedArea { get; set; }
/// <summary>Высота здания, м</summary>
[DomainField(
Alias = "building_height",
RequiredForCalc = "Да",
Unit = "м",
Range = "Вещественное (15,4) (0; 100]",
Description = "Высота здания для геометрии."
)]
public decimal BuildingHeight { get; set; }
/// <summary>Этажность надземная, шт.</summary>
[DomainField(Alias = "floor_count", RequiredForCalc = "Да", Range = "целое > 0", Description = "Число этажей.")]
public int FloorCount { get; set; }
/// <summary>Ориентация стороны А</summary>
[Relation]
[DomainField(
Alias = "cardinal_direction_id",
RequiredForCalc = "Да",
Description = "Ориентация условной стороны «А» относительно сторон света; связь «ориентация_стороны_А» (* : 1)."
)]
public CardinalDirection? CardinalDirection { get; set; }
/// <summary>Размер по габариту A, м</summary>
[DomainField(
Alias = "dimension_a",
RequiredForCalc = "Да, если `Форма здания. Код в списке (rect, g, gr, p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит A по схеме выбранной формы здания."
)]
public decimal DimensionA { get; set; }
/// <summary>Размер по габариту B, м</summary>
[DomainField(
Alias = "dimension_b",
RequiredForCalc = "Да, если `Форма здания. Код ов списке (rect, g, gr, p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит B по схеме выбранной формы здания."
)]
public decimal DimensionB { get; set; }
/// <summary>Размер по габариту C, м</summary>
[DomainField(
Alias = "dimension_c",
RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит C по схеме выбранной формы здания."
)]
public decimal DimensionC { get; set; }
/// <summary>Размер по габариту D, м</summary>
[DomainField(
Alias = "dimension_d",
RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит D по схеме выбранной формы здания."
)]
public decimal DimensionD { get; set; }
/// <summary>Размер по габариту E, м</summary>
[DomainField(
Alias = "dimension_e",
RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит E по схеме выбранной формы здания."
)]
public decimal DimensionE { get; set; }
/// <summary>Размер по габариту F, м</summary>
[DomainField(
Alias = "dimension_f",
RequiredForCalc = "Да, если `Форма здания. Код в списке (g, gr, p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит F по схеме выбранной формы здания."
)]
public decimal DimensionF { get; set; }
/// <summary>Размер по габариту G, м</summary>
[DomainField(
Alias = "dimension_g",
RequiredForCalc = "Да, если `Форма здания. Код в списке (p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит G по схеме выбранной формы здания."
)]
public decimal DimensionG { get; set; }
/// <summary>Размер по габариту H, м</summary>
[DomainField(
Alias = "dimension_h",
RequiredForCalc = "Да, если `Форма здания. Код в списке (p)`",
Unit = "м",
Range = "Вещественное (15,4) (0; 1000]",
Description = "Линейный габарит H по схеме выбранной формы здания."
)]
public decimal DimensionH { get; set; }
}
}