diff --git a/Hcs.WebApp/BackgroundServices/CampaignManagers/ExportSupplyContractsManager_15_7_0_1.cs b/Hcs.WebApp/BackgroundServices/CampaignManagers/ExportSupplyContractsManager_15_7_0_1.cs
new file mode 100644
index 0000000..35c5c14
--- /dev/null
+++ b/Hcs.WebApp/BackgroundServices/CampaignManagers/ExportSupplyContractsManager_15_7_0_1.cs
@@ -0,0 +1,27 @@
+using Hcs.WebApp.Data.Hcs;
+
+namespace Hcs.WebApp.BackgroundServices.CampaignManagers
+{
+ public class ExportSupplyContractsManager_15_7_0_1(
+ IServiceScopeFactory scopeFactory,
+ OperationExecutionState operationExecutionState,
+ ResultGetState resultGetState,
+ DataParsingState dataParsingState,
+ Campaign campaign) : ManagerBase(scopeFactory, operationExecutionState, resultGetState, dataParsingState, campaign)
+ {
+ private enum Step
+ {
+ Start = 0,
+ ExecutionWait = 1,
+ ResultWait = 2,
+ End = 3
+ }
+
+ protected override int StepCount => Enum.GetValues(typeof(Step)).Length;
+
+ public override async Task ProcessAsync()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerFactory.cs b/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerFactory.cs
index abca7c7..1c38c3c 100644
--- a/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerFactory.cs
+++ b/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerFactory.cs
@@ -15,7 +15,8 @@ namespace Hcs.WebApp.BackgroundServices.CampaignManagers
{
Campaign.CampaignType.ExportPrivateRegistryElements_15_7_0_1 => typeof(ExportPrivateRegistryElementsManager_15_7_0_1),
Campaign.CampaignType.ExportCommonRegistryElements_15_7_0_1 => typeof(ExportCommonRegistryElementsManager_15_7_0_1),
- Campaign.CampaignType.ParseHousesData_15_7_0_1 => typeof(ParseHousesDataManager_15_7_0_1)
+ Campaign.CampaignType.ParseHousesData_15_7_0_1 => typeof(ParseHousesDataManager_15_7_0_1),
+ Campaign.CampaignType.ExportSupplyContracts_15_7_0_1 => typeof(ExportSupplyContractsManager_15_7_0_1),
};
var args = new object[] { serviceScopeFactory, operationExecutionState, resultGetState, dataParsingState, campaign };
var instance = Activator.CreateInstance(type, args);
diff --git a/Hcs.WebApp/Components/Layout/MainLayout.razor b/Hcs.WebApp/Components/Layout/MainLayout.razor
index b71a215..ab2185c 100644
--- a/Hcs.WebApp/Components/Layout/MainLayout.razor
+++ b/Hcs.WebApp/Components/Layout/MainLayout.razor
@@ -32,6 +32,7 @@
+
diff --git a/Hcs.WebApp/Components/Pages/Objects/Houses.razor b/Hcs.WebApp/Components/Pages/Objects/Houses.razor
index 3b84fe0..fc6e83a 100644
--- a/Hcs.WebApp/Components/Pages/Objects/Houses.razor
+++ b/Hcs.WebApp/Components/Pages/Objects/Houses.razor
@@ -1,6 +1,5 @@
@page "/objects/houses"
-@using Hcs.WebApp.Components.Dialogs
@using Hcs.WebApp.Services
@using Microsoft.AspNetCore.Authorization
@using System.Security.Claims
@@ -10,7 +9,6 @@
@attribute [Authorize]
@inject HouseService HouseService
-@inject DialogService DialogService
Жилищный фонд
diff --git a/Hcs.WebApp/Components/Pages/Objects/SupplyContracts.razor b/Hcs.WebApp/Components/Pages/Objects/SupplyContracts.razor
new file mode 100644
index 0000000..5a20b16
--- /dev/null
+++ b/Hcs.WebApp/Components/Pages/Objects/SupplyContracts.razor
@@ -0,0 +1,56 @@
+@page "/objects/supply-contracts"
+
+@using Hcs.WebApp.Services
+@using Microsoft.AspNetCore.Authorization
+@using System.Security.Claims
+
+@inherits SyncedPageBase
+
+@attribute [Authorize]
+
+@inject SupplyContractService SupplyContractService
+
+Договора ресурсоснабжения
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ protected override Campaign.CampaignType CampaignType => Campaign.CampaignType.ExportSupplyContracts_15_7_0_1;
+
+ protected override bool HasPermission(ClaimsPrincipal user)
+ {
+ return user.IsOperatorOrHigher();
+ }
+
+ protected override Task> GetDataAsync()
+ {
+ return SupplyContractService.GetAllSupplyContractsAsync();
+ }
+}
diff --git a/Hcs.WebApp/Data/Hcs/Campaign.cs b/Hcs.WebApp/Data/Hcs/Campaign.cs
index cf3bd47..c767e35 100644
--- a/Hcs.WebApp/Data/Hcs/Campaign.cs
+++ b/Hcs.WebApp/Data/Hcs/Campaign.cs
@@ -16,7 +16,10 @@ namespace Hcs.WebApp.Data.Hcs
ExportPrivateRegistryElements_15_7_0_1,
[Display(Description = "Парсинг данных домов")]
- ParseHousesData_15_7_0_1
+ ParseHousesData_15_7_0_1,
+
+ [Display(Description = "Экспорт договоров ресурсоснабжения")]
+ ExportSupplyContracts_15_7_0_1,
}
public int Id { get; set; }
diff --git a/Hcs.WebApp/Program.cs b/Hcs.WebApp/Program.cs
index 912a550..c72ce9b 100644
--- a/Hcs.WebApp/Program.cs
+++ b/Hcs.WebApp/Program.cs
@@ -72,6 +72,7 @@ builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
+builder.Services.AddScoped();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
diff --git a/Hcs.WebApp/Services/SupplyContractService.cs b/Hcs.WebApp/Services/SupplyContractService.cs
new file mode 100644
index 0000000..161aaba
--- /dev/null
+++ b/Hcs.WebApp/Services/SupplyContractService.cs
@@ -0,0 +1,31 @@
+using EFCore.BulkExtensions;
+using Hcs.WebApp.Data.Hcs;
+using Microsoft.EntityFrameworkCore;
+
+namespace Hcs.WebApp.Services
+{
+ public class SupplyContractService(IDbContextFactory factory) : HcsServiceBase(factory)
+ {
+ public async Task> GetAllSupplyContractsAsync()
+ {
+ using var context = GetNewContext();
+ return await context.SupplyContracts.ToListAsync();
+ }
+
+ public async Task UpsertSupplyContracts(IEnumerable supplyContracts)
+ {
+ using var context = GetNewContext();
+ await context.BulkInsertOrUpdateAsync(supplyContracts, new BulkConfig()
+ {
+ PropertiesToExcludeOnUpdate =
+ [
+ nameof(SupplyContract.ThirdPartyId)
+ ],
+ UpdateByProperties =
+ [
+ nameof(SupplyContract.HcsId)
+ ]
+ });
+ }
+ }
+}