Add initial hcs database schema creation
This commit is contained in:
@ -1,5 +1,4 @@
|
|||||||
using Hcs.Broker.Api.Registry;
|
using Hcs.Broker.Api.Type;
|
||||||
using Hcs.Broker.Api.Type;
|
|
||||||
|
|
||||||
namespace Hcs.Broker.Api.Payload.Bills
|
namespace Hcs.Broker.Api.Payload.Bills
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using Hcs.Broker.Api.Registry;
|
namespace Hcs.Broker.Api.Payload.DeviceMetering
|
||||||
|
|
||||||
namespace Hcs.Broker.Api.Payload.DeviceMetering
|
|
||||||
{
|
{
|
||||||
// http://open-gkh.ru/DeviceMetering/exportMeteringDeviceHistoryRequest.html
|
// http://open-gkh.ru/DeviceMetering/exportMeteringDeviceHistoryRequest.html
|
||||||
public class ExportMeteringDeviceHistoryPayload
|
public class ExportMeteringDeviceHistoryPayload
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using Hcs.Broker.Api.Registry;
|
using Hcs.Service.Async.HouseManagement;
|
||||||
using Hcs.Service.Async.HouseManagement;
|
|
||||||
|
|
||||||
namespace Hcs.Broker.Api.Payload.HouseManagement
|
namespace Hcs.Broker.Api.Payload.HouseManagement
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using Hcs.Broker.Api.Registry;
|
using Hcs.Service.Async.HouseManagement;
|
||||||
using Hcs.Service.Async.HouseManagement;
|
|
||||||
|
|
||||||
namespace Hcs.Broker.Api.Payload.HouseManagement
|
namespace Hcs.Broker.Api.Payload.HouseManagement
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
namespace Hcs.Broker.Api.Payload
|
||||||
{
|
{
|
||||||
public class RegistryElement(string code, string guid)
|
public class RegistryElement(string code, string guid)
|
||||||
{
|
{
|
||||||
@ -1,16 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Межповерочный интервал" (реестровый номер 16).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-16/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry16
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 4 года
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element4 => new(
|
|
||||||
"4",
|
|
||||||
"e5e3288d-2994-41f7-8e44-f329b09ab77f");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Коммунальный ресурс" (реестровый номер 2).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-2/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry2
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Тепловая энергия
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element5 => new(
|
|
||||||
"5",
|
|
||||||
"44af905f-09c3-4cc3-b749-70048a53d8cf");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Тарифицируемый ресурс" (реестровый номер 239).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-239/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry239
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Тепловая энергия
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element4 => new(
|
|
||||||
"4",
|
|
||||||
"eec6e4b8-76c8-4fce-99b7-c95718edad19");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Состояние дома" (реестровый номер 24).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-24/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry24
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Аварийный
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element1 => new(
|
|
||||||
"1",
|
|
||||||
"cbe05853-a91b-43cc-a2cb-06cdfa97d492");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Исправный
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element2 => new(
|
|
||||||
"2",
|
|
||||||
"2d3ae73e-6c72-4740-9122-9c632d1893a7");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Ветхий
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element3 => new(
|
|
||||||
"3",
|
|
||||||
"bf083ae4-e4ec-4ace-b190-4d009e5cd1a1");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Не выбран
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element4 => new(
|
|
||||||
"4",
|
|
||||||
"4ee07c0b-82d6-41f4-a8c5-2cff784bbd9c");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Тип прибора учета" (реестровый номер 27).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-27/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry27
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Индивидуальный
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element1 => new(
|
|
||||||
"1",
|
|
||||||
"3a9687b5-caed-4ec6-8a08-f4d3d012f2c7");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Показатели качества коммунальных ресурсов" (реестровый номер 276).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-276/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry276
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Величина тепловой нагрузки
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element4 => new(
|
|
||||||
"4",
|
|
||||||
"51dd6edc-83fe-4810-8b62-4dc85a75e9a3");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Диапазон давления теплоносителя в подающем трубопроводе
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element10 => new(
|
|
||||||
"10",
|
|
||||||
"a5a17c90-cc4b-4f32-a22b-6e06cd42a68c");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Вид коммунальной услуги" (реестровый номер 3).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-3/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry3
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Отопление
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element6 => new(
|
|
||||||
"6",
|
|
||||||
"74925764-ddf3-4b4b-b18d-85994187c13a");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Часовые зоны по Olson" (реестровый номер 32).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-32/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry32
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Иркутск
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element11 => new(
|
|
||||||
"11",
|
|
||||||
"244ae392-0b96-46f2-80ea-4dac32e7326a");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Стадия жизненного цикла" (реестровый номер 338).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-338/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry338
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Эксплуатация
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element1 => new(
|
|
||||||
"1",
|
|
||||||
"29b18683-5195-4ef4-83fc-71bf45597d46");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Реконструкция
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element2 => new(
|
|
||||||
"2",
|
|
||||||
"75764145-f181-47e5-bff1-1306a46eb20e");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Капитальный ремонт с отселением
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element3 => new(
|
|
||||||
"3",
|
|
||||||
"dee170df-db42-4cd6-9e5e-b62be91b3663");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Капитальный ремонт без отселения
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element4 => new(
|
|
||||||
"4",
|
|
||||||
"91dc91e2-6883-4c84-b711-53f57f28dbe2");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Снос
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element5 => new(
|
|
||||||
"5",
|
|
||||||
"cc358aa9-10b3-4d6a-bbec-c5f6b14950f6");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Не эксплуатируется, расселен
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element6 => new(
|
|
||||||
"6",
|
|
||||||
"4bed3d7e-6015-428e-b4b4-7b7aec171c0d");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Выведен из эксплуатации
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element7 => new(
|
|
||||||
"7",
|
|
||||||
"f3edc065-c1a1-4110-96fa-03313ae7a039");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Вид коммунальной услуги" (реестровый номер 51)
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry51
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Отопление
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element6_1 => new(
|
|
||||||
"6.1",
|
|
||||||
"14ad13a3-45ce-408b-b641-6fc59554f803");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
namespace Hcs.Broker.Api.Registry
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// НСИ "Основание заключения договора" (реестровый номер 58).
|
|
||||||
/// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-58/v1.
|
|
||||||
/// </summary>
|
|
||||||
public static class Registry58
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Решение собрания собственников
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element1 => new(
|
|
||||||
"1",
|
|
||||||
"110d48b2-32a9-4a44-939c-b784d9794621");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Открытый конкурс
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element2 => new(
|
|
||||||
"2",
|
|
||||||
"a9dc59c3-d53f-42eb-ba98-cf8c74d88d36");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Договор управления
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element3 => new(
|
|
||||||
"3",
|
|
||||||
"11efe618-79f8-4f53-bfd6-11620e8e9e1e");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Устав
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element4 => new(
|
|
||||||
"4",
|
|
||||||
"a2eb920c-8163-4958-812a-ad153a5dfde6");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Решение правления
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element5 => new(
|
|
||||||
"5",
|
|
||||||
"58639715-2708-4b8e-a5e6-7cae4ddbf03b");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Решение органа управления застройщика
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element6 => new(
|
|
||||||
"6",
|
|
||||||
"9b606ef5-7701-4a12-a837-d81b50939160");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Заявление потребителя
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element7 => new(
|
|
||||||
"7",
|
|
||||||
"93cd9d85-91b8-4bf9-ae48-c5f1e691949f");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Нормативный правовой акт
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element8 => new(
|
|
||||||
"8",
|
|
||||||
"8b8ee37b-fa79-40cc-b98d-0e51f0c38d03");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Разрешение на ввод в эксплуатацию
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element9 => new(
|
|
||||||
"9",
|
|
||||||
"16331000-d96e-4a33-a6c7-3cb9eacf4927");
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Устав
|
|
||||||
/// </summary>
|
|
||||||
public static RegistryElement Element10 => new(
|
|
||||||
"10",
|
|
||||||
"555638ae-a207-46fa-99bd-88bdb297c45a");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +1,11 @@
|
|||||||
@page "/management/users"
|
@page "/management/users"
|
||||||
|
|
||||||
|
@using System.IdentityModel.Claims
|
||||||
@using Hcs.WebApp.Components.Dialogs
|
@using Hcs.WebApp.Components.Dialogs
|
||||||
@using Hcs.WebApp.Services
|
@using Hcs.WebApp.Services
|
||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@using Microsoft.AspNetCore.Identity
|
@using Microsoft.AspNetCore.Identity
|
||||||
@using Microsoft.EntityFrameworkCore
|
@using Microsoft.EntityFrameworkCore
|
||||||
@using System.IdentityModel.Claims
|
|
||||||
|
|
||||||
@attribute [Authorize]
|
@attribute [Authorize]
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
@using Hcs.WebApp.Components
|
@using Hcs.WebApp.Components
|
||||||
@using Hcs.WebApp.Components.Layout
|
@using Hcs.WebApp.Components.Layout
|
||||||
@using Hcs.WebApp.Components.Shared
|
@using Hcs.WebApp.Components.Shared
|
||||||
@using Hcs.WebApp.Data
|
@using Hcs.WebApp.Data.Hcs
|
||||||
|
@using Hcs.WebApp.Data.Identity
|
||||||
@using Microsoft.AspNetCore.Components.Authorization
|
@using Microsoft.AspNetCore.Components.Authorization
|
||||||
@using Microsoft.AspNetCore.Components.Forms
|
@using Microsoft.AspNetCore.Components.Forms
|
||||||
@using Microsoft.AspNetCore.Components.Routing
|
@using Microsoft.AspNetCore.Components.Routing
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using Hcs.WebApp.Data;
|
using Hcs.WebApp.Data.Identity;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|||||||
12
Hcs.WebApp/Data/Hcs/HcsDbContext.cs
Normal file
12
Hcs.WebApp/Data/Hcs/HcsDbContext.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
using Microsoft.AspNetCore.Identity;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Hcs.WebApp.Data.Hcs
|
||||||
|
{
|
||||||
|
public class HcsDbContext(DbContextOptions<HcsDbContext> options) : DbContext(options)
|
||||||
|
{
|
||||||
|
public DbSet<Registry> Registries { get; set; }
|
||||||
|
|
||||||
|
public DbSet<RegistryElement> Elements { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
82
Hcs.WebApp/Data/Hcs/Migrations/20251022073558_CreateHcsSchema.Designer.cs
generated
Normal file
82
Hcs.WebApp/Data/Hcs/Migrations/20251022073558_CreateHcsSchema.Designer.cs
generated
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
namespace Hcs.WebApp.Data.Hcs.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(HcsDbContext))]
|
||||||
|
[Migration("20251022073558_CreateHcsSchema")]
|
||||||
|
partial class CreateHcsSchema
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "9.0.9")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||||
|
|
||||||
|
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<int>("Number")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Registries");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.RegistryElement", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("Code")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("GUID")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("RegistryId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("Xml")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("RegistryId");
|
||||||
|
|
||||||
|
b.ToTable("Elements");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.RegistryElement", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Hcs.WebApp.Data.Hcs.Registry", "Registry")
|
||||||
|
.WithMany("Elements")
|
||||||
|
.HasForeignKey("RegistryId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Registry");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Elements");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,61 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
namespace Hcs.WebApp.Data.Hcs.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class CreateHcsSchema : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Registries",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
||||||
|
Number = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Registries", x => x.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Elements",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
||||||
|
RegistryId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
||||||
|
Code = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||||
|
GUID = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||||
|
Xml = table.Column<string>(type: "nvarchar(max)", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Elements", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_Elements_Registries_RegistryId",
|
||||||
|
column: x => x.RegistryId,
|
||||||
|
principalTable: "Registries",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_Elements_RegistryId",
|
||||||
|
table: "Elements",
|
||||||
|
column: "RegistryId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Elements");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Registries");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
79
Hcs.WebApp/Data/Hcs/Migrations/HcsDbContextModelSnapshot.cs
Normal file
79
Hcs.WebApp/Data/Hcs/Migrations/HcsDbContextModelSnapshot.cs
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
namespace Hcs.WebApp.Data.Hcs.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(HcsDbContext))]
|
||||||
|
partial class HcsDbContextModelSnapshot : ModelSnapshot
|
||||||
|
{
|
||||||
|
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "9.0.9")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||||
|
|
||||||
|
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<int>("Number")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Registries");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.RegistryElement", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("Code")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("GUID")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<string>("RegistryId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(450)");
|
||||||
|
|
||||||
|
b.Property<string>("Xml")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("RegistryId");
|
||||||
|
|
||||||
|
b.ToTable("Elements");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.RegistryElement", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Hcs.WebApp.Data.Hcs.Registry", "Registry")
|
||||||
|
.WithMany("Elements")
|
||||||
|
.HasForeignKey("RegistryId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Registry");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Hcs.WebApp.Data.Hcs.Registry", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Elements");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Hcs.WebApp/Data/Hcs/Registry.cs
Normal file
11
Hcs.WebApp/Data/Hcs/Registry.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace Hcs.WebApp.Data.Hcs
|
||||||
|
{
|
||||||
|
public class Registry
|
||||||
|
{
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
public int Number { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<RegistryElement> Elements { get; set; } = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
17
Hcs.WebApp/Data/Hcs/RegistryElement.cs
Normal file
17
Hcs.WebApp/Data/Hcs/RegistryElement.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
namespace Hcs.WebApp.Data.Hcs
|
||||||
|
{
|
||||||
|
public class RegistryElement
|
||||||
|
{
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
public string RegistryId { get; set; }
|
||||||
|
|
||||||
|
public virtual Registry Registry { get; set; } = null!;
|
||||||
|
|
||||||
|
public string Code { get; set; }
|
||||||
|
|
||||||
|
public string GUID { get; set; }
|
||||||
|
|
||||||
|
public virtual string Xml { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
|
||||||
namespace Hcs.WebApp.Data
|
namespace Hcs.WebApp.Data.Identity
|
||||||
{
|
{
|
||||||
public class AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : IdentityDbContext<AppUser, AppRole, string>(options)
|
public class AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : IdentityDbContext<AppUser, AppRole, string>(options)
|
||||||
{
|
{
|
||||||
@ -1,6 +1,6 @@
|
|||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
|
|
||||||
namespace Hcs.WebApp.Data
|
namespace Hcs.WebApp.Data.Identity
|
||||||
{
|
{
|
||||||
public class AppRole : IdentityRole
|
public class AppRole : IdentityRole
|
||||||
{
|
{
|
||||||
@ -1,6 +1,6 @@
|
|||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
|
|
||||||
namespace Hcs.WebApp.Data
|
namespace Hcs.WebApp.Data.Identity
|
||||||
{
|
{
|
||||||
public class AppUser : IdentityUser
|
public class AppUser : IdentityUser
|
||||||
{
|
{
|
||||||
@ -1,4 +1,4 @@
|
|||||||
namespace Hcs.WebApp.Data
|
namespace Hcs.WebApp.Data.Identity
|
||||||
{
|
{
|
||||||
public class AppUserWithRole
|
public class AppUserWithRole
|
||||||
{
|
{
|
||||||
@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Infrastructure;
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
namespace Hcs.WebApp.Data.Migrations
|
namespace Hcs.WebApp.Data.Identity.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(AppIdentityDbContext))]
|
[DbContext(typeof(AppIdentityDbContext))]
|
||||||
[Migration("00000000000000_CreateIdentitySchema")]
|
[Migration("00000000000000_CreateIdentitySchema")]
|
||||||
@ -1,7 +1,7 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
namespace Hcs.WebApp.Data.Migrations
|
namespace Hcs.WebApp.Data.Identity.Migrations
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public partial class CreateIdentitySchema : Migration
|
public partial class CreateIdentitySchema : Migration
|
||||||
@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Infrastructure;
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
namespace Hcs.WebApp.Data.Migrations
|
namespace Hcs.WebApp.Data.Identity.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(AppIdentityDbContext))]
|
[DbContext(typeof(AppIdentityDbContext))]
|
||||||
[Migration("20251019083804_AddRolePriority")]
|
[Migration("20251019083804_AddRolePriority")]
|
||||||
@ -1,7 +1,7 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
namespace Hcs.WebApp.Data.Migrations
|
namespace Hcs.WebApp.Data.Identity.Migrations
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public partial class AddRolePriority : Migration
|
public partial class AddRolePriority : Migration
|
||||||
@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
namespace Hcs.WebApp.Data.Migrations
|
namespace Hcs.WebApp.Data.Identity.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(AppIdentityDbContext))]
|
[DbContext(typeof(AppIdentityDbContext))]
|
||||||
public partial class AppIdentityDbContextModelSnapshot : ModelSnapshot
|
public partial class AppIdentityDbContextModelSnapshot : ModelSnapshot
|
||||||
@ -1,6 +1,7 @@
|
|||||||
using Hcs.WebApp.Components;
|
using Hcs.WebApp.Components;
|
||||||
using Hcs.WebApp.Components.Shared;
|
using Hcs.WebApp.Components.Shared;
|
||||||
using Hcs.WebApp.Data;
|
using Hcs.WebApp.Data.Hcs;
|
||||||
|
using Hcs.WebApp.Data.Identity;
|
||||||
using Hcs.WebApp.Services;
|
using Hcs.WebApp.Services;
|
||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
@ -22,8 +23,8 @@ builder.Services.AddHeaderPropagation(x => x.Headers.Add("Cookie"));
|
|||||||
builder.Services.AddAuthentication();
|
builder.Services.AddAuthentication();
|
||||||
builder.Services.AddAuthorization();
|
builder.Services.AddAuthorization();
|
||||||
|
|
||||||
var connectionString = builder.Configuration.GetConnectionString("IdentityConnection") ?? throw new InvalidOperationException("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 'IdentityConnection'");
|
var identityConnection = builder.Configuration.GetConnectionString("IdentityConnection") ?? throw new InvalidOperationException("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 'IdentityConnection'");
|
||||||
builder.Services.AddDbContextFactory<AppIdentityDbContext>(options => options.UseSqlServer(connectionString));
|
builder.Services.AddDbContextFactory<AppIdentityDbContext>(options => options.UseSqlServer(identityConnection));
|
||||||
|
|
||||||
builder.Services
|
builder.Services
|
||||||
.AddIdentity<AppUser, AppRole>(options =>
|
.AddIdentity<AppUser, AppRole>(options =>
|
||||||
@ -38,6 +39,17 @@ builder.Services
|
|||||||
.AddEntityFrameworkStores<AppIdentityDbContext>()
|
.AddEntityFrameworkStores<AppIdentityDbContext>()
|
||||||
.AddDefaultTokenProviders();
|
.AddDefaultTokenProviders();
|
||||||
|
|
||||||
|
if (builder.Environment.IsDevelopment())
|
||||||
|
{
|
||||||
|
var hcsProdConnection = builder.Configuration.GetConnectionString("HcsSit2Connection") ?? throw new InvalidOperationException("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 'HcsSit2Connection'");
|
||||||
|
builder.Services.AddDbContextFactory<HcsDbContext>(options => options.UseSqlServer(hcsProdConnection));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var hcsProdConnection = builder.Configuration.GetConnectionString("HcsProdConnection") ?? throw new InvalidOperationException("<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 'HcsProdConnection'");
|
||||||
|
builder.Services.AddDbContextFactory<HcsDbContext>(options => options.UseSqlServer(hcsProdConnection));
|
||||||
|
}
|
||||||
|
|
||||||
#if USE_MOCK
|
#if USE_MOCK
|
||||||
builder.Services.AddTransient<IClientProvider, MockClientProvider>();
|
builder.Services.AddTransient<IClientProvider, MockClientProvider>();
|
||||||
#else
|
#else
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using Hcs.WebApp.Data;
|
using Hcs.WebApp.Data.Identity;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,8 @@
|
|||||||
"CertificateSerialNumber": "0636D2330032B3C38A4A26D765C787C248"
|
"CertificateSerialNumber": "0636D2330032B3C38A4A26D765C787C248"
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"AuthConnection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_identity;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes"
|
"AuthConnection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_identity;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes",
|
||||||
|
"HcsProdConnection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_prod;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes",
|
||||||
|
"HcsSit2Connection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_sit2;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,8 @@
|
|||||||
"CertificateSerialNumber": "0636D2330032B3C38A4A26D765C787C248"
|
"CertificateSerialNumber": "0636D2330032B3C38A4A26D765C787C248"
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"IdentityConnection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_identity;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes"
|
"IdentityConnection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_identity;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes",
|
||||||
|
"HcsProdConnection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_prod;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes",
|
||||||
|
"HcsSit2Connection": "Server=localhost\\SQLEXPRESS;Database=hcs_web_app_sit2;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=Yes"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user