using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Reflection; using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; using Keyapis.EF.DataAnnotations; using Keyapis.EF.Extensions; using Keyapis.EF.ValueConverters; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; // ReSharper disable once CheckNamespace namespace Keyapis.EF.AccessControl.V1.Data.AccessControlDb; public interface IAccessControlDbContext : IAsyncDisposable, IDisposable { public DbSet AccessPointsGroups { get; set; } public DbSet AccessPoints { get; set; } public DbSet Rfids { get; set; } public Task SaveChangesAsync(CancellationToken cancellationToken = default); } public abstract class AccessControlDbContextBase : DbContext, IAccessControlDbContext { protected AccessControlDbContextBase(DbContextOptions options) : base(options) { } public DbSet AccessPointsGroups { get; set; } = null!; public DbSet AccessPoints { get; set; } = null!; public DbSet Rfids { get; set; } = null!; protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.HasPostgresExtension("pg_trgm"); foreach(var entity in builder.Model.GetEntityTypes()) { foreach(var property in entity.GetProperties()) { var memberInfo = property.PropertyInfo ?? (MemberInfo ?)property.FieldInfo; if (memberInfo == null) continue; var customRangeAttribute = memberInfo.GetCustomAttribute(); if (customRangeAttribute != null) { var actualType = Nullable.GetUnderlyingType(property.ClrType) ?? property.ClrType; if (actualType == typeof(string) || typeof(IEnumerable).IsAssignableFrom(actualType)) { property.SetMaxLength(customRangeAttribute.Maximum > int.MaxValue ? int.MaxValue : (int)customRangeAttribute.Maximum); } } var customRequiredAttribute = memberInfo.GetCustomAttribute(); if (customRequiredAttribute != null) { property.IsNullable = false; } } } builder.Entity(e => { // Для поля access_point_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.access_point_id ~ order.ACCESS_POINT_ID e.HasIndex(p => p.AccessPointId) .HasMethod("btree") .IsDescending(); // Для поля group_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.group_id ~ order.GROUP_ID e.HasIndex(p => p.GroupId) .HasMethod("btree") .IsDescending(); // Составной пирвичный ключ e.HasKey(p => new { p.AccessPointId, p.GroupId }); // WARNING Не удалось найти свойство навигации для поля AccessPointGroup.group_id }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.id ~ order.ID e.HasIndex(p => p.Id) .HasMethod("btree") .IsDescending(); // Для поля title дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.title ~ order.TITLE e.HasIndex(p => p.Title) .HasMethod("btree") .IsDescending(); // Для поля description дополнительные конфигурации свойства не нужны // Для поля description сопоствалений с фильтром и сортировкой не найденно // Для поля device_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.device_id ~ filter.device_ids e.HasIndex(p => p.DeviceId) .IsDescending(); // Для поля relay_index дополнительные конфигурации свойства не нужны // Для поля relay_index сопоствалений с фильтром и сортировкой не найденно // Для поля delay дополнительные конфигурации свойства не нужны // Для поля delay сопоствалений с фильтром и сортировкой не найденно // Для поля flatgramm_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.flatgramm_id ~ filter.flatgramm_ids e.HasIndex(p => p.FlatgrammId) .IsDescending(); e.Property(p => p.DirectionType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.direction_type ~ filter.direction_types e.HasIndex(p => p.DirectionType) .IsDescending(); e.Property(p => p.Cameras) .HasColumnType("jsonb") .HasConversion(new CustomJsonConverter>(), new ValueComparer>( (c1, c2) => (c1 != null && c2 != null && c1.SequenceEqual(c2)), c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())), c => c.ToList() )) .HasDefaultValue(new List()) .HasColumnType("jsonb"); e.HasIndex(p => p.Cameras) .HasMethod("gin") .HasOperators("jsonb_ops"); e.Property(p => p.CreatedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Найдено сопоставление: model.created_at ~ order.CREATED_AT e.HasIndex(p => p.CreatedAt) .HasMethod("btree") .IsDescending(); e.Property(p => p.ChangedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance) .IsConcurrencyToken(); // Найдено сопоставление: model.changed_at ~ order.CHANGED_AT e.HasIndex(p => p.ChangedAt) .HasMethod("btree") .IsDescending(); // WARNING Для поля AccessPoint.deleted_at не указан диапазон e.Property(p => p.DeletedAt) .HasColumnType("timestamp without time zone") .HasConversion(NullableDateTimeUtcConverter.Instance); // Для поля deleted_at сопоствалений с фильтром и сортировкой не найденно // Дополнительные индексы: // По полю AccessPointFilter.(title,description) e.HasIndex(p => new { p.Title, p.Description }) .HasMethod("gin") .IsTsVectorExpressionIndex("russian"); // WARNING Не удалось найти свойство навигации для поля AccessPoint.device_id // Связь один ко многим e.HasOne(p => p.Flatgramm) .WithMany(p => p.FlatgrammAccessPoints) .HasForeignKey(p => p.FlatgrammId) // WARNING Обязательный FK AccessPoint.flatgramm_id приведёт к проблемам обратной совместимости версий приложений в сценариях удаления .OnDelete(DeleteBehavior.Restrict); }); builder.Entity(e => { // Для поля id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.id ~ filter.user_ids e.HasIndex(p => p.Id) .IsDescending(); // WARNING Для поля Rfid.user_id не указан диапазон // Для поля user_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.user_id ~ filter.user_ids e.HasIndex(p => p.UserId) .IsDescending(); // WARNING Для поля Rfid.description не указан диапазон // Для поля description дополнительные конфигурации свойства не нужны // Для поля description сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля Rfid.company_id не указан диапазон // Для поля company_id дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.company_id ~ filter.company_ids e.HasIndex(p => p.CompanyId) .IsDescending(); // WARNING Для поля Rfid.creator_id не указан диапазон // Для поля creator_id дополнительные конфигурации свойства не нужны // Для поля creator_id сопоствалений с фильтром и сортировкой не найденно // WARNING Для поля Rfid.key не указан диапазон // Для поля key дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.key ~ filter.keys e.HasIndex(p => p.Key) .IsDescending(); e.Property(p => p.PayType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.pay_type ~ filter.pay_types e.HasIndex(p => p.PayType) .IsDescending(); e.Property(p => p.HolderType) .HasMaxLength(32) .HasConversion(new EnumToStringConverter()); // Найдено сопоставление: model.holder_type ~ filter.holder_types e.HasIndex(p => p.HolderType) .IsDescending(); e.Property(p => p.CreatedAt) .HasColumnType("timestamp without time zone") .HasConversion(DateTimeUtcConverter.Instance); // Найдено сопоставление: model.created_at ~ order.CREATED_AT e.HasIndex(p => p.CreatedAt) .HasMethod("btree") .IsDescending(); e.Property(p => p.ChangedAt) .HasColumnType("timestamp without time zone") .HasConversion(NullableDateTimeUtcConverter.Instance); // Найдено сопоставление: model.changed_at ~ order.CHANGED_AT e.HasIndex(p => p.ChangedAt) .HasMethod("btree") .IsDescending(); // Для поля orpon дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.orpon ~ filter.orpons e.HasIndex(p => p.Orpon) .IsDescending(); // Для поля room_number дополнительные конфигурации свойства не нужны // Найдено сопоставление: model.room_number ~ filter.room_numbers e.HasIndex(p => p.RoomNumber) .IsDescending(); // WARNING Не удалось найти свойство навигации для поля Rfid.user_id // WARNING Не удалось найти свойство навигации для поля Rfid.company_id // WARNING Не удалось найти свойство навигации для поля Rfid.creator_id }); builder.HasDefaultSchema("access_control"); } } /// /// Связка точки доступа и группы. /// # Описание модели /// [ Display(Name = @"Связка точки доступа и группы"), Description(@"Описание модели") ] public partial class AccessPointGroupModel { /// /// Идентификатор точки доступа. /// # Тип: Guid /// [ Display(Name = @"Идентификатор точки доступа"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid AccessPointId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public AccessPointModel AccessPoint { get; set; } = null!; /// /// Идентификатор группы. /// # Тип: Guid /// [ Display(Name = @"Идентификатор группы"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid GroupId { get; set; } // WARNING Не удалось найти свойство навигации для поля AccessPointGroup.group_id } /// /// Точка доступа. /// # Описание модели /// [ Display(Name = @"Точка доступа"), Description(@"Описание модели") ] public partial class AccessPointModel { /// /// Идентификатор точки доступа. /// # Тип: Guid /// [ Display(Name = @"Идентификатор точки доступа"), Description(@"Тип: Guid"), CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid Id { get; set; } /// /// Наименование. /// # Диапазон: 3..40 /// [ Display(Name = @"Наименование"), Description(@"Диапазон: 3..40"), CustomRequired, CustomRange(3, 40) ] public string Title { get; set; } = null!; /// /// Описание. /// # Диапазон: 3..200 /// [ Display(Name = @"Описание"), Description(@"Диапазон: 3..200"), CustomRange(3, 200) ] public string? Description { get; set; } /// /// Идентификатор устройства. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор устройства"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля AccessPoint.device_id /// /// Номер реле. /// # Диапазон: 0..100 /// [ Display(Name = @"Номер реле"), Description(@"Диапазон: 0..100"), CustomRange(0, 100) ] public int? RelayIndex { get; set; } /// /// Время задержки в секундах. /// # Диапазон: 1..3600 /// [ Display(Name = @"Время задержки в секундах"), Description(@"Диапазон: 1..3600"), CustomRequired, CustomRange(1, 3600) ] public int Delay { get; set; } /// /// Идентификатор квартирограммы. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор квартирограммы"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int FlatgrammId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public FlatgrammModel Flatgramm { get; set; } = null!; /// /// Тип направления /// [ Display(Name = @"Тип направления"), CustomRequired ] public AccessPointModel.AccessPointDirectionType DirectionType { get; set; } /// /// Список камер /// [ Display(Name = @"Список камер") ] public List Cameras { get; set; } = new(0); /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата последнего изменения. /// Заполняется и обновляется сервером. /// Заполняется при создании и изменении. /// Является версией объекта. /// # Тип: DateTime /// [ Display(Name = @"Дата последнего изменения"), Description(@"Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. Тип: DateTime"), Editable(false) ] public DateTime ChangedAt { get; set; } /// /// Дата удаления. /// # Тип: DateTime? /// [ Display(Name = @"Дата удаления"), Description(@"Тип: DateTime?"), Editable(false) ] public DateTime? DeletedAt { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public List AccessPointGroups { get; set; } = new(0); /// /// Камера /// [ Display(Name = @"Камера") ] public partial class CameraModel { /// /// UID камеры /// [ Display(Name = @"UID камеры"), CustomRequired ] public string Uid { get; set; } = null!; /// /// Типы распознавания /// [ Display(Name = @"Типы распознавания") ] public List RecognitionTypes { get; set; } = new(0); /// /// Тип распознавания. /// Атрибут, определяющий тип данных, который распознает камера. /// # Тип: byte /// [ Description("Атрибут, определяющий тип данных, который распознает камера. Тип: byte") ] public enum AccessPointCameraRecognitionType : byte { /// /// Не указано /// [ Display(Name = @"Не указано"), JsonPropertyName("RECOGNITION_TYPE_UNKNOWN") ] Unknown = 0, /// /// По номеру авто /// [ Display(Name = @"По номеру авто"), JsonPropertyName("CAR_NUMBER") ] CarNumber = 1, /// /// По типу транспорта /// [ Display(Name = @"По типу транспорта"), JsonPropertyName("VEHICLE_TYPE") ] VehicleType = 2, } } /// /// Ошибка сохранения. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public AccessPointModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at оличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at оличаются") ] public partial class ConflictModel { } } /// /// Тип направления. /// # Тип: byte /// [ Description("Тип: byte") ] public enum AccessPointDirectionType : byte { /// /// Не указано /// [ Display(Name = @"Не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// Вход /// [ Display(Name = @"Вход"), JsonPropertyName("IN") ] In = 1, /// /// Выход /// [ Display(Name = @"Выход"), JsonPropertyName("OUT") ] Out = 2, /// /// В обоих направлениях /// [ Display(Name = @"В обоих направлениях"), JsonPropertyName("REVERSE") ] Reverse = 3, } } /// /// Ключ. /// # Описание модели /// [ Display(Name = @"Ключ"), Description(@"Описание модели") ] public partial class RfidModel { /// /// Идентификатор ключа. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор ключа"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Id { get; set; } /// /// Идентификатор пользователя /// [ Display(Name = @"Идентификатор пользователя") ] public int? UserId { get; set; } // WARNING Не удалось найти свойство навигации для поля Rfid.user_id /// /// Системное описание. /// Обычно оставляет УК/Админ, пользователь его не видет /// [ Display(Name = @"Системное описание"), Description(@"Обычно оставляет УК/Админ, пользователь его не видет") ] public string? Description { get; set; } /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании") ] public int? CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля Rfid.company_id /// /// Идентификатор создателя /// [ Display(Name = @"Идентификатор создателя") ] public int? CreatorId { get; set; } // WARNING Не удалось найти свойство навигации для поля Rfid.creator_id /// /// Код ключа (UID). /// Уникальное значение. /// # Паттерн: /^[0-9a-fA-F]{1,14}$/ /// [ Display(Name = @"Код ключа"), Description(@"Уникальное значение. Паттерн: /^[0-9a-fA-F]{1,14}$/"), CustomRequired, CustomPattern(@"^[0-9a-fA-F]{1,14}$") ] public string Key { get; set; } = null!; /// /// Тип оплаты /// [ Display(Name = @"Тип оплаты"), CustomRequired ] public RfidModel.RfidPayType PayType { get; set; } /// /// Тип владельца ключа /// [ Display(Name = @"Тип владельца ключа"), CustomRequired ] public RfidModel.RfidHolderType HolderType { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата обновления. /// # Тип: DateTime? /// [ Display(Name = @"Дата обновления"), Description(@"Тип: DateTime?") ] public DateTime? ChangedAt { get; set; } /// /// ОРПОН дома. /// # Диапазон: 1..9223372036854775807 /// [ Display(Name = @"ОРПОН дома"), Description(@"Диапазон: 1..9223372036854775807"), CustomRequired, CustomRange(1, 9223372036854775807) ] public long Orpon { get; set; } /// /// Номер квартиры. /// # Диапазон: 1..4 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..4"), CustomRequired, CustomRange(1, 4) ] public string RoomNumber { get; set; } = null!; /// /// Ошибка сохранения ключа. /// Эти проверки выполняются при работе с базой данных и сторонними сервисами /// [ Display(Name = @"Ошибка сохранения ключа"), Description(@"Эти проверки выполняются при работе с базой данных и сторонними сервисами") ] public partial class SavingErrorModel { /// /// Конфликт версий /// [ Display(Name = @"Конфликт версий") ] public RfidModel.SavingErrorModel.ConflictModel? Conflict { get; set; } /// /// Данный ключ уже существует /// [ Display(Name = @"Данный ключ уже существует") ] public RfidModel.SavingErrorModel.KeyExistModel? KeyExist { get; set; } /// /// Нельзя изменить код ключа /// [ Display(Name = @"Нельзя изменить код ключа") ] public RfidModel.SavingErrorModel.KeyCodeCannotBeChangedModel? KeyCodeCannotBeChanged { get; set; } /// /// Превышено максимально допустимое количество ключей (16) для квартиры /// [ Display(Name = @"Превышено максимально допустимое количество ключей") ] public RfidModel.SavingErrorModel.ExceededQuantityOfKeysForRoomModel? ExceededQuantityOfKeysForRoom { get; set; } /// /// Ключ используется на другой квартире /// [ Display(Name = @"Ключ используется на другой квартире") ] public RfidModel.SavingErrorModel.KeyIsUsedModel? KeyIsUsed { get; set; } /// /// Нельзя создавать / изменять ключ с переданным типом владельца /// [ Display(Name = @"Нельзя создавать / изменять ключ с переданным типом владельца") ] public RfidModel.SavingErrorModel.HolderTypeForbiddenModel? HolderTypeForbidden { get; set; } /// /// Конфликт версий. /// Причины: /// - В базе хранится другая версия строки, значения changed_at отличаются /// [ Display(Name = @"Конфликт версий"), Description(@"Причины: - В базе хранится другая версия строки, значения changed_at отличаются") ] public partial class ConflictModel { } /// /// Данный ключ уже существует. /// Причины: /// - При попытке создания ключа в системе уже существует ключ с таким же кодом /// [ Display(Name = @"Данный ключ уже существует"), Description(@"Причины: - При попытке создания ключа в системе уже существует ключ с таким же кодом") ] public partial class KeyExistModel { } /// /// Нельзя изменить код ключа. /// Причины: /// - При изменении ключа нельзя менять поле key (код ключа) /// [ Display(Name = @"Нельзя изменить код ключа"), Description(@"Причины: - При изменении ключа нельзя менять поле key (код ключа)") ] public partial class KeyCodeCannotBeChangedModel { } /// /// Превышено максимально допустимое количество ключей (16) для квартиры /// [ Display(Name = @"Превышено максимально допустимое количество ключей") ] public partial class ExceededQuantityOfKeysForRoomModel { } /// /// Ключ используется на другой квартире /// [ Display(Name = @"Ключ используется на другой квартире") ] public partial class KeyIsUsedModel { } /// /// Нельзя создавать / изменять ключ с переданным типом владельца. /// Доступные типы владельца: /// - Жилец (мастер) /// [ Display(Name = @"Нельзя создавать / изменять ключ с переданным типом владельца"), Description(@"Доступные типы владельца: - Жилец (мастер)") ] public partial class HolderTypeForbiddenModel { } } /// /// Тип оплаты /// public enum RfidPayType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PAY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Платный /// [ Display(Name = @"Платный"), JsonPropertyName("PAID") ] Paid = 1, /// /// Бесплатный /// [ Display(Name = @"Бесплатный"), JsonPropertyName("FREE") ] Free = 2, } /// /// Тип владельца ключа /// public enum RfidHolderType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("HOLDER_TYPE_UNKNOWN") ] Unknown = 0, /// /// Жилец /// [ Display(Name = @"Жилец"), JsonPropertyName("MASTER") ] Master = 1, /// /// Сотрудник УК /// [ Display(Name = @"Сотрудник УК"), JsonPropertyName("COMPANY") ] Company = 2, /// /// Ключ сотрудника ГАП /// [ Display(Name = @"Ключ сотрудника ГАП"), JsonPropertyName("EXTERNAL_SELLER") ] ExternalSeller = 3, /// /// Системный ключ /// [ Display(Name = @"Системный ключ"), JsonPropertyName("SYSTEM") ] System = 4, } } /// /// Фильтр по связям точек доступа и групп /// [ Display(Name = @"Фильтр по связям точек доступа и групп") ] public partial class AccessPointGroupFilterModel { /// /// По идентификаторам точки доступа. /// # Тип: Guid /// [ Display(Name = @"По идентификаторам точки доступа"), Description(@"Тип: Guid"), CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public List AccessPointIds { get; set; } = new(0); /// /// По идентификаторам группы. /// # Тип: Guid /// [ Display(Name = @"По идентификаторам группы"), Description(@"Тип: Guid"), CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public List GroupIds { get; set; } = new(0); } /// /// Фильтр по точкам доступа /// [ Display(Name = @"Фильтр по точкам доступа") ] public partial class AccessPointFilterModel { /// /// По тексту. /// Если значение не передано то поиск по нему не производится. /// # Диапазон: 3..64. /// # Поиск производится по полям: /// # - Наименование; /// # - Описание /// [ Display(Name = @"По тексту"), Description(@"Если значение не передано то поиск по нему не производится. Диапазон: 3..64. Поиск производится по полям: - Наименование; - Описание"), CustomRange(3, 64) ] public string? Text { get; set; } /// /// По идентификаторам устройств /// [ Display(Name = @"По идентификаторам устройств") ] public List DeviceIds { get; set; } = new(0); /// /// По идентификаторам квартирограмм /// [ Display(Name = @"По идентификаторам квартирограмм") ] public List FlatgrammIds { get; set; } = new(0); /// /// По типам направления /// [ Display(Name = @"По типам направления") ] public List DirectionTypes { get; set; } = new(0); /// /// По идентификаторам группы. /// # Тип: Guid /// [ Display(Name = @"По идентификаторам группы"), Description(@"Тип: Guid"), CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public List GroupIds { get; set; } = new(0); /// /// По идентификаторам камер /// [ Display(Name = @"По идентификаторам камер") ] public List CameraUids { get; set; } = new(0); } /// /// Фильтр по ключам /// [ Display(Name = @"Фильтр по ключам") ] public partial class RfidFilterModel { /// /// По типам владельца /// [ Display(Name = @"По типам владельца") ] public List HolderTypes { get; set; } = new(0); /// /// По типам оплаты /// [ Display(Name = @"По типам оплаты") ] public List PayTypes { get; set; } = new(0); /// /// По ОРПОНам /// [ Display(Name = @"По ОРПОНам") ] public List Orpons { get; set; } = new(0); /// /// По номерам квартир /// [ Display(Name = @"По номерам квартир") ] public List RoomNumbers { get; set; } = new(0); /// /// По идентификаторам пользователей /// [ Display(Name = @"По идентификаторам пользователей") ] public List UserIds { get; set; } = new(0); /// /// По идентификаторам компаний /// [ Display(Name = @"По идентификаторам компаний") ] public List CompanyIds { get; set; } = new(0); /// /// По кодам ключа /// [ Display(Name = @"По кодам ключа") ] public List Keys { get; set; } = new(0); } /// /// Запрос получения количества квартир /// [ Display(Name = @"Запрос получения количества квартир") ] public partial class GetRoomCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public RoomFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества квартир /// [ Display(Name = @"Ответ на запрос получения количества квартир") ] public partial class GetRoomCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } } /// /// Запрос получения списка квартир /// [ Display(Name = @"Запрос получения списка квартир") ] public partial class GetRoomListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public RoomFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public RoomPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка квартир /// [ Display(Name = @"Ответ на запрос получения списка квартир") ] public partial class GetRoomListResponseModel { /// /// Квартира /// [ Display(Name = @"Квартира") ] public RoomModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRoomListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос проверки существования квартиры по ОРПОН и её номеру /// [ Display(Name = @"Запрос проверки существования квартиры по ОРПОН и её номеру") ] public partial class GetRoomOrponNumberExistsRequestModel { /// /// ОРПОН дома. /// # Диапазон: 1..9223372036854775807 /// [ Display(Name = @"ОРПОН дома"), Description(@"Диапазон: 1..9223372036854775807"), CustomRequired, CustomRange(1, 9223372036854775807) ] public long Orpon { get; set; } /// /// Номер квартиры. /// # Диапазон: 1..4 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..4"), CustomRequired, CustomRange(1, 4) ] public string RoomNumber { get; set; } = null!; } /// /// Ответ на запрос проверки существования квартиры /// [ Display(Name = @"Ответ на запрос проверки существования квартиры") ] public partial class GetRoomOrponNumberExistsResponseModel { /// /// Результат проверки: true - если квартира существует, false - в противном случае /// [ Display(Name = @"Результат проверки: true - если квартира существует, false - в противном случае") ] public bool Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRoomOrponNumberExistsResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения квартиры /// [ Display(Name = @"Запрос получения квартиры") ] public partial class GetRoomRequestModel { /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос получения квартиры /// [ Display(Name = @"Ответ на запрос получения квартиры") ] public partial class GetRoomResponseModel { /// /// Квартира /// [ Display(Name = @"Квартира") ] public RoomModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRoomResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на установку режима подписок /// [ Display(Name = @"Запрос на установку режима подписок") ] public partial class PatchRoomSetSubscriptionModeRequestModel { /// /// Список идентификаторов МРФ /// [ Display(Name = @"Список идентификаторов МРФ") ] public List MrfIds { get; set; } = new(0); /// /// Список идентификаторов РФ /// [ Display(Name = @"Список идентификаторов РФ") ] public List RfIds { get; set; } = new(0); /// /// Идентификатор ОРПОН дома /// [ Display(Name = @"Идентификатор ОРПОН дома") ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля PatchRoomSetSubscriptionModeRequest.orpon_id /// /// Список номеров квартир /// [ Display(Name = @"Список номеров квартир") ] public List RoomNumbers { get; set; } = new(0); /// /// Значение режима подписок /// [ Display(Name = @"Значение режима подписок"), CustomRequired ] public PatchRoomSetSubscriptionModeRequestModel.PatchRoomSetSubscriptionModeRequestModeType ModeType { get; set; } /// /// Справочник значений режимов подписки /// public enum PatchRoomSetSubscriptionModeRequestModeType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("MODE_TYPE_UNKNOWN") ] Unknown = 0, /// /// Выключено /// [ Display(Name = @"Выключено"), JsonPropertyName("DISABLED") ] Disabled = 1, /// /// Включено /// [ Display(Name = @"Включено"), JsonPropertyName("ENABLED") ] Enabled = 2, } } /// /// Ответ на запрос на установку режима подписок /// [ Display(Name = @"Ответ на запрос на установку режима подписок") ] public partial class PatchRoomSetSubscriptionModeResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PatchRoomSetSubscriptionModeResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Не передано значение ОРПОН /// [ Display(Name = @"Не передано значение ОРПОН") ] public PatchRoomSetSubscriptionModeResponseModel.ErrorModel.OrponExpectedModel? OrponExpected { get; set; } /// /// Не передан хотя бы один идентификатор /// [ Display(Name = @"Не передан хотя бы один идентификатор") ] public PatchRoomSetSubscriptionModeResponseModel.ErrorModel.IdExpectedModel? IdExpected { get; set; } /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Не передано значение ОРПОН: /// - Если переданы номера квартир, то значение параметра ОРПОН обязательно /// [ Display(Name = @"Не передано значение ОРПОН:"), Description(@"- Если переданы номера квартир, то значение параметра ОРПОН обязательно") ] public partial class OrponExpectedModel { } /// /// Не передан хотя бы один идентификатор: /// - Должен быть передан хотя бы один из параметров: /// - mrf_ids; /// - rf_ids; /// - opron_id /// [ Display(Name = @"Не передан хотя бы один идентификатор:"), Description(@"- Должен быть передан хотя бы один из параметров: - mrf_ids; - rf_ids; - opron_id") ] public partial class IdExpectedModel { } } } /// /// Квартира /// [ Display(Name = @"Квартира") ] public partial class RoomModel { /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int Id { get; set; } /// /// Номер /// [ Display(Name = @"Номер"), CustomRequired ] public string Number { get; set; } = null!; /// /// Подъезд /// [ Display(Name = @"Подъезд"), CustomRequired ] public int Entrance { get; set; } /// /// Этаж /// [ Display(Name = @"Этаж"), CustomRequired ] public int Floor { get; set; } /// /// Площадь /// [ Display(Name = @"Площадь") ] public float Area { get; set; } /// /// Идентификатор дома /// [ Display(Name = @"Идентификатор дома"), CustomRequired ] public int BuildingId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public BuildingModel Building { get; set; } = null!; /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании"), CustomRequired ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля Room.company_id /// /// Номер абонента /// [ Display(Name = @"Номер абонента"), CustomRequired ] public string AbonentId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля Room.abonent_id /// /// Тип /// [ Display(Name = @"Тип"), CustomRequired ] public RoomModel.RoomType Type { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата удаления. /// # Тип: DateTime /// [ Display(Name = @"Дата удаления"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime DeletedAt { get; set; } /// /// Включен ли режим подписок /// [ Display(Name = @"Включен ли режим подписок"), Editable(false) ] public bool IsSubscriptionModeEnabled { get; set; } /// /// Тип /// public enum RoomType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("TYPE_UNKNOWN") ] Unknown = 0, /// /// Этаж /// [ Display(Name = @"Этаж"), JsonPropertyName("FLOOR") ] Floor = 1, /// /// Подъезд /// [ Display(Name = @"Подъезд"), JsonPropertyName("ENTRANCE") ] Entrance = 2, /// /// Апартаменты /// [ Display(Name = @"Апартаменты"), JsonPropertyName("APARTMENT") ] Apartment = 3, /// /// Вводно-распределительные устройства /// [ Display(Name = @"Вводно-распределительные устройства"), JsonPropertyName("WATER_DISTRIBUTION") ] WaterDistribution = 4, /// /// Индивидуальный тепловой пункт /// [ Display(Name = @"Индивидуальный тепловой пункт"), JsonPropertyName("HEAT_POINT") ] HeatPoint = 5, /// /// Кладовая /// [ Display(Name = @"Кладовая"), JsonPropertyName("PANTRY") ] Pantry = 6, /// /// Колясочная /// [ Display(Name = @"Колясочная"), JsonPropertyName("WHEELCHAIR") ] Wheelchair = 7, /// /// Коммутационный шкаф /// [ Display(Name = @"Коммутационный шкаф"), JsonPropertyName("WIRING_CLOSET") ] WiringCloset = 8, /// /// Консьержная /// [ Display(Name = @"Консьержная"), JsonPropertyName("CONCIERGE") ] Concierge = 9, /// /// КПП /// [ Display(Name = @"КПП"), JsonPropertyName("CHECKPOINT") ] Checkpoint = 10, /// /// Машиноместо /// [ Display(Name = @"Машиноместо"), JsonPropertyName("PARKING_PLACE") ] ParkingPlace = 11, /// /// Офис /// [ Display(Name = @"Офис"), JsonPropertyName("OFFICE") ] Office = 12, /// /// Подвал /// [ Display(Name = @"Подвал"), JsonPropertyName("BASEMENT") ] Basement = 13, /// /// Подстанция /// [ Display(Name = @"Подстанция"), JsonPropertyName("SUBSTATION") ] Substation = 14, /// /// Помещение правления ТСЖ /// [ Display(Name = @"Помещение правления ТСЖ"), JsonPropertyName("HOMEOWNERS_ROOM") ] HomeownersRoom = 15, /// /// Тамбур /// [ Display(Name = @"Тамбур"), JsonPropertyName("TAMBOUR") ] Tambour = 16, /// /// Узел ввода /// [ Display(Name = @"Узел ввода"), JsonPropertyName("INPUT_NODE") ] InputNode = 17, /// /// Лобби /// [ Display(Name = @"Лобби"), JsonPropertyName("LOBBY") ] Lobby = 18, /// /// Чердак /// [ Display(Name = @"Чердак"), JsonPropertyName("ATTIC") ] Attic = 19, /// /// Шахта лифта /// [ Display(Name = @"Шахта лифта"), JsonPropertyName("ELEVATOR_SHAFT") ] ElevatorShaft = 20, /// /// Электрощитовая /// [ Display(Name = @"Электрощитовая"), JsonPropertyName("SWITCHBOARD") ] Switchboard = 21, /// /// Квартира по умолчанию /// [ Display(Name = @"Квартира по умолчанию"), JsonPropertyName("DEFAULT_ROOM") ] DefaultRoom = 22, } } /// /// Фильтр по квартирам /// [ Display(Name = @"Фильтр по квартирам") ] public partial class RoomFilterModel { /// /// По идентификаторам домов /// [ Display(Name = @"По идентификаторам домов") ] public List BuildingIds { get; set; } = new(0); /// /// По подъездам /// [ Display(Name = @"По подъездам") ] public List Entrances { get; set; } = new(0); /// /// По этажам /// [ Display(Name = @"По этажам") ] public List Floors { get; set; } = new(0); /// /// По идентификаторам компаний /// [ Display(Name = @"По идентификаторам компаний") ] public List CompanyIds { get; set; } = new(0); /// /// По типам /// [ Display(Name = @"По типам") ] public List Types { get; set; } = new(0); /// /// По идентификаторам устройств /// [ Display(Name = @"По идентификаторам устройств") ] public List DeviceIds { get; set; } = new(0); /// /// По ОРПОНам /// [ Display(Name = @"По ОРПОНам") ] public List Orpons { get; set; } = new(0); /// /// По признаку служебной квартиры /// [ Display(Name = @"По признаку служебной квартиры") ] public bool? IsServiceFlag { get; set; } /// /// По номерам квартир /// [ Display(Name = @"По номерам квартир") ] public List RoomNumbers { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class RoomPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CREATED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CREATED_AT") ] public RoomPagingModel.RoomPagingOrderByType OrderByType { get; set; } = RoomPagingOrderByType.CreatedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public RoomPagingModel.RoomPagingDirectionType DirectionType { get; set; } = RoomPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RoomPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По времени создания /// [ Display(Name = @"По времени создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 2, /// /// По этажу и номеру /// [ Display(Name = @"По этажу и номеру"), JsonPropertyName("FLOOR_THEN_NUMBER") ] FloorThenNumber = 3, /// /// По номеру /// [ Display(Name = @"По номеру"), JsonPropertyName("NUMBER") ] Number = 4, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RoomPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Ошибки валидации. /// Эти проверки выполняются до обращения в базу данных /// [ Display(Name = @"Ошибки валидации"), Description(@"Эти проверки выполняются до обращения в базу данных") ] public partial class ValidationErrorModel { /// /// Путь к полю в формате наименования прото /// [ Display(Name = @"Путь к полю в формате наименования прото"), CustomRequired ] public string Path { get; set; } = null!; /// /// Валидационное сообщение /// [ Display(Name = @"Валидационное сообщение"), CustomRequired ] public string Message { get; set; } = null!; } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class AccessPointGroupPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: GROUP_ID /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: GROUP_ID") ] public AccessPointGroupPagingModel.AccessPointGroupPagingOrderByType OrderByType { get; set; } = AccessPointGroupPagingOrderByType.GroupId; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public AccessPointGroupPagingModel.AccessPointGroupPagingDirectionType DirectionType { get; set; } = AccessPointGroupPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum AccessPointGroupPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору группы /// [ Display(Name = @"По идентификатору группы"), JsonPropertyName("GROUP_ID") ] GroupId = 1, /// /// По идентификатору точки доступа /// [ Display(Name = @"По идентификатору точки доступа"), JsonPropertyName("ACCESS_POINT_ID") ] AccessPointId = 2, /// /// По дате создания /// [ Display(Name = @"По дате создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 3, } /// /// Справочник типов направлений сортировки; /// # Тип: byte /// [ Description("Тип: byte") ] public enum AccessPointGroupPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос получения количества связей точек доступа и групп /// [ Display(Name = @"Запрос получения количества связей точек доступа и групп") ] public partial class GetAccessPointGroupCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public AccessPointGroupFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества точек доступа /// [ Display(Name = @"Ответ на запрос получения количества точек доступа") ] public partial class GetAccessPointGroupCountResponseModel { /// /// Всего точек доступа /// [ Display(Name = @"Всего точек доступа") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetAccessPointGroupCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения количества точек доступа /// [ Display(Name = @"Ошибка запроса получения количества точек доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение списка связей точек доступа и групп /// [ Display(Name = @"Запрос на получение списка связей точек доступа и групп") ] public partial class GetAccessPointGroupListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public AccessPointGroupFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public AccessPointGroupPagingModel? Paging { get; set; } } /// /// Ответ на получение списка связей точек доступа и групп /// [ Display(Name = @"Ответ на получение списка связей точек доступа и групп") ] public partial class GetAccessPointGroupListResponseModel { /// /// Связь точки доступа и группы /// [ Display(Name = @"Связь точки доступа и группы") ] public AccessPointGroupModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetAccessPointGroupListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка связей точек доступа и групп /// [ Display(Name = @"Ошибка запроса получения списка связей точек доступа и групп") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос создания связи точки доступа и группы /// [ Display(Name = @"Запрос создания связи точки доступа и группы") ] public partial class PutAccessPointGroupAttachRequestModel { /// /// Связь точки доступа и группы /// [ Display(Name = @"Связь точки доступа и группы"), CustomRequired ] public AccessPointGroupModel AccessPointGroup { get; set; } = null!; } /// /// Ответ на запрос сохранения связи точки доступа и группы /// [ Display(Name = @"Ответ на запрос сохранения связи точки доступа и группы") ] public partial class PutAccessPointGroupAttachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutAccessPointGroupAttachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на создание связи точки доступа и группы /// [ Display(Name = @"Ошибка запроса на создание связи точки доступа и группы") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос удаления связи точки доступа и группы /// [ Display(Name = @"Запрос удаления связи точки доступа и группы") ] public partial class PutAccessPointGroupDetachRequestModel { /// /// Связь точки доступа и группы /// [ Display(Name = @"Связь точки доступа и группы"), CustomRequired ] public AccessPointGroupModel AccessPointGroup { get; set; } = null!; } /// /// Ответ на запрос удаления связи точки доступа и группы /// [ Display(Name = @"Ответ на запрос удаления связи точки доступа и группы") ] public partial class PutAccessPointGroupDetachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutAccessPointGroupDetachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на удаление связи точки доступа и группы /// [ Display(Name = @"Ошибка запроса на удаление связи точки доступа и группы") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class AccessPointPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public AccessPointPagingModel.AccessPointPagingOrderByType OrderByType { get; set; } = AccessPointPagingOrderByType.ChangedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public AccessPointPagingModel.AccessPointPagingDirectionType DirectionType { get; set; } = AccessPointPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum AccessPointPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По наименованию /// [ Display(Name = @"По наименованию"), JsonPropertyName("TITLE") ] Title = 2, /// /// Дата последнего изменения /// [ Display(Name = @"Дата последнего изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 3, /// /// Дата создания /// [ Display(Name = @"Дата создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 4, /// /// По рангу для поиска по тексту. /// Применяется когда передано поле для поиска по тексту. /// В случае если текстовое поле не передано, применяется значение по умолчанию /// [ Display(Name = @"По рангу для поиска по тексту"), Description(@"Применяется когда передано поле для поиска по тексту. В случае если текстовое поле не передано, применяется значение по умолчанию"), JsonPropertyName("RANK") ] Rank = 5, } /// /// Справочник типов направлений сортировки; /// # Тип: byte /// [ Description("Тип: byte") ] public enum AccessPointPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос удаления точки доступа /// [ Display(Name = @"Запрос удаления точки доступа") ] public partial class DeleteAccessPointRequestModel { /// /// Идентификатор. /// # Тип: Guid /// [ Display(Name = @"Идентификатор"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid Id { get; set; } } /// /// Ответ на запрос удаления точки доступа /// [ Display(Name = @"Ответ на запрос удаления точки доступа") ] public partial class DeleteAccessPointResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public DeleteAccessPointResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса удаления точки доступа /// [ Display(Name = @"Ошибка запроса удаления точки доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения количества точек доступа /// [ Display(Name = @"Запрос получения количества точек доступа") ] public partial class GetAccessPointCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public AccessPointFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества точек доступа /// [ Display(Name = @"Ответ на запрос получения количества точек доступа") ] public partial class GetAccessPointCountResponseModel { /// /// Всего точек доступа /// [ Display(Name = @"Всего точек доступа") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetAccessPointCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения количества точек доступа /// [ Display(Name = @"Ошибка запроса получения количества точек доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение списка точек доступа /// [ Display(Name = @"Запрос на получение списка точек доступа") ] public partial class GetAccessPointListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public AccessPointFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public AccessPointPagingModel? Paging { get; set; } } /// /// Ответ на получение списка точек доступа /// [ Display(Name = @"Ответ на получение списка точек доступа") ] public partial class GetAccessPointListResponseModel { /// /// Точка доступа /// [ Display(Name = @"Точка доступа") ] public AccessPointModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetAccessPointListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка точек доступа /// [ Display(Name = @"Ошибка запроса получения списка точек доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения точки доступа /// [ Display(Name = @"Запрос получения точки доступа") ] public partial class GetAccessPointRequestModel { /// /// Идентификатор. /// # Тип: Guid /// [ Display(Name = @"Идентификатор"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid Id { get; set; } } /// /// Ответ на запрос получения точки доступа /// [ Display(Name = @"Ответ на запрос получения точки доступа") ] public partial class GetAccessPointResponseModel { /// /// Точка доступа /// [ Display(Name = @"Точка доступа") ] public AccessPointModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetAccessPointResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения точки доступа /// [ Display(Name = @"Ошибка запроса получения точки доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос открытия точки доступа /// [ Display(Name = @"Запрос открытия точки доступа") ] public partial class PostAccessPointOpenRequestModel { /// /// Идентификатор точки доступа. /// # Тип: Guid /// [ Display(Name = @"Идентификатор точки доступа"), Description(@"Тип: Guid"), CustomRequired, CustomPattern(@"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") ] public Guid AccessPointId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public AccessPointModel AccessPoint { get; set; } = null!; /// /// ГРЗ авто. /// # Диапазон: 3..20 /// [ Display(Name = @"ГРЗ авто"), Description(@"Диапазон: 3..20"), CustomRange(3, 20) ] public string? CarNumber { get; set; } /// /// Тип ТС /// [ Display(Name = @"Тип ТС") ] public PostAccessPointOpenRequestModel.PostAccessPointOpenRequestVehicleType VehicleType { get; set; } /// /// Наименование курьерской компании. /// # Диапазон: 3..150 /// [ Display(Name = @"Наименование курьерской компании"), Description(@"Диапазон: 3..150"), CustomRange(3, 150) ] public string? CourierCompanyName { get; set; } /// /// Номер заказа. /// # Диапазон: 3..64 /// [ Display(Name = @"Номер заказа"), Description(@"Диапазон: 3..64"), CustomRange(3, 64) ] public string? OrderNumber { get; set; } /// /// Идентификатор курьера. /// # Диапазон: 3..64 /// [ Display(Name = @"Идентификатор курьера"), Description(@"Диапазон: 3..64"), CustomRange(3, 64) ] public string? CourierId { get; set; } // WARNING Не удалось найти свойство навигации для поля PostAccessPointOpenRequest.courier_id /// /// Тип ТС /// public enum PostAccessPointOpenRequestVehicleType { /// /// Не указано /// [ Display(Name = @"Не указано"), JsonPropertyName("VEHICLE_TYPE_UNKNOWN") ] Unknown = 0, /// /// МЧС /// [ Display(Name = @"МЧС"), JsonPropertyName("EMERGENCY") ] Emergency = 1, /// /// Полиция /// [ Display(Name = @"Полиция"), JsonPropertyName("POLICE") ] Police = 2, /// /// Скорая помощь /// [ Display(Name = @"Скорая помощь"), JsonPropertyName("AMBULANCE") ] Ambulance = 3, /// /// Мусоровоз /// [ Display(Name = @"Мусоровоз"), JsonPropertyName("GARBAGE_TRUCK") ] GarbageTruck = 4, /// /// Такси /// [ Display(Name = @"Такси"), JsonPropertyName("TAXI") ] Taxi = 5, } } /// /// Ответ на запрос открытия точки доступа /// [ Display(Name = @"Ответ на запрос открытия точки доступа") ] public partial class PostAccessPointOpenResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostAccessPointOpenResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса открытия точки доступа /// [ Display(Name = @"Ошибка запроса открытия точки доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на создание/изменение точки доступа /// [ Display(Name = @"Запрос на создание/изменение точки доступа") ] public partial class PostAccessPointRequestModel { /// /// Точка доступа /// [ Display(Name = @"Точка доступа"), CustomRequired ] public AccessPointModel Data { get; set; } = null!; } /// /// Ответ на запрос на создание/изменение точки доступа /// [ Display(Name = @"Ответ на запрос на создание/изменение точки доступа") ] public partial class PostAccessPointResponseModel { /// /// Точка доступа /// [ Display(Name = @"Точка доступа") ] public AccessPointModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostAccessPointResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса сохранения точки доступа /// [ Display(Name = @"Ошибка запроса сохранения точки доступа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка сохранения /// [ Display(Name = @"Ошибка сохранения") ] public AccessPointModel.SavingErrorModel? Saving { get; set; } } } /// /// Запрос на запуск массового оповещения через домофоны /// [ Display(Name = @"Запрос на запуск массового оповещения через домофоны") ] public partial class PostBroadcastAlertStartRequestModel { /// /// Ссылка на звуковой файл для проигрывания. /// Файл должен лежать на внутреннем хранилище. /// # Диапазон: 2..100 /// [ Display(Name = @"Ссылка на звуковой файл для проигрывания"), Description(@"Файл должен лежать на внутреннем хранилище. Диапазон: 2..100"), CustomRequired, CustomRange(2, 100) ] public string SoundFileUri { get; set; } = null!; /// /// Массив ОРПОНов домов, на которых запускаем проигрывание. /// # Диапазон: 1..100 /// [ Display(Name = @"Массив ОРПОНов домов, на которых запускаем проигрывание"), Description(@"Диапазон: 1..100"), CustomRange(1, 100) ] public List Orpons { get; set; } = new(0); /// /// Длительность воспроизведения такта в секундах. /// Такт включает в себя проигрывание файла на трубках или на динамике. /// # Диапазон: 0..65536 /// [ Display(Name = @"Длительность воспроизведения такта в секундах"), Description(@"Такт включает в себя проигрывание файла на трубках или на динамике. Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactPlayDuration { get; set; } /// /// Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactRepeatCount { get; set; } /// /// Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int PlayRepeatCount { get; set; } /// /// Тип проигрывания /// [ Display(Name = @"Тип проигрывания"), CustomRequired ] public PostBroadcastAlertStartRequestModel.PostBroadcastAlertStartRequestPlayType PlayType { get; set; } /// /// Тип проигрывания. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PostBroadcastAlertStartRequestPlayType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PLAY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Только на аналоговые трубки /// [ Display(Name = @"Только на аналоговые трубки"), JsonPropertyName("HANDSET_ONLY") ] HandsetOnly = 1, /// /// Tолько на динамик домофона /// [ Display(Name = @"Tолько на динамик домофона"), JsonPropertyName("SPEAKER_ONLY") ] SpeakerOnly = 2, /// /// Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона /// [ Display(Name = @"Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона"), JsonPropertyName("HANDSET_AND_SPEAKER") ] HandsetAndSpeaker = 3, /// /// Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки /// [ Display(Name = @"Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки"), JsonPropertyName("SPEAKER_AND_HANDSET") ] SpeakerAndHandset = 4, } } /// /// Ответ на запрос на запуск массового оповещения через домофоны /// [ Display(Name = @"Ответ на запрос на запуск массового оповещения через домофоны") ] public partial class PostBroadcastAlertStartResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostBroadcastAlertStartResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Звуковой файл не найден /// [ Display(Name = @"Звуковой файл не найден") ] public PostBroadcastAlertStartResponseModel.ErrorModel.SoundFileNotFoundModel? SoundFileNotFound { get; set; } /// /// Звуковой файл не найден /// [ Display(Name = @"Звуковой файл не найден") ] public partial class SoundFileNotFoundModel { } } } /// /// Запрос на прекращение массового оповещения через домофоны /// [ Display(Name = @"Запрос на прекращение массового оповещения через домофоны") ] public partial class PostBroadcastAlertStopRequestModel { /// /// Массив ОРПОНов домов, на которых запускаем проигрывание. /// # Диапазон: 1..100 /// [ Display(Name = @"Массив ОРПОНов домов, на которых запускаем проигрывание"), Description(@"Диапазон: 1..100"), CustomRange(1, 100) ] public List Orpons { get; set; } = new(0); } /// /// Ответ на запрос на прекращение массового оповещения через домофоны /// [ Display(Name = @"Ответ на запрос на прекращение массового оповещения через домофоны") ] public partial class PostBroadcastAlertStopResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostBroadcastAlertStopResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса /// [ Display(Name = @"Ошибка запроса") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Дом /// [ Display(Name = @"Дом") ] public partial class BuildingModel { /// /// Идентификатор дома /// [ Display(Name = @"Идентификатор дома") ] public int Id { get; set; } /// /// Идентификатор РФ /// [ Display(Name = @"Идентификатор РФ"), CustomRequired ] public int RfId { get; set; } // WARNING Не удалось найти свойство навигации для поля Building.rf_id /// /// Идентификатор МРФ /// [ Display(Name = @"Идентификатор МРФ"), CustomRequired ] public int MrfId { get; set; } // WARNING Не удалось найти свойство навигации для поля Building.mrf_id /// /// ОРПОН /// [ Display(Name = @"ОРПОН"), CustomRequired ] public long Orpon { get; set; } /// /// Город /// [ Display(Name = @"Город"), CustomRequired ] public string City { get; set; } = null!; /// /// Улица /// [ Display(Name = @"Улица"), CustomRequired ] public string Street { get; set; } = null!; /// /// Номер дома /// [ Display(Name = @"Номер дома") ] public string? Number { get; set; } /// /// Корпус /// [ Display(Name = @"Корпус") ] public string? Part { get; set; } /// /// Идентификатор компании /// [ Display(Name = @"Идентификатор компании"), CustomRequired ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля Building.company_id /// /// Префикс /// [ Display(Name = @"Префикс") ] public string? Prefix { get; set; } /// /// Дата создания. /// # Тип: DateTime /// [ Display(Name = @"Дата создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата удаления. /// # Тип: DateTime /// [ Display(Name = @"Дата удаления"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime DeletedAt { get; set; } /// /// Идентификатор квартирограммы /// [ Display(Name = @"Идентификатор квартирограммы"), CustomRequired ] public int FlatgrammId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public FlatgrammModel Flatgramm { get; set; } = null!; /// /// ОРПОН города, в котором находится дом /// [ Display(Name = @"ОРПОН города, в котором находится дом") ] public long CityOrpon { get; set; } /// /// Идентификатор в федеральной информационной адресной системе. /// Тип: Guid /// [ Display(Name = @"Идентификатор в федеральной информационной адресной системе"), Description(@"Тип: Guid") ] public string? Fias { get; set; } /// /// Наименование района города. /// # Диапазон: 0..200 /// [ Display(Name = @"Наименование района города"), Description(@"Диапазон: 0..200"), CustomRange(0, 200) ] public string? District { get; set; } /// /// Уникальный номер адреса. /// # Диапазон: 0..9999999999 /// [ Display(Name = @"Уникальный номер адреса"), Description(@"Диапазон: 0..9999999999"), CustomRange(0, 9999999999) ] public long? Unom { get; set; } /// /// ОРПОН региона /// [ Display(Name = @"ОРПОН региона") ] public long RegionOrpon { get; set; } /// /// Смещение таймзоны в минутах. /// # Диапазон: -720..840 /// [ Display(Name = @"Смещение таймзоны в минутах"), Description(@"Диапазон: -720..840"), CustomRange(-720, 840) ] public int UtcOffset { get; set; } /// /// Флаг указывает на то могут ли жители этого дома приобрести ключи домофона в партнёрских салонах или на маркетплейсах /// [ Display(Name = @"Флаг указывает на то могут ли жители этого дома приобрести ключи домофона в партнёрских салонах или на маркетплейсах") ] public bool IsKeyPurchasePossibleInSalePoints { get; set; } /// /// Флаг указывает на то могут ли жители этого дома приобретать ключи через управляющую компанию /// [ Display(Name = @"Флаг указывает на то могут ли жители этого дома приобретать ключи через управляющую компанию") ] public bool IsKeyPurchasePossibleInManagementCompany { get; set; } /// /// Флаг указывает на то могут ли жители этого дома приобрести ключи напрямую у домофонной компании /// [ Display(Name = @"Флаг указывает на то могут ли жители этого дома приобрести ключи напрямую у домофонной компании") ] public bool IsKeyPurchasePossibleInIntercomCompany { get; set; } /// /// Флаг указывает на то поддерживает ли дом использование RFID-меток с типом MIFARE /// [ Display(Name = @"Флаг указывает на то поддерживает ли дом использование RFID-меток с типом MIFARE") ] public bool IsRfidMifareSupported { get; set; } /// /// Наименование муниципального района. /// # Диапазон: 0..64 /// [ Display(Name = @"Наименование муниципального района"), Description(@"Диапазон: 0..64"), CustomRange(0, 64) ] public string? Area { get; set; } /// /// ОРПОН муниципального района. /// # Диапазон: 0..9999999999 /// [ Display(Name = @"ОРПОН муниципального района"), Description(@"Диапазон: 0..9999999999"), CustomRange(0, 9999999999) ] public long? AreaOrpon { get; set; } /// /// КЛАДР муниципального района. /// # Диапазон: 0..32 /// [ Display(Name = @"КЛАДР муниципального района"), Description(@"Диапазон: 0..32"), CustomRange(0, 32) ] public string? AreaKladr { get; set; } /// /// Признак принадлежности населённого пункта к столичному статусу. /// 1 — центр района. /// 2 — центр региона. /// 3 — центр района и региона. /// 4 — центральный район региона. /// 0 — ничего из перечисленного. /// # Диапазон: 0..4 /// [ Display(Name = @"Признак принадлежности населённого пункта к столичному статусу"), Description(@"1 — центр района. 2 — центр региона. 3 — центр района и региона. 4 — центральный район региона. 0 — ничего из перечисленного. Диапазон: 0..4"), CustomRange(0, 4) ] public int? CapitalMarker { get; set; } /// /// КЛАДР-код города. /// # Диапазон: 0..17 /// [ Display(Name = @"КЛАДР-код города"), Description(@"Диапазон: 0..17"), CustomRange(0, 17) ] public string? CityKladr { get; set; } /// /// КЛАДР-код строения. /// # Диапазон: 0..17 /// [ Display(Name = @"КЛАДР-код строения"), Description(@"Диапазон: 0..17"), CustomRange(0, 17) ] public string? Kladr { get; set; } /// /// Уровень детализации, до которого адрес найден в ФИАС. /// 0 — страна. /// 1 — регион. /// 3 — район. /// 4 — город. /// 5 — район города. /// 6 — населенный пункт. /// 7 — улица. /// 8 — дом. /// 9 — квартира. /// 65 — планировочная структура. /// 90 — доп. территория. /// 91 — улица в доп. территории. /// -1 — иностранный или пустой. /// # Диапазон: -1..99 /// [ Display(Name = @"Уровень детализации, до которого адрес найден в ФИАС"), Description(@"0 — страна. 1 — регион. 3 — район. 4 — город. 5 — район города. 6 — населенный пункт. 7 — улица. 8 — дом. 9 — квартира. 65 — планировочная структура. 90 — доп. территория. 91 — улица в доп. территории. -1 — иностранный или пустой. Диапазон: -1..99"), CustomRange(-1, 99) ] public int? FiasLevel { get; set; } /// /// Уровень детализации, до которого адрес найден в ФИАС. /// 0 — актуальный. /// 1-50 — переименован. /// 51 — переподчинен. /// 99 — удален. /// # Диапазон: 0..99 /// [ Display(Name = @"Уровень детализации, до которого адрес найден в ФИАС"), Description(@"0 — актуальный. 1-50 — переименован. 51 — переподчинен. 99 — удален. Диапазон: 0..99"), CustomRange(0, 99) ] public int? FiasActualityState { get; set; } /// /// Координаты: широта /// [ Display(Name = @"Координаты: широта") ] public double? GeoLat { get; set; } /// /// Координаты: долгота /// [ Display(Name = @"Координаты: долгота") ] public double? GeoLon { get; set; } /// /// Код ОКАТО /// [ Display(Name = @"Код ОКАТО") ] public int? Okato { get; set; } /// /// Код ОКТМО /// [ Display(Name = @"Код ОКТМО") ] public int? Oktmo { get; set; } /// /// Почтовый индекс /// [ Display(Name = @"Почтовый индекс") ] public int? PostalCode { get; set; } /// /// Наименование региона. /// # Диапазон: 0..64 /// [ Display(Name = @"Наименование региона"), Description(@"Диапазон: 0..64"), CustomRange(0, 64) ] public string? Region { get; set; } /// /// КЛАДР-код региона. /// # Диапазон: 0..32 /// [ Display(Name = @"КЛАДР-код региона"), Description(@"Диапазон: 0..32"), CustomRange(0, 32) ] public string? RegionKladr { get; set; } /// /// КЛАДР-код улицы. /// # Диапазон: 0..32 /// [ Display(Name = @"КЛАДР-код улицы"), Description(@"Диапазон: 0..32"), CustomRange(0, 32) ] public string? StreetKladr { get; set; } /// /// ОРПОН улицы. /// # Диапазон: 0..9999999999 /// [ Display(Name = @"ОРПОН улицы"), Description(@"Диапазон: 0..9999999999"), CustomRange(0, 9999999999) ] public long? StreetOrpon { get; set; } } /// /// Фильтр по домам /// [ Display(Name = @"Фильтр по домам") ] public partial class BuildingFilterModel { /// /// По идентификаторам МРФ /// [ Display(Name = @"По идентификаторам МРФ") ] public List MrfIds { get; set; } = new(0); /// /// По идентификаторам РФ /// [ Display(Name = @"По идентификаторам РФ") ] public List RfIds { get; set; } = new(0); /// /// По идентификаторам устройств /// [ Display(Name = @"По идентификаторам устройств") ] public List DeviceIds { get; set; } = new(0); /// /// По идентификаторам квартирограмм /// [ Display(Name = @"По идентификаторам квартирограмм") ] public List FlatgrammIds { get; set; } = new(0); /// /// По орпонам /// [ Display(Name = @"По орпонам") ] public List Orpons { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class BuildingPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CREATED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CREATED_AT") ] public BuildingPagingModel.BuildingPagingOrderByType OrderByType { get; set; } = BuildingPagingOrderByType.CreatedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public BuildingPagingModel.BuildingPagingDirectionType DirectionType { get; set; } = BuildingPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum BuildingPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По времени создания /// [ Display(Name = @"По времени создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 2, /// /// По улице, номеру дома, корпусу /// [ Display(Name = @"По улице, номеру дома, корпусу"), JsonPropertyName("STREET_THEN_NUMBER_THEN_PART") ] StreetThenNumberThenPart = 3, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum BuildingPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Агрегированный статус режима работы с подписками на доме /// [ Display(Name = @"Агрегированный статус режима работы с подписками на доме") ] public partial class BuildingSubscriptionModeModel { /// /// Режим работы с подписками на доме /// [ Display(Name = @"Режим работы с подписками на доме") ] public BuildingSubscriptionModeModel.BuildingSubscriptionModeSubscriptionModeType SubscriptionModeType { get; set; } /// /// Справочник режимов работы с подписками /// public enum BuildingSubscriptionModeSubscriptionModeType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("SUBSCRIPTION_MODE_TYPE_UNKNOWN") ] Unknown = 0, /// /// Режим работы с подписками включен на всех помещениях дома /// [ Display(Name = @"Режим работы с подписками включен на всех помещениях дома"), JsonPropertyName("ENABLED") ] Enabled = 1, /// /// Режим работы с подписками включен на некоторых помещениях дома /// [ Display(Name = @"Режим работы с подписками включен на некоторых помещениях дома"), JsonPropertyName("PARTIALLY_ENABLED") ] PartiallyEnabled = 2, /// /// Режим работы с подписками выключен на всех помещениях дома /// [ Display(Name = @"Режим работы с подписками выключен на всех помещениях дома"), JsonPropertyName("DISABLED") ] Disabled = 3, } } /// /// Запрос получения количества домов /// [ Display(Name = @"Запрос получения количества домов") ] public partial class GetBuildingCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр"), CustomRequired ] public BuildingFilterModel Filter { get; set; } = null!; } /// /// Ответ на запрос получения количества домов /// [ Display(Name = @"Ответ на запрос получения количества домов") ] public partial class GetBuildingCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } } /// /// Запрос получения списка домов /// [ Display(Name = @"Запрос получения списка домов") ] public partial class GetBuildingListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public BuildingFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public BuildingPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка домов /// [ Display(Name = @"Ответ на запрос получения списка домов") ] public partial class GetBuildingListResponseModel { /// /// Квартира /// [ Display(Name = @"Квартира") ] public BuildingModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetBuildingListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос проверки существования дома по ОРПОН /// [ Display(Name = @"Запрос проверки существования дома по ОРПОН") ] public partial class GetBuildingOrponExistsRequestModel { /// /// ОРПОН дома. /// # Диапазон: 1..9223372036854775807 /// [ Display(Name = @"ОРПОН дома"), Description(@"Диапазон: 1..9223372036854775807"), CustomRequired, CustomRange(1, 9223372036854775807) ] public long Orpon { get; set; } } /// /// Ответ на запрос проверки существования дома по ОРПОН /// [ Display(Name = @"Ответ на запрос проверки существования дома по ОРПОН") ] public partial class GetBuildingOrponExistsResponseModel { /// /// Результат проверки: true - если дом существует, false - в противном случае /// [ Display(Name = @"Результат проверки: true - если дом существует, false - в противном случае") ] public bool Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetBuildingOrponExistsResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения агрегированного статуса режима работы с подписками дома /// [ Display(Name = @"Запрос получения агрегированного статуса режима работы с подписками дома") ] public partial class GetBuildingOrponSubscriptionModeRequestModel { /// /// ОРПОН. /// # Диапазон: 1..9223372036854775807 /// [ Display(Name = @"ОРПОН"), Description(@"Диапазон: 1..9223372036854775807"), CustomRequired, CustomRange(1, 9223372036854775807) ] public long Orpon { get; set; } } /// /// Ответ на запрос получения агрегированного статуса режима работы с подписками дома /// [ Display(Name = @"Ответ на запрос получения агрегированного статуса режима работы с подписками дома") ] public partial class GetBuildingOrponSubscriptionModeResponseModel { /// /// Агрегированный статус режима работы с подписками дома /// [ Display(Name = @"Агрегированный статус режима работы с подписками дома") ] public BuildingSubscriptionModeModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetBuildingOrponSubscriptionModeResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения дома /// [ Display(Name = @"Запрос получения дома") ] public partial class GetBuildingRequestModel { /// /// Идентификатор дома /// [ Display(Name = @"Идентификатор дома"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос получения дома /// [ Display(Name = @"Ответ на запрос получения дома") ] public partial class GetBuildingResponseModel { /// /// Квартира /// [ Display(Name = @"Квартира") ] public BuildingModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetBuildingResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на удаление подъезда /// [ Display(Name = @"Запрос на удаление подъезда") ] public partial class DeleteEntranceRequestModel { /// /// ОРПОН дома /// [ Display(Name = @"ОРПОН дома"), CustomRequired ] public long Orpon { get; set; } /// /// Номер подъезда. /// # Диапазон: 1..100 /// [ Display(Name = @"Номер подъезда"), Description(@"Диапазон: 1..100"), CustomRequired, CustomRange(1, 100) ] public int EntranceNumber { get; set; } } /// /// Ответ на запрос удаления подъезда /// [ Display(Name = @"Ответ на запрос удаления подъезда") ] public partial class DeleteEntranceResponseModel { /// /// Ошибка при удалении /// [ Display(Name = @"Ошибка при удалении") ] public DeleteEntranceResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка удаления подъезда /// [ Display(Name = @"Ошибка удаления подъезда") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Существуют связанные устройства /// [ Display(Name = @"Существуют связанные устройства") ] public DeleteEntranceResponseModel.ErrorModel.LinkedDevicesExistsModel? LinkedDevicesExists { get; set; } /// /// Существуют устройства, связанные с квартирами данного подъезда. /// Следует отвязать устройства перед удалением подъезда /// [ Display(Name = @"Существуют устройства, связанные с квартирами данного подъезда"), Description(@"Следует отвязать устройства перед удалением подъезда") ] public partial class LinkedDevicesExistsModel { } } } /// /// Подъезд /// [ Display(Name = @"Подъезд") ] public partial class EntranceModel { /// /// ОРПОН дома /// [ Display(Name = @"ОРПОН дома"), CustomRequired ] public long Orpon { get; set; } /// /// Номер подъезда. /// # Диапазон: 1..100 /// [ Display(Name = @"Номер подъезда"), Description(@"Диапазон: 1..100"), CustomRequired, CustomRange(1, 100) ] public int EntranceNumber { get; set; } /// /// Номер начального помещения. /// # Диапазон: 1..9999 /// [ Display(Name = @"Номер начального помещения"), Description(@"Диапазон: 1..9999"), CustomRequired, CustomRange(1, 9999) ] public int StartRoomNumber { get; set; } /// /// Количество помещений на этаже. /// # Диапазон: 1..1000 /// [ Display(Name = @"Количество помещений на этаже"), Description(@"Диапазон: 1..1000"), CustomRequired, CustomRange(1, 1000) ] public int RoomsCountPerFloor { get; set; } /// /// Количество этажей. /// # Диапазон: 1..100 /// [ Display(Name = @"Количество этажей"), Description(@"Диапазон: 1..100"), CustomRequired, CustomRange(1, 100) ] public int FloorsCount { get; set; } } /// /// Связка подъезда и устройства. /// Реализуется через связь всех помещений в подъезде и устройства /// [ Display(Name = @"Связка подъезда и устройства"), Description(@"Реализуется через связь всех помещений в подъезде и устройства") ] public partial class EntranceDeviceModel { /// /// ОРПОН дома /// [ Display(Name = @"ОРПОН дома"), CustomRequired ] public long Orpon { get; set; } /// /// Номер подъезда. /// # Диапазон: 1..100 /// [ Display(Name = @"Номер подъезда"), Description(@"Диапазон: 1..100"), CustomRequired, CustomRange(1, 100) ] public int EntranceNumber { get; set; } /// /// Идентификатор устройства. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор устройства"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля EntranceDevice.device_id /// /// Тип связки. /// Игнорируется в методах создания и удаления связи /// [ Display(Name = @"Тип связки"), Description(@"Игнорируется в методах создания и удаления связи"), Editable(false) ] public EntranceDeviceModel.EntranceDeviceRelationType RelationType { get; set; } /// /// Тип связки /// public enum EntranceDeviceRelationType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("RELATION_TYPE_UNKNOWN") ] Unknown = 0, /// /// Полная связь /// [ Display(Name = @"Полная связь"), JsonPropertyName("FULL") ] Full = 1, /// /// Частичная связь /// [ Display(Name = @"Частичная связь"), JsonPropertyName("PARTIAL") ] Partial = 2, } } /// /// Фильтр связок подъезд-устройство /// [ Display(Name = @"Фильтр связок подъезд-устройство") ] public partial class EntranceDeviceFilterModel { /// /// По идентификаторам квартирограмм /// [ Display(Name = @"По идентификаторам квартирограмм") ] public List FlatgrammIds { get; set; } = new(0); /// /// По ОРПОН /// [ Display(Name = @"По ОРПОН") ] public List Orpons { get; set; } = new(0); /// /// По номерам подъезда /// [ Display(Name = @"По номерам подъезда") ] public List EntranceNumbers { get; set; } = new(0); /// /// По идентификаторам привязанных устройств /// [ Display(Name = @"По идентификаторам привязанных устройств") ] public List DeviceIds { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class EntranceDevicePagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: ORPON_THEN_ENTRANCE_NUMBER /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: ORPON_THEN_ENTRANCE_NUMBER") ] public EntranceDevicePagingModel.EntranceDevicePagingOrderByType OrderByType { get; set; } = EntranceDevicePagingOrderByType.OrponThenEntranceNumber; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public EntranceDevicePagingModel.EntranceDevicePagingDirectionType DirectionType { get; set; } = EntranceDevicePagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum EntranceDevicePagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По ОРПОНу и номеру подъезда /// [ Display(Name = @"По ОРПОНу и номеру подъезда"), JsonPropertyName("ORPON_THEN_ENTRANCE_NUMBER") ] OrponThenEntranceNumber = 1, /// /// По идентификатору устройства /// [ Display(Name = @"По идентификатору устройства"), JsonPropertyName("DEVICE_ID") ] DeviceId = 2, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum EntranceDevicePagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Фильтр подъездов /// [ Display(Name = @"Фильтр подъездов") ] public partial class EntranceFilterModel { /// /// По идентификаторам квартирограмм /// [ Display(Name = @"По идентификаторам квартирограмм") ] public List FlatgrammIds { get; set; } = new(0); /// /// По ОРПОН /// [ Display(Name = @"По ОРПОН") ] public List Orpons { get; set; } = new(0); /// /// По идентификаторам компаний /// [ Display(Name = @"По идентификаторам компаний") ] public List CompanyIds { get; set; } = new(0); /// /// Тип связи компании с подъездами /// [ Display(Name = @"Тип связи компании с подъездами") ] public EntranceFilterModel.EntranceFilterCompanyRelationType CompanyRelationType { get; set; } /// /// Справочник типов связи компании с подъездами /// public enum EntranceFilterCompanyRelationType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("COMPANY_RELATION_TYPE_UNKNOWN") ] Unknown = 0, /// /// Значение по умолчанию /// [ Display(Name = @"Значение по умолчанию"), JsonPropertyName("DEFAULT") ] Default = 1, /// /// Управляющая компания владеет квартирограммой /// [ Display(Name = @"Управляющая компания владеет квартирограммой"), JsonPropertyName("MANAGEMENT") ] Management = 2, /// /// Домофонная компания обслуживает квартирограмму /// [ Display(Name = @"Домофонная компания обслуживает квартирограмму"), JsonPropertyName("DEVICE_SERVICE") ] DeviceService = 3, } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class EntrancePagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: ORPON_THEN_ENTRANCE_NUMBER /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: ORPON_THEN_ENTRANCE_NUMBER") ] public EntrancePagingModel.EntrancePagingOrderByType OrderByType { get; set; } = EntrancePagingOrderByType.OrponThenEntranceNumber; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public EntrancePagingModel.EntrancePagingDirectionType DirectionType { get; set; } = EntrancePagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum EntrancePagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По ОРПОНу и номеру подъезда /// [ Display(Name = @"По ОРПОНу и номеру подъезда"), JsonPropertyName("ORPON_THEN_ENTRANCE_NUMBER") ] OrponThenEntranceNumber = 1, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum EntrancePagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос на получение связок подъезд-устройство /// [ Display(Name = @"Запрос на получение связок подъезд-устройство") ] public partial class GetEntranceDeviceListRequestModel { /// /// Фильтр по связкам подъезд-устройство /// [ Display(Name = @"Фильтр по связкам подъезд-устройство") ] public EntranceDeviceFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public EntranceDevicePagingModel? Paging { get; set; } } /// /// Ответ на запрос на получение списка связок подъезд-устройство /// [ Display(Name = @"Ответ на запрос на получение списка связок подъезд-устройство") ] public partial class GetEntranceDeviceListResponseModel { /// /// Связка подъезд-устройство /// [ Display(Name = @"Связка подъезд-устройство") ] public EntranceDeviceModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetEntranceDeviceListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на получение списка связок подъезд-устройство /// [ Display(Name = @"Ошибка запроса на получение списка связок подъезд-устройство") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка подъездов /// [ Display(Name = @"Запрос получения списка подъездов") ] public partial class GetEntranceListRequestModel { /// /// Фильтр по подъездам /// [ Display(Name = @"Фильтр по подъездам") ] public EntranceFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public EntrancePagingModel? Paging { get; set; } } /// /// Ответ на запрос на получение списка подъездов /// [ Display(Name = @"Ответ на запрос на получение списка подъездов") ] public partial class GetEntranceListResponseModel { /// /// Подъезд /// [ Display(Name = @"Подъезд") ] public EntranceModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetEntranceListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на получение списка подъездов /// [ Display(Name = @"Ошибка запроса на получение списка подъездов") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос сохранения подъезда /// [ Display(Name = @"Запрос сохранения подъезда") ] public partial class PostEntranceRequestModel { /// /// Подъезд /// [ Display(Name = @"Подъезд"), CustomRequired ] public EntranceModel Data { get; set; } = null!; } /// /// Ответ на запрос сохранения подъезда /// [ Display(Name = @"Ответ на запрос сохранения подъезда") ] public partial class PostEntranceResponseModel { /// /// Подъезд /// [ Display(Name = @"Подъезд") ] public EntranceModel? Data { get; set; } /// /// Ошибка при удалении /// [ Display(Name = @"Ошибка при удалении") ] public PostEntranceResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка сохранения подъезда /// [ Display(Name = @"Ошибка сохранения подъезда") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос создания связи подъезда и устройства /// [ Display(Name = @"Запрос создания связи подъезда и устройства") ] public partial class PutEntranceDeviceAttachRequestModel { /// /// Связь подъезда и устройства /// [ Display(Name = @"Связь подъезда и устройства"), CustomRequired ] public EntranceDeviceModel EntranceDevice { get; set; } = null!; } /// /// Ответ на запрос сохранения связи подъезда и устройства /// [ Display(Name = @"Ответ на запрос сохранения связи подъезда и устройства") ] public partial class PutEntranceDeviceAttachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutEntranceDeviceAttachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на создание связи подъезда и устройства /// [ Display(Name = @"Ошибка запроса на создание связи подъезда и устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос удаления связи подъезда и устройства /// [ Display(Name = @"Запрос удаления связи подъезда и устройства") ] public partial class PutEntranceDeviceDetachRequestModel { /// /// Связь подъезда и устройства /// [ Display(Name = @"Связь подъезда и устройства"), CustomRequired ] public EntranceDeviceModel EntranceDevice { get; set; } = null!; } /// /// Ответ на запрос удаления связи подъезда и устройства /// [ Display(Name = @"Ответ на запрос удаления связи подъезда и устройства") ] public partial class PutEntranceDeviceDetachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutEntranceDeviceDetachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на удаления связи подъезда и устройства /// [ Display(Name = @"Ошибка запроса на удаления связи подъезда и устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Задача на активацию аналоговых трубок квартир для устройства на доме. /// Очередь key.access_control.activate_cms /// [ Display(Name = @"Задача на активацию аналоговых трубок квартир для устройства на доме"), Description(@"Очередь key.access_control.activate_cms") ] public partial class ActivateCmsSettingsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ActivateCmsSettingsTask.request_id /// /// Идентификатор ОРПОН дома /// [ Display(Name = @"Идентификатор ОРПОН дома"), CustomRequired ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля ActivateCmsSettingsTask.orpon_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля ActivateCmsSettingsTask.device_id /// /// Номера квартир с включенным режимом подписок, у которых блокируется аналоговая трубка /// [ Display(Name = @"Номера квартир с включенным режимом подписок, у которых блокируется аналоговая трубка"), CustomRequired ] public List RoomNumbers { get; set; } = new(0); } /// /// Задача на блокировку аналоговых трубок квартир для устройства на доме. /// Очередь key.access_control.block_cms /// [ Display(Name = @"Задача на блокировку аналоговых трубок квартир для устройства на доме"), Description(@"Очередь key.access_control.block_cms") ] public partial class BlockCmsSettingsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля BlockCmsSettingsTask.request_id /// /// Идентификатор ОРПОН дома /// [ Display(Name = @"Идентификатор ОРПОН дома"), CustomRequired ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля BlockCmsSettingsTask.orpon_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля BlockCmsSettingsTask.device_id /// /// Номера квартир с включенным режимом подписок, у которых активируется аналоговая трубка /// [ Display(Name = @"Номера квартир с включенным режимом подписок, у которых активируется аналоговая трубка"), CustomRequired ] public List RoomNumbers { get; set; } = new(0); } /// /// Задача ответ на конфигурацию квартир. /// Очередь key.access_control.configure_rooms_result /// [ Display(Name = @"Задача ответ на конфигурацию квартир"), Description(@"Очередь key.access_control.configure_rooms_result") ] public partial class ConfigureRoomsResultTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ConfigureRoomsResultTask.request_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля ConfigureRoomsResultTask.device_id /// /// Список квартир с результатом конфигурации /// [ Display(Name = @"Список квартир с результатом конфигурации"), CustomRequired ] public List Rooms { get; set; } = new(0); /// /// Результат конфигурации квартиры /// [ Display(Name = @"Результат конфигурации квартиры") ] public partial class RoomModel { /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int RoomId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RoomModel Room { get; set; } = null!; /// /// Признак \"Сконфигурировано\" /// [ Display(Name = @"Признак ""Сконфигурировано"""), CustomRequired ] public bool IsConfigured { get; set; } /// /// Текст ошибки /// [ Display(Name = @"Текст ошибки") ] public string? ErrorMessage { get; set; } } } /// /// Задача на удаление кодов с устройств. /// Очередь key.access_control.delete_codes_from_devices /// [ Display(Name = @"Задача на удаление кодов с устройств"), Description(@"Очередь key.access_control.delete_codes_from_devices") ] public partial class DeleteCodesFromDevicesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteCodesFromDevicesTask.request_id /// /// Список кодов /// [ Display(Name = @"Список кодов"), CustomRequired ] public List Codes { get; set; } = new(0); /// /// Список идентификаторов устройств /// [ Display(Name = @"Список идентификаторов устройств"), CustomRequired ] public List DeviceIds { get; set; } = new(0); /// /// Удаление без ожидания ответа от устройства /// [ Display(Name = @"Удаление без ожидания ответа от устройства") ] public bool? IsForceDelete { get; set; } /// /// Код /// [ Display(Name = @"Код") ] public partial class CodeModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } /// /// Значение кода /// [ Display(Name = @"Значение кода"), CustomRequired ] public string Code { get; set; } = null!; /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int RoomId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RoomModel Room { get; set; } = null!; } } /// /// Результат задачи на удаление ключа со всех устройств. /// Очередь key.access_control.delete_rfids_from_all_devices_result /// [ Display(Name = @"Результат задачи на удаление ключа со всех устройств"), Description(@"Очередь key.access_control.delete_rfids_from_all_devices_result") ] public partial class DeleteRfidsFromAllDevicesResultTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteRfidsFromAllDevicesResultTask.request_id /// /// Идентификатор ключа /// [ Display(Name = @"Идентификатор ключа"), CustomRequired ] public int RfidId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RfidModel Rfid { get; set; } = null!; /// /// Статус удаления ключа со всех устройств /// [ Display(Name = @"Статус удаления ключа со всех устройств"), CustomRequired ] public DeleteRfidsFromAllDevicesResultTaskModel.DeleteRfidsFromAllDevicesResultTaskStatusType StatusType { get; set; } /// /// Справочник статусов удаления ключа со всех устройств. /// # Тип: byte /// [ Description("Тип: byte") ] public enum DeleteRfidsFromAllDevicesResultTaskStatusType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("STATUS_TYPE_UNKNOWN") ] Unknown = 0, /// /// Настроен /// [ Display(Name = @"Настроен"), JsonPropertyName("SUCCESS") ] Success = 1, /// /// Ошибка /// [ Display(Name = @"Ошибка"), JsonPropertyName("ERROR") ] Error = 2, } } /// /// Задача на удаление ключей со всех устройств. /// Очередь key.access_control.delete_rfids_from_all_devices /// [ Display(Name = @"Задача на удаление ключей со всех устройств"), Description(@"Очередь key.access_control.delete_rfids_from_all_devices") ] public partial class DeleteRfidsFromAllDevicesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteRfidsFromAllDevicesTask.request_id /// /// Список ключей /// [ Display(Name = @"Список ключей"), CustomRequired ] public List Rfids { get; set; } = new(0); /// /// Удаление без ожидания ответа от устройства /// [ Display(Name = @"Удаление без ожидания ответа от устройства") ] public bool? IsForceDelete { get; set; } /// /// Ключ /// [ Display(Name = @"Ключ") ] public partial class RfidModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int RoomId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RoomModel Room { get; set; } = null!; } } /// /// Задача на удаление ключей с устройств. /// Очередь key.access_control.delete_rfids_from_devices /// [ Display(Name = @"Задача на удаление ключей с устройств"), Description(@"Очередь key.access_control.delete_rfids_from_devices") ] public partial class DeleteRfidsFromDevicesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля DeleteRfidsFromDevicesTask.request_id /// /// Список ключей /// [ Display(Name = @"Список ключей"), CustomRequired ] public List Rfids { get; set; } = new(0); /// /// Список идентификаторов устройств /// [ Display(Name = @"Список идентификаторов устройств"), CustomRequired ] public List DeviceIds { get; set; } = new(0); /// /// Удаление без ожидания ответа от устройства /// [ Display(Name = @"Удаление без ожидания ответа от устройства") ] public bool? IsForceDelete { get; set; } /// /// Ключ /// [ Display(Name = @"Ключ") ] public partial class RfidModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int RoomId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RoomModel Room { get; set; } = null!; } } /// /// Задача на активацию аналоговых трубок квартир для устройства на доме без дополнительных проверок на устройстве. /// Очередь key.access_control.force_activate_cms /// [ Display(Name = @"Задача на активацию аналоговых трубок квартир для устройства на доме без дополнительных проверок на устройстве"), Description(@"Очередь key.access_control.force_activate_cms") ] public partial class ForceActivateCmsSettingsTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля ForceActivateCmsSettingsTask.request_id /// /// Идентификатор ОРПОН дома /// [ Display(Name = @"Идентификатор ОРПОН дома"), CustomRequired ] public long OrponId { get; set; } // WARNING Не удалось найти свойство навигации для поля ForceActivateCmsSettingsTask.orpon_id /// /// Идентификатор устройства /// [ Display(Name = @"Идентификатор устройства"), CustomRequired ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля ForceActivateCmsSettingsTask.device_id /// /// Номера квартир для которых необходимо активация аналоговых трубок /// [ Display(Name = @"Номера квартир для которых необходимо активация аналоговых трубок"), CustomRequired ] public List RoomNumbers { get; set; } = new(0); } /// /// Задача на добавление кодов на устройства. /// Очередь key.access_control.load_codes_to_devices /// [ Display(Name = @"Задача на добавление кодов на устройства"), Description(@"Очередь key.access_control.load_codes_to_devices") ] public partial class LoadCodesToDevicesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля LoadCodesToDevicesTask.request_id /// /// Список кодов /// [ Display(Name = @"Список кодов"), CustomRequired ] public List Codes { get; set; } = new(0); /// /// Список идентификаторов устройств /// [ Display(Name = @"Список идентификаторов устройств"), CustomRequired ] public List DeviceIds { get; set; } = new(0); /// /// Код /// [ Display(Name = @"Код") ] public partial class CodeModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } /// /// Значение кода /// [ Display(Name = @"Значение кода"), CustomRequired ] public string Code { get; set; } = null!; /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int RoomId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RoomModel Room { get; set; } = null!; } } /// /// Задача на добавление ключей на устройства. /// Очередь key.access_control.load_rfids_to_devices /// [ Display(Name = @"Задача на добавление ключей на устройства"), Description(@"Очередь key.access_control.load_rfids_to_devices") ] public partial class LoadRfidsToDevicesTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля LoadRfidsToDevicesTask.request_id /// /// Список ключей /// [ Display(Name = @"Список ключей"), CustomRequired ] public List Rfids { get; set; } = new(0); /// /// Список идентификаторов устройств /// [ Display(Name = @"Список идентификаторов устройств"), CustomRequired ] public List DeviceIds { get; set; } = new(0); /// /// Ключ /// [ Display(Name = @"Ключ") ] public partial class RfidModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } /// /// Значение ключа /// [ Display(Name = @"Значение ключа"), CustomRequired ] public string Key { get; set; } = null!; /// /// Номер квартиры /// [ Display(Name = @"Номер квартиры"), CustomRequired ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор квартиры /// [ Display(Name = @"Идентификатор квартиры"), CustomRequired ] public int RoomId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public RoomModel Room { get; set; } = null!; } } /// /// Команда на подготовку и старт оповещения через домофоны. /// Очередь key.access_control.alert.prepare_start /// [ Display(Name = @"Команда на подготовку и старт оповещения через домофоны"), Description(@"Очередь key.access_control.alert.prepare_start") ] public partial class PrepareStartTaskModel { /// /// Идентификатор запроса /// [ Display(Name = @"Идентификатор запроса"), CustomRequired ] public string RequestId { get; set; } = null!; // WARNING Не удалось найти свойство навигации для поля PrepareStartTask.request_id /// /// Ссылка на звуковой файл для проигрывания. /// Файл должен лежать на внутреннем хранилище. /// # Диапазон: 2..100 /// [ Display(Name = @"Ссылка на звуковой файл для проигрывания"), Description(@"Файл должен лежать на внутреннем хранилище. Диапазон: 2..100"), CustomRequired, CustomRange(2, 100) ] public string SoundFileUri { get; set; } = null!; /// /// Идентификатор ОРПОН дома, на котором запускаем проигрывание /// [ Display(Name = @"Идентификатор ОРПОН дома, на котором запускаем проигрывание"), CustomRequired ] public long Orpon { get; set; } /// /// Длительность воспроизведения такта в секундах. /// Такт включает в себя проигрывание файла на трубках или на динамике. /// # Диапазон: 0..65536 /// [ Display(Name = @"Длительность воспроизведения такта в секундах"), Description(@"Такт включает в себя проигрывание файла на трубках или на динамике. Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactPlayDuration { get; set; } /// /// Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int TactRepeatCount { get; set; } /// /// Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта. /// # Диапазон: 0..65536 /// [ Display(Name = @"Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта"), Description(@"Диапазон: 0..65536"), CustomRequired, CustomRange(0, 65536) ] public int PlayRepeatCount { get; set; } /// /// Тип проигрывания /// [ Display(Name = @"Тип проигрывания"), CustomRequired ] public PrepareStartTaskModel.PrepareStartTaskPlayType PlayType { get; set; } /// /// Тип проигрывания. /// # Тип: byte /// [ Description("Тип: byte") ] public enum PrepareStartTaskPlayType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("PLAY_TYPE_UNKNOWN") ] Unknown = 0, /// /// Только на аналоговые трубки /// [ Display(Name = @"Только на аналоговые трубки"), JsonPropertyName("HANDSET_ONLY") ] HandsetOnly = 1, /// /// Tолько на динамик домофона /// [ Display(Name = @"Tолько на динамик домофона"), JsonPropertyName("SPEAKER_ONLY") ] SpeakerOnly = 2, /// /// Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона /// [ Display(Name = @"Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона"), JsonPropertyName("HANDSET_AND_SPEAKER") ] HandsetAndSpeaker = 3, /// /// Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки /// [ Display(Name = @"Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки"), JsonPropertyName("SPEAKER_AND_HANDSET") ] SpeakerAndHandset = 4, } } /// /// Связка квартирограммы и домофонной компании. /// Задает область ресурсов (resource scope), доступную пользователю. /// Используется для контроля доступа к квартирограмме /// [ Display(Name = @"Связка квартирограммы и домофонной компании"), Description(@"Задает область ресурсов (resource scope), доступную пользователю. Используется для контроля доступа к квартирограмме") ] public partial class DcCompanyFlatgrammModel { /// /// Идентификатор домофонной компании. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор домофонной компании"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля DcCompanyFlatgramm.company_id /// /// Идентификатор квартирограммы. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор квартирограммы"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int FlatgrammId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public FlatgrammModel Flatgramm { get; set; } = null!; } /// /// Фильтр для запроса связей квартирограммы и домофонной компании. /// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ. /// При передаче нескольких разных параметров фильтра они работают в выборке через И /// [ Display(Name = @"Фильтр для запроса связей квартирограммы и домофонной компании"), Description(@"При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ. При передаче нескольких разных параметров фильтра они работают в выборке через И") ] public partial class DcCompanyFlatgrammFilterModel { /// /// По Идентификатору домофонной компании /// [ Display(Name = @"По Идентификатору домофонной компании") ] public List CompanyIds { get; set; } = new(0); /// /// По Идентификатору квартирограммы /// [ Display(Name = @"По Идентификатору квартирограммы") ] public List FlatgrammIds { get; set; } = new(0); } /// /// Пагинация квартирограмм и домофонной компании /// [ Display(Name = @"Пагинация квартирограмм и домофонной компании") ] public partial class DcCompanyFlatgrammPagingModel { /// /// Тип значения сортировки. /// По умолчанию: COMPANY_ID /// [ Display(Name = @"Тип значения сортировки"), Description(@"По умолчанию: COMPANY_ID") ] public DcCompanyFlatgrammPagingModel.DcCompanyFlatgrammPagingOrderByType OrderByType { get; set; } /// /// Тип направления сортировки. /// По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public DcCompanyFlatgrammPagingModel.DcCompanyFlatgrammPagingDirectionType DirectionType { get; set; } /// /// Количество записей на страницу. /// Минимальное значение: 1. /// Максимальное значение: 100. /// По умолчанию: 20. /// Если значение 0 (не передано), то выставляем значение по умолчанию /// [ Display(Name = @"Количество записей на страницу"), Description(@"Минимальное значение: 1. Максимальное значение: 100. По умолчанию: 20. Если значение 0 (не передано), то выставляем значение по умолчанию") ] public int Limit { get; set; } /// /// Сдвиг. /// По умолчанию: 0 /// [ Display(Name = @"Сдвиг"), Description(@"По умолчанию: 0") ] public int Offset { get; set; } /// /// Справочник типов сортировки /// public enum DcCompanyFlatgrammPagingOrderByType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По Идентификатору домофонной компании /// [ Display(Name = @"По Идентификатору домофонной компании"), JsonPropertyName("COMPANY_ID") ] CompanyId = 1, /// /// По Идентификатору квартирограммы /// [ Display(Name = @"По Идентификатору квартирограммы"), JsonPropertyName("FLATGRAMM_ID") ] FlatgrammId = 2, } /// /// Справочник типов направлений сортировки /// public enum DcCompanyFlatgrammPagingDirectionType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Облегченная квартирограмма /// [ Display(Name = @"Облегченная квартирограмма") ] public partial class FlatgrammModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор") ] public int Id { get; set; } /// /// Наименование /// [ Display(Name = @"Наименование"), CustomRequired ] public string Title { get; set; } = null!; /// /// Идентификатор компании - владельца /// [ Display(Name = @"Идентификатор компании - владельца") ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля Flatgramm.company_id /// /// Дата и время создания. /// # Тип: DateTime /// [ Display(Name = @"Дата и время создания"), Description(@"Тип: DateTime"), Editable(false) ] public DateTime CreatedAt { get; set; } /// /// Дата последнего изменения. /// Заполняется и обновляется сервером. /// Заполняется при создании и изменении. /// Является версией объекта. /// # Тип: DateTime /// [ Display(Name = @"Дата последнего изменения"), Description(@"Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. Тип: DateTime"), Editable(false) ] public DateTime ChangedAt { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public List FlatgrammAccessPoints { get; set; } = new(0); } /// /// Связка квартирограммы и компании. /// Задает область ресурсов (resource scope), доступную пользователю. /// Используется для контроля доступа к квартирограмме /// [ Display(Name = @"Связка квартирограммы и компании"), Description(@"Задает область ресурсов (resource scope), доступную пользователю. Используется для контроля доступа к квартирограмме") ] public partial class FlatgrammCompanyRelationModel { /// /// Идентификатор компании. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор компании"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int CompanyId { get; set; } // WARNING Не удалось найти свойство навигации для поля FlatgrammCompanyRelation.company_id /// /// Идентификатор квартирограммы. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор квартирограммы"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int FlatgrammId { get; set; } /// /// Свойство навигации /// [ JsonIgnore ] public FlatgrammModel Flatgramm { get; set; } = null!; /// /// Тип связи компании и квартирограммы /// [ Display(Name = @"Тип связи компании и квартирограммы"), CustomRequired ] public FlatgrammCompanyRelationModel.FlatgrammCompanyRelationType Type { get; set; } /// /// Тип связи компании и квартирограммы. /// По умолчанию OWNER. /// # Тип: byte /// [ Description("По умолчанию OWNER. Тип: byte") ] public enum FlatgrammCompanyRelationType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("TYPE_UNKNOWN") ] Unknown = 0, /// /// Управляющая компания владеет квартирограммой /// [ Display(Name = @"Управляющая компания владеет квартирограммой"), JsonPropertyName("MANAGEMENT") ] Management = 1, /// /// Домофонная компания обслуживает квартирограмму /// [ Display(Name = @"Домофонная компания обслуживает квартирограмму"), JsonPropertyName("DEVICE_SERVICE") ] DeviceService = 2, } } /// /// Фильтр для запроса связей квартирограммы и компании. /// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ. /// При передаче нескольких разных параметров фильтра они работают в выборке через И /// [ Display(Name = @"Фильтр для запроса связей квартирограммы и компании"), Description(@"При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ. При передаче нескольких разных параметров фильтра они работают в выборке через И") ] public partial class FlatgrammCompanyRelationFilterModel { /// /// По Идентификатору квартирограммы /// [ Display(Name = @"По Идентификатору квартирограммы") ] public List FlatgrammIds { get; set; } = new(0); /// /// По Идентификатору компании /// [ Display(Name = @"По Идентификатору компании") ] public List CompanyIds { get; set; } = new(0); /// /// Тип назначения компании для квартирограммы /// [ Display(Name = @"Тип назначения компании для квартирограммы") ] public List FlatgrammCompanyRelationTypes { get; set; } = new(0); } /// /// Пагинация квартирограмм и компаний /// [ Display(Name = @"Пагинация квартирограмм и компаний") ] public partial class FlatgrammCompanyRelationPagingModel { /// /// Тип значения сортировки. /// По умолчанию: COMPANY_ID /// [ Display(Name = @"Тип значения сортировки"), Description(@"По умолчанию: COMPANY_ID") ] public FlatgrammCompanyRelationPagingModel.FlatgrammCompanyRelationPagingOrderByType OrderByType { get; set; } /// /// Тип направления сортировки. /// По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public FlatgrammCompanyRelationPagingModel.FlatgrammCompanyRelationPagingDirectionType DirectionType { get; set; } /// /// Количество записей на страницу. /// Минимальное значение: 1. /// Максимальное значение: 100. /// По умолчанию: 20. /// Если значение 0 (не передано), то выставляем значение по умолчанию /// [ Display(Name = @"Количество записей на страницу"), Description(@"Минимальное значение: 1. Максимальное значение: 100. По умолчанию: 20. Если значение 0 (не передано), то выставляем значение по умолчанию") ] public int Limit { get; set; } /// /// Сдвиг. /// По умолчанию: 0 /// [ Display(Name = @"Сдвиг"), Description(@"По умолчанию: 0") ] public int Offset { get; set; } /// /// Справочник типов сортировки /// public enum FlatgrammCompanyRelationPagingOrderByType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По Идентификатору компании /// [ Display(Name = @"По Идентификатору компании"), JsonPropertyName("COMPANY_ID") ] CompanyId = 1, /// /// По Идентификатору квартирограммы /// [ Display(Name = @"По Идентификатору квартирограммы"), JsonPropertyName("FLATGRAMM_ID") ] FlatgrammId = 2, } /// /// Справочник типов направлений сортировки /// public enum FlatgrammCompanyRelationPagingDirectionType { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Фильтр квартирограмм /// [ Display(Name = @"Фильтр квартирограмм") ] public partial class FlatgrammFilterModel { /// /// По идентификаторам компаний. /// Фильтрация среди компаний, тип связи компании и КВГ определяется по полю company_relation_types. /// Если company_relation_types не передан, то учитываются все значения типа FlatgrammCompanyRelation.Type /// [ Display(Name = @"По идентификаторам компаний"), Description(@"Фильтрация среди компаний, тип связи компании и КВГ определяется по полю company_relation_types. Если company_relation_types не передан, то учитываются все значения типа FlatgrammCompanyRelation.Type") ] public List CompanyIds { get; set; } = new(0); /// /// Поиск по тексту. /// Если значение не передано то поиск по нему не производится. /// # Диапазон: 3..64. /// # Поиск производится по полям: /// # - Наименование /// [ Display(Name = @"Поиск по тексту"), Description(@"Если значение не передано то поиск по нему не производится. Диапазон: 3..64. Поиск производится по полям: - Наименование"), CustomRange(3, 64) ] public string? Text { get; set; } /// /// По идентификаторам компаний. /// Фильтрация среди компаний, привязанных как домофонные компании /// [ Obsolete("Поле использовать нельзя. Добавлено для совместимости со старыми флоу."), Display(Name = @"По идентификаторам компаний"), Description(@"Фильтрация среди компаний, привязанных как домофонные компании") ] public List DcCompanyIds { get; set; } = new(0); /// /// По типу связи квартирограмм и компаний /// [ Display(Name = @"По типу связи квартирограмм и компаний") ] public List FlatgrammCompanyRelationTypes { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class FlatgrammPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public FlatgrammPagingModel.FlatgrammPagingOrderByType OrderByType { get; set; } = FlatgrammPagingOrderByType.ChangedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public FlatgrammPagingModel.FlatgrammPagingDirectionType DirectionType { get; set; } = FlatgrammPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum FlatgrammPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("ID") ] Id = 1, /// /// По времени создания /// [ Display(Name = @"По времени создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 2, /// /// По времени изменения /// [ Display(Name = @"По времени изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 3, /// /// По рангу для поиска по тексту. /// Применяется когда передано поле для поиска по тексту. /// В случае если текстовое поле не передано, применяется значение по умолчанию /// [ Display(Name = @"По рангу для поиска по тексту"), Description(@"Применяется когда передано поле для поиска по тексту. В случае если текстовое поле не передано, применяется значение по умолчанию"), JsonPropertyName("RANK") ] Rank = 4, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum FlatgrammPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос получения количества связей квартирограмм и компаний /// [ Display(Name = @"Запрос получения количества связей квартирограмм и компаний") ] public partial class GetFlatgrammCompanyRelationCountRequestModel { /// /// Фильтр связей квартирограмм и компании /// [ Display(Name = @"Фильтр связей квартирограмм и компании") ] public FlatgrammCompanyRelationFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества связей квартирограмм и компаний /// [ Display(Name = @"Ответ на запрос получения количества связей квартирограмм и компаний") ] public partial class GetFlatgrammCompanyRelationCountResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetFlatgrammCompanyRelationCountResponseModel.ErrorModel? Error { get; set; } /// /// Всего связей квартирограмм и компаний /// [ Display(Name = @"Всего связей квартирограмм и компаний") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка /// [ Display(Name = @"Запрос получения списка") ] public partial class GetFlatgrammCompanyRelationListRequestModel { /// /// Фильтр связей квартирограмм и компаний /// [ Display(Name = @"Фильтр связей квартирограмм и компаний") ] public FlatgrammCompanyRelationFilterModel? Filter { get; set; } /// /// Пагинация /// [ Display(Name = @"Пагинация") ] public FlatgrammCompanyRelationPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка связей квартирограмм и компаний /// [ Display(Name = @"Ответ на запрос получения списка связей квартирограмм и компаний") ] public partial class GetFlatgrammCompanyRelationListResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetFlatgrammCompanyRelationListResponseModel.ErrorModel? Error { get; set; } /// /// Связь квартирограммы и компании /// [ Display(Name = @"Связь квартирограммы и компании") ] public FlatgrammCompanyRelationModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения количества упрощенных квартирограмм /// [ Display(Name = @"Запрос получения количества упрощенных квартирограмм") ] public partial class GetFlatgrammCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public FlatgrammFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества упрощенных квартирограмм /// [ Display(Name = @"Ответ на запрос получения количества упрощенных квартирограмм") ] public partial class GetFlatgrammCountResponseModel { /// /// Всего упрощенных квартирограмм /// [ Display(Name = @"Всего упрощенных квартирограмм") ] public int Data { get; set; } } /// /// Запрос получения количества связей квартирограмм и домофонной компании /// [ Display(Name = @"Запрос получения количества связей квартирограмм и домофонной компании") ] public partial class GetFlatgrammDcCompanyCountRequestModel { /// /// Фильтр связей квартирограмм и домофонной компании /// [ Display(Name = @"Фильтр связей квартирограмм и домофонной компании") ] public DcCompanyFlatgrammFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества связей квартирограмм и домофонной компании /// [ Display(Name = @"Ответ на запрос получения количества связей квартирограмм и домофонной компании") ] public partial class GetFlatgrammDcCompanyCountResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetFlatgrammDcCompanyCountResponseModel.ErrorModel? Error { get; set; } /// /// Всего связей квартирограмм и домофонной компании /// [ Display(Name = @"Всего связей квартирограмм и домофонной компании") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка /// [ Display(Name = @"Запрос получения списка") ] public partial class GetFlatgrammDcCompanyListRequestModel { /// /// Фильтр связей квартирограмм и домофонной компании /// [ Display(Name = @"Фильтр связей квартирограмм и домофонной компании") ] public DcCompanyFlatgrammFilterModel? Filter { get; set; } /// /// Пагинация /// [ Display(Name = @"Пагинация") ] public DcCompanyFlatgrammPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка связей квартирограмм и домофонной компании /// [ Display(Name = @"Ответ на запрос получения списка связей квартирограмм и домофонной компании") ] public partial class GetFlatgrammDcCompanyListResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetFlatgrammDcCompanyListResponseModel.ErrorModel? Error { get; set; } /// /// Связь квартирограммы и домофонной компании /// [ Display(Name = @"Связь квартирограммы и домофонной компании") ] public DcCompanyFlatgrammModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение списка упрощенных квартирограмм /// [ Display(Name = @"Запрос на получение списка упрощенных квартирограмм") ] public partial class GetFlatgrammListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public FlatgrammFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public FlatgrammPagingModel? Paging { get; set; } } /// /// Ответ на запрос на получение списка упрощенных квартирограмм /// [ Display(Name = @"Ответ на запрос на получение списка упрощенных квартирограмм") ] public partial class GetFlatgrammListResponseModel { /// /// Упрощенная квартирограмма /// [ Display(Name = @"Упрощенная квартирограмма") ] public FlatgrammModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetFlatgrammListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка упрощенных квартирограмм /// [ Display(Name = @"Ошибка запроса получения списка упрощенных квартирограмм") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос на получение упрощенной квартирограммы /// [ Display(Name = @"Запрос на получение упрощенной квартирограммы") ] public partial class GetFlatgrammRequestModel { /// /// Идентификатор /// [ Display(Name = @"Идентификатор"), CustomRequired ] public int Id { get; set; } } /// /// Ответ на запрос на получение упрощенной квартирограммы /// [ Display(Name = @"Ответ на запрос на получение упрощенной квартирограммы") ] public partial class GetFlatgrammResponseModel { /// /// Упрощенная квартирограмма /// [ Display(Name = @"Упрощенная квартирограмма") ] public FlatgrammModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetFlatgrammResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса получения списка упрощенных квартирограмм /// [ Display(Name = @"Ошибка запроса получения списка упрощенных квартирограмм") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос сохранения связей квартирограммы и компании /// [ Display(Name = @"Запрос сохранения связей квартирограммы и компании") ] public partial class PutFlatgrammCompanyRelationAttachRequestModel { /// /// Связь квартирограммы и компании /// [ Display(Name = @"Связь квартирограммы и компании"), CustomRequired ] public FlatgrammCompanyRelationModel FlatgrammCompanyRelation { get; set; } = null!; } /// /// Ответ на запрос сохранения связи квартирограммы и компании /// [ Display(Name = @"Ответ на запрос сохранения связи квартирограммы и компании") ] public partial class PutFlatgrammCompanyRelationAttachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutFlatgrammCompanyRelationAttachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса сохранения связи квартирограммы и компании /// [ Display(Name = @"Ошибка запроса сохранения связи квартирограммы и компании") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос удаления связей квартирограммы и компании /// [ Display(Name = @"Запрос удаления связей квартирограммы и компании") ] public partial class PutFlatgrammCompanyRelationDetachRequestModel { /// /// Связь квартирограммы и компании /// [ Display(Name = @"Связь квартирограммы и компании"), CustomRequired ] public FlatgrammCompanyRelationModel FlatgrammCompanyRelation { get; set; } = null!; } /// /// Ответ на запрос удаления связи квартирограммы и компании /// [ Display(Name = @"Ответ на запрос удаления связи квартирограммы и компании") ] public partial class PutFlatgrammCompanyRelationDetachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutFlatgrammCompanyRelationDetachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса удаления связи квартирограммы и компании /// [ Display(Name = @"Ошибка запроса удаления связи квартирограммы и компании") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос сохранения связей квартирограммы и домофонной компании /// [ Display(Name = @"Запрос сохранения связей квартирограммы и домофонной компании") ] public partial class PutFlatgrammDcCompanyAttachRequestModel { /// /// Связь квартирограммы и домофонной компании /// [ Display(Name = @"Связь квартирограммы и домофонной компании"), CustomRequired ] public DcCompanyFlatgrammModel DcCompanyFlatgramm { get; set; } = null!; } /// /// Ответ на запрос сохранения связи квартирограммы и домофонной компании /// [ Display(Name = @"Ответ на запрос сохранения связи квартирограммы и домофонной компании") ] public partial class PutFlatgrammDcCompanyAttachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutFlatgrammDcCompanyAttachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса сохранения связи квартирограммы и домофонной компании /// [ Display(Name = @"Ошибка запроса сохранения связи квартирограммы и домофонной компании") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос удаления связей квартирограммы и домофонной компании /// [ Display(Name = @"Запрос удаления связей квартирограммы и домофонной компании") ] public partial class PutFlatgrammDcCompanyDetachRequestModel { /// /// Связь квартирограммы и домофонной компании /// [ Display(Name = @"Связь квартирограммы и домофонной компании"), CustomRequired ] public DcCompanyFlatgrammModel DcCompanyFlatgramm { get; set; } = null!; } /// /// Ответ на запрос удаления связи квартирограммы и домофонной компании /// [ Display(Name = @"Ответ на запрос удаления связи квартирограммы и домофонной компании") ] public partial class PutFlatgrammDcCompanyDetachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutFlatgrammDcCompanyDetachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса удаления связи квартирограммы и домофонной компании /// [ Display(Name = @"Ошибка запроса удаления связи квартирограммы и домофонной компании") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос удаления ключа /// [ Display(Name = @"Запрос удаления ключа") ] public partial class DeleteRfidRequestModel { /// /// Идентификатор ключа. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор ключа"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int Id { get; set; } /// /// Флаг принудительного удаления ключа. /// При принудительном удалении не гарантируется удаление ключа со всех физических устройств /// [ Display(Name = @"Флаг принудительного удаления ключа"), Description(@"При принудительном удалении не гарантируется удаление ключа со всех физических устройств") ] public bool IsForceDelete { get; set; } } /// /// Ответ на запрос удаления ключа /// [ Display(Name = @"Ответ на запрос удаления ключа") ] public partial class DeleteRfidResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public DeleteRfidResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на удаление ключа /// [ Display(Name = @"Ошибка запроса на удаление ключа") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения количества ключей /// [ Display(Name = @"Запрос получения количества ключей") ] public partial class GetRfidCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public RfidFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества ключей /// [ Display(Name = @"Ответ на запрос получения количества ключей") ] public partial class GetRfidCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRfidCountResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения списка ключей /// [ Display(Name = @"Запрос получения списка ключей") ] public partial class GetRfidListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public RfidFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public RfidPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка ключей /// [ Display(Name = @"Ответ на запрос получения списка ключей") ] public partial class GetRfidListResponseModel { /// /// Ключ /// [ Display(Name = @"Ключ") ] public RfidModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRfidListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос получения ключа /// [ Display(Name = @"Запрос получения ключа") ] public partial class GetRfidRequestModel { /// /// Идентификатор ключа. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Идентификатор ключа"), Description(@"Диапазон: 0..2147483647"), CustomRequired, CustomRange(0, 2147483647) ] public int Id { get; set; } } /// /// Ответ на запрос получения ключа /// [ Display(Name = @"Ответ на запрос получения ключа") ] public partial class GetRfidResponseModel { /// /// Ключ /// [ Display(Name = @"Ключ") ] public RfidModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRfidResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос создания ключа /// [ Display(Name = @"Запрос создания ключа") ] public partial class PostRfidRequestModel { /// /// Ключ /// [ Display(Name = @"Ключ"), CustomRequired ] public RfidModel Data { get; set; } = null!; } /// /// Ответ на запрос создания ключа /// [ Display(Name = @"Ответ на запрос создания ключа") ] public partial class PostRfidResponseModel { /// /// Ключ /// [ Display(Name = @"Ключ") ] public RfidModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PostRfidResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } /// /// Ошибка сохранения /// [ Display(Name = @"Ошибка сохранения") ] public RfidModel.SavingErrorModel? Saving { get; set; } } } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class RfidPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: CHANGED_AT /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: CHANGED_AT") ] public RfidPagingModel.RfidPagingOrderByType OrderByType { get; set; } = RfidPagingOrderByType.ChangedAt; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public RfidPagingModel.RfidPagingDirectionType DirectionType { get; set; } = RfidPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RfidPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По времени создания /// [ Display(Name = @"По времени создания"), JsonPropertyName("CREATED_AT") ] CreatedAt = 1, /// /// По времени изменения /// [ Display(Name = @"По времени изменения"), JsonPropertyName("CHANGED_AT") ] ChangedAt = 2, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RfidPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос получения количества домов /// [ Display(Name = @"Запрос получения количества домов") ] public partial class GetRoomDeviceCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр"), CustomRequired ] public RoomDeviceFilterModel Filter { get; set; } = null!; } /// /// Ответ на запрос получения количества домов /// [ Display(Name = @"Ответ на запрос получения количества домов") ] public partial class GetRoomDeviceCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } } /// /// Запрос на получение связок помещение-устройство /// [ Display(Name = @"Запрос на получение связок помещение-устройство") ] public partial class GetRoomDeviceListRequestModel { /// /// Фильтр по связкам помещение-устройство /// [ Display(Name = @"Фильтр по связкам помещение-устройство") ] public RoomDeviceFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public RoomDevicePagingModel? Paging { get; set; } } /// /// Ответ на запрос на получение списка связок помещение-устройство /// [ Display(Name = @"Ответ на запрос на получение списка связок помещение-устройство") ] public partial class GetRoomDeviceListResponseModel { /// /// Связка помещение-устройство /// [ Display(Name = @"Связка помещение-устройство") ] public RoomDeviceModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRoomDeviceListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на получение списка связок помещение-устройство /// [ Display(Name = @"Ошибка запроса на получение списка связок помещение-устройство") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос создания связи квартиры и устройства /// [ Display(Name = @"Запрос создания связи квартиры и устройства") ] public partial class PutRoomDeviceAttachRequestModel { /// /// Связь квартиры и устройства /// [ Display(Name = @"Связь квартиры и устройства"), CustomRequired ] public RoomDeviceModel RoomDevice { get; set; } = null!; } /// /// Ответ на запрос сохранения связи квартиры и устройства /// [ Display(Name = @"Ответ на запрос сохранения связи квартиры и устройства") ] public partial class PutRoomDeviceAttachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutRoomDeviceAttachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на создание связи квартиры и устройства /// [ Display(Name = @"Ошибка запроса на создание связи квартиры и устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Запрос удаления связи квартиры и устройства /// [ Display(Name = @"Запрос удаления связи квартиры и устройства") ] public partial class PutRoomDeviceDetachRequestModel { /// /// Связь квартиры и устройства /// [ Display(Name = @"Связь квартиры и устройства"), CustomRequired ] public RoomDeviceModel RoomDevice { get; set; } = null!; } /// /// Ответ на запрос удаления связи квартиры и устройства /// [ Display(Name = @"Ответ на запрос удаления связи квартиры и устройства") ] public partial class PutRoomDeviceDetachResponseModel { /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public PutRoomDeviceDetachResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка запроса на удаления связи квартиры и устройства /// [ Display(Name = @"Ошибка запроса на удаления связи квартиры и устройства") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Связка квартиры и устройства /// [ Display(Name = @"Связка квартиры и устройства") ] public partial class RoomDeviceModel { /// /// Идентификатор ОРПОН дома. /// # Диапазон 1..9223372036854775807 /// [ Display(Name = @"Идентификатор ОРПОН дома"), Description(@"Диапазон 1..9223372036854775807"), CustomRequired ] public long Orpon { get; set; } /// /// Номер квартиры. /// # Диапазон: 1..4 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..4"), CustomRequired, CustomRange(1, 4) ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор устройства. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор устройства"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int DeviceId { get; set; } // WARNING Не удалось найти свойство навигации для поля RoomDevice.device_id } /// /// Фильтр связок помещение-устройство /// [ Display(Name = @"Фильтр связок помещение-устройство") ] public partial class RoomDeviceFilterModel { /// /// По идентификаторам квартирограмм /// [ Display(Name = @"По идентификаторам квартирограмм") ] public List FlatgrammIds { get; set; } = new(0); /// /// По ОРПОН /// [ Display(Name = @"По ОРПОН") ] public List Orpons { get; set; } = new(0); /// /// По номерам квартир /// [ Display(Name = @"По номерам квартир") ] public List RoomNumbers { get; set; } = new(0); /// /// По идентификаторам привязанных устройств /// [ Display(Name = @"По идентификаторам привязанных устройств") ] public List DeviceIds { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class RoomDevicePagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: ORPON_THEN_ENTRANCE_NUMBER /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: ORPON_THEN_ENTRANCE_NUMBER") ] public RoomDevicePagingModel.RoomDevicePagingOrderByType OrderByType { get; set; } = RoomDevicePagingOrderByType.OrponThenEntranceNumber; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public RoomDevicePagingModel.RoomDevicePagingDirectionType DirectionType { get; set; } = RoomDevicePagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RoomDevicePagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По ОРПОНу и номеру подъезда /// [ Display(Name = @"По ОРПОНу и номеру подъезда"), JsonPropertyName("ORPON_THEN_ENTRANCE_NUMBER") ] OrponThenEntranceNumber = 1, /// /// По идентификатору устройства /// [ Display(Name = @"По идентификатору устройства"), JsonPropertyName("DEVICE_ID") ] DeviceId = 2, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RoomDevicePagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос получения количества связей помещений и пользователей /// [ Display(Name = @"Запрос получения количества связей помещений и пользователей") ] public partial class GetRoomUserCountRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public RoomUserFilterModel? Filter { get; set; } } /// /// Ответ на запрос получения количества связей помещений и пользователей /// [ Display(Name = @"Ответ на запрос получения количества связей помещений и пользователей") ] public partial class GetRoomUserCountResponseModel { /// /// Количество /// [ Display(Name = @"Количество") ] public int Data { get; set; } } /// /// Запрос получения списка связей помещений и пользователей /// [ Display(Name = @"Запрос получения списка связей помещений и пользователей") ] public partial class GetRoomUserListRequestModel { /// /// Фильтр /// [ Display(Name = @"Фильтр") ] public RoomUserFilterModel? Filter { get; set; } /// /// Стандартный постраничный вывод /// [ Display(Name = @"Стандартный постраничный вывод") ] public RoomUserPagingModel? Paging { get; set; } } /// /// Ответ на запрос получения списка связей помещений и пользователей /// [ Display(Name = @"Ответ на запрос получения списка связей помещений и пользователей") ] public partial class GetRoomUserListResponseModel { /// /// Связь помещения и пользователя /// [ Display(Name = @"Связь помещения и пользователя") ] public RoomUserModel? Data { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public GetRoomUserListResponseModel.ErrorModel? Error { get; set; } /// /// Ошибка /// [ Display(Name = @"Ошибка") ] public partial class ErrorModel { /// /// Ошибка валидации /// [ Display(Name = @"Ошибка валидации") ] public ValidationErrorModel? Validation { get; set; } } } /// /// Связь помещения и пользователя /// [ Display(Name = @"Связь помещения и пользователя") ] public partial class RoomUserModel { /// /// ОРПОН дома /// [ Display(Name = @"ОРПОН дома"), CustomRequired ] public long Orpon { get; set; } /// /// Номер квартиры. /// # Диапазон: 1..4 /// [ Display(Name = @"Номер квартиры"), Description(@"Диапазон: 1..4"), CustomRequired, CustomRange(1, 4) ] public string RoomNumber { get; set; } = null!; /// /// Идентификатор пользователя. /// # Диапазон: 1..2147483647 /// [ Display(Name = @"Идентификатор пользователя"), Description(@"Диапазон: 1..2147483647"), CustomRequired, CustomRange(1, 2147483647) ] public int UserId { get; set; } // WARNING Не удалось найти свойство навигации для поля RoomUser.user_id } /// /// Фильтр по связям помещений и пользователей /// [ Display(Name = @"Фильтр по связям помещений и пользователей") ] public partial class RoomUserFilterModel { /// /// По ОРПОНам /// [ Display(Name = @"По ОРПОНам") ] public List Orpons { get; set; } = new(0); /// /// По номерам квартир /// [ Display(Name = @"По номерам квартир") ] public List RoomNumbers { get; set; } = new(0); /// /// По идентификаторам пользователей /// [ Display(Name = @"По идентификаторам пользователей") ] public List UserIds { get; set; } = new(0); } /// /// Постраничный вывод /// [ Display(Name = @"Постраничный вывод") ] public partial class RoomUserPagingModel { /// /// Тип значения сортировки. /// Если значение не передано, то будет взято значение по умолчанию. /// # По умолчанию: USER_ID /// [ Display(Name = @"Тип значения сортировки"), Description(@"Если значение не передано, то будет взято значение по умолчанию. По умолчанию: USER_ID") ] public RoomUserPagingModel.RoomUserPagingOrderByType OrderByType { get; set; } = RoomUserPagingOrderByType.UserId; /// /// Тип направления сортировки. /// # По умолчанию: DESC /// [ Display(Name = @"Тип направления сортировки"), Description(@"По умолчанию: DESC") ] public RoomUserPagingModel.RoomUserPagingDirectionType DirectionType { get; set; } = RoomUserPagingDirectionType.Desc; /// /// Количество записей на страницу. /// Если значение 0 (не передано), то будет взято значение по умолчанию. /// # Диапазон: 0..100. /// # По умолчанию: 20 /// [ Display(Name = @"Количество записей на страницу"), Description(@"Если значение 0 (не передано), то будет взято значение по умолчанию. Диапазон: 0..100. По умолчанию: 20"), CustomRange(0, 100) ] public int Limit { get; set; } = 20; /// /// Сдвиг. /// # Диапазон: 0..2147483647 /// [ Display(Name = @"Сдвиг"), Description(@"Диапазон: 0..2147483647"), CustomRange(0, 2147483647) ] public int Offset { get; set; } /// /// Справочник типов значений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RoomUserPagingOrderByType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("ORDER_BY_TYPE_UNKNOWN") ] Unknown = 0, /// /// По идентификатору /// [ Display(Name = @"По идентификатору"), JsonPropertyName("USER_ID") ] UserId = 1, /// /// По ОРПОНу и номеру /// [ Display(Name = @"По ОРПОНу и номеру"), JsonPropertyName("ORPON_THEN_NUMBER") ] OrponThenNumber = 2, } /// /// Справочник типов направлений сортировки. /// # Тип: byte /// [ Description("Тип: byte") ] public enum RoomUserPagingDirectionType : byte { /// /// Значение не указано /// [ Display(Name = @"Значение не указано"), JsonPropertyName("DIRECTION_TYPE_UNKNOWN") ] Unknown = 0, /// /// От большего к меньшему /// [ Display(Name = @"От большего к меньшему"), JsonPropertyName("DESC") ] Desc = 1, /// /// От меньшего к большему /// [ Display(Name = @"От меньшего к большему"), JsonPropertyName("ASC") ] Asc = 2, } } /// /// Запрос проверки доступности сервиса /// [ Display(Name = @"Запрос проверки доступности сервиса") ] public partial class GetSystemStatusRequestModel { } /// /// Ответ на запрос проверки доступности сервиса /// [ Display(Name = @"Ответ на запрос проверки доступности сервиса") ] public partial class GetSystemStatusResponseModel { }