diff --git a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs b/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
index 0034879a..22e34cf2 100644
--- a/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
+++ b/AsbCloudApp/Data/AutogeneratedDailyReport/AutoGeneratedDailyReportInfoDto.cs
@@ -5,21 +5,10 @@ namespace AsbCloudApp.Data.AutogeneratedDailyReport;
///
/// Базовая информация о суточном отчёте
///
-public class AutoGeneratedDailyReportInfoDto
+public class AutoGeneratedDailyReportInfoDto : ReportInfoDto
{
- ///
- /// Дата формирования отчёта
- ///
- public DateOnly ReportDate { get; set; }
-
- ///
- /// Название файла
- ///
- public string FileName { get; set; } = null!;
-
- ///
- /// Размер файла
- ///
- public int FileSize { get; set; }
-
+ ///
+ /// Дата формирования отчёта
+ ///
+ public DateOnly ReportDate { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs
new file mode 100644
index 00000000..ee63bf9b
--- /dev/null
+++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs
@@ -0,0 +1,26 @@
+using AsbCloudApp.Data.SAUB;
+using System;
+
+namespace AsbCloudApp.Data.DrillTestReport
+{
+ ///
+ /// Информация о drill test, выгружаемая в отчете
+ ///
+ public class DrillTestReportDataDto
+ {
+ ///
+ /// Данные для отчета
+ ///
+ public DrillTestDto Data { get; set; } = null!;
+
+ ///
+ /// Заголовок отчета
+ ///
+ public string Caption { get; set; } = null!;
+
+ ///
+ /// Дата отчета
+ ///
+ public DateTime Date { get; set; } = DateTime.Now;
+ }
+}
diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
new file mode 100644
index 00000000..8d3a9244
--- /dev/null
+++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
@@ -0,0 +1,25 @@
+using System;
+
+namespace AsbCloudApp.Data.DrillTestReport
+{
+ ///
+ /// Базовая информация о drill_test отчёте
+ ///
+ public class DrillTestReportInfoDto : ReportInfoDto
+ {
+ ///
+ /// Идентификатор отчета
+ ///
+ public int Id { get; set; }
+
+ ///
+ /// Проходка
+ ///
+ public float DrillDepth { get; set; }
+
+ ///
+ /// Дата и время
+ ///
+ public DateTime DateTime { get; set; }
+ }
+}
diff --git a/AsbCloudApp/Data/ReportInfoDto.cs b/AsbCloudApp/Data/ReportInfoDto.cs
new file mode 100644
index 00000000..bd55d33c
--- /dev/null
+++ b/AsbCloudApp/Data/ReportInfoDto.cs
@@ -0,0 +1,18 @@
+namespace AsbCloudApp.Data
+{
+ ///
+ /// Справочная информация об отчете
+ ///
+ public class ReportInfoDto
+ {
+ ///
+ /// Название файла
+ ///
+ public string FileName { get; set; } = null!;
+
+ ///
+ /// Размер файла
+ ///
+ public int FileSize { get; set; } = 0;
+ }
+}
diff --git a/AsbCloudApp/Repositories/IDrillTestRepository.cs b/AsbCloudApp/Repositories/IDrillTestRepository.cs
index 45552871..18ff0e9b 100644
--- a/AsbCloudApp/Repositories/IDrillTestRepository.cs
+++ b/AsbCloudApp/Repositories/IDrillTestRepository.cs
@@ -1,4 +1,5 @@
using AsbCloudApp.Data.SAUB;
+using AsbCloudApp.Requests;
using System.Threading;
using System.Threading.Tasks;
@@ -9,6 +10,24 @@ namespace AsbCloudApp.Repositories
///
public interface IDrillTestRepository
{
+ ///
+ /// Получить данные drill_test в соответствии с параметрами запроса
+ ///
+ /// ключ телеметрии
+ /// запрос
+ ///
+ ///
+ Task GetAllAsync(int idTelemetry, FileReportRequest request, CancellationToken cancellationToken);
+
+ ///
+ /// Получить запись drill_test
+ ///
+ /// ключ телеметрии
+ /// ключ записи drill_test
+ ///
+ ///
+ Task GetAsync(int idTelemetry, int id, CancellationToken cancellationToken);
+
///
/// Сохранить данные drill_test
///
diff --git a/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs b/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs
index 5e7dae7c..a9984016 100644
--- a/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs
+++ b/AsbCloudApp/Requests/AutoGeneratedDailyReportRequest.cs
@@ -3,17 +3,17 @@ using System;
namespace AsbCloudApp.Requests;
///
-/// Параметры запроса для получения авто-генерируемых суточных отчётов
+/// Параметры запроса для получения отчетов (файлов)
///
-public class AutoGeneratedDailyReportRequest : RequestBase
+public class FileReportRequest : RequestBase
{
- ///
- /// Дата начала периода
- ///
- public DateOnly? StartDate { get; set; }
-
- ///
- /// Дата конца периода
- ///
- public DateOnly? FinishDate { get; set; }
+ ///
+ /// Дата начала периода
+ ///
+ public DateOnly? GeDate { get; set; }
+
+ ///
+ /// Дата конца периода
+ ///
+ public DateOnly? LeDate { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs
index 8571e356..8c2e9a46 100644
--- a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs
+++ b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportMakerService.cs
@@ -1,20 +1,19 @@
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using AsbCloudApp.Data.AutogeneratedDailyReport;
namespace AsbCloudApp.Services.AutoGeneratedDailyReports;
///
-/// Сервис для генерации файлов авто-генерируемых суточный отчётов
+/// Сервис для генерации файлов отчётов
///
-public interface IAutoGeneratedDailyReportMakerService
+public interface IReportMakerService
{
- ///
- /// Генерация файла
- ///
- ///
- ///
- ///
- Task MakeReportAsync(AutoGeneratedDailyReportDto report, CancellationToken cancellationToken);
+ ///
+ /// Генерация файла
+ ///
+ /// модель с данными для построения отчета
+ ///
+ ///
+ Task MakeReportAsync(T report, CancellationToken cancellationToken);
}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
index 13bdb1ea..979f948c 100644
--- a/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
+++ b/AsbCloudApp/Services/AutoGeneratedDailyReports/IAutoGeneratedDailyReportService.cs
@@ -21,7 +21,7 @@ public interface IAutoGeneratedDailyReportService
///
///
Task> GetListAsync(int idWell,
- AutoGeneratedDailyReportRequest request,
+ FileReportRequest request,
CancellationToken cancellationToken);
///
diff --git a/AsbCloudApp/Services/IDrillTestReportService.cs b/AsbCloudApp/Services/IDrillTestReportService.cs
new file mode 100644
index 00000000..6dd97b83
--- /dev/null
+++ b/AsbCloudApp/Services/IDrillTestReportService.cs
@@ -0,0 +1,35 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.DrillTestReport;
+using AsbCloudApp.Requests;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Services
+{
+ ///
+ /// сервис по работе с отчетами drill test
+ ///
+ public interface IDrillTestReportService
+ {
+ ///
+ /// Список файлов drill test
+ ///
+ /// ключ скважины
+ /// параметры запроса
+ ///
+ ///
+ Task> GetListAsync(int idWell,
+ FileReportRequest request,
+ CancellationToken cancellationToken);
+
+ ///
+ /// Генерация файла с отчётом
+ ///
+ /// ключ скважины
+ /// ключ drill test записи
+ ///
+ ///
+ Task<(string fileName, Stream stream)> GenerateAsync(int idWell, int id, CancellationToken cancellationToken);
+ }
+}
diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj
index bc825b4b..2c2bd528 100644
--- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj
+++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj
@@ -13,6 +13,7 @@
+
@@ -30,6 +31,7 @@
+
diff --git a/AsbCloudInfrastructure/AssemblyExtensions.cs b/AsbCloudInfrastructure/AssemblyExtensions.cs
new file mode 100644
index 00000000..9594261b
--- /dev/null
+++ b/AsbCloudInfrastructure/AssemblyExtensions.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudInfrastructure
+{
+ public static class AssemblyExtensions
+ {
+ public static async Task GetTemplateCopyStreamAsync(this Assembly assembly, string templateName, CancellationToken cancellationToken)
+ {
+ var resourceName = assembly
+ .GetManifestResourceNames()
+ .FirstOrDefault(n => n.EndsWith(templateName))!;
+
+ using var stream = Assembly.GetExecutingAssembly()
+ .GetManifestResourceStream(resourceName)!;
+
+ var memoryStream = new MemoryStream();
+ await stream.CopyToAsync(memoryStream, cancellationToken);
+ memoryStream.Position = 0;
+
+ return memoryStream;
+ }
+ }
+}
diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs
index 85caf0b2..0ce35409 100644
--- a/AsbCloudInfrastructure/DependencyInjection.cs
+++ b/AsbCloudInfrastructure/DependencyInjection.cs
@@ -1,5 +1,6 @@
-using System;
-using AsbCloudApp.Data;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.AutogeneratedDailyReport;
+using AsbCloudApp.Data.DrillTestReport;
using AsbCloudApp.Data.Manuals;
using AsbCloudApp.Data.ProcessMaps;
using AsbCloudApp.Data.SAUB;
@@ -24,6 +25,7 @@ using AsbCloudInfrastructure.Services.AutoGeneratedDailyReports;
using AsbCloudInfrastructure.Services.DailyReport;
using AsbCloudInfrastructure.Services.DetectOperations;
using AsbCloudInfrastructure.Services.DrillingProgram;
+using AsbCloudInfrastructure.Services.DrillTestReport;
using AsbCloudInfrastructure.Services.ProcessMaps.Report;
using AsbCloudInfrastructure.Services.ProcessMaps.WellDrilling;
using AsbCloudInfrastructure.Services.SAUB;
@@ -37,273 +39,275 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using System;
namespace AsbCloudInfrastructure
{
public static class DependencyInjection
{
- public static IAsbCloudDbContext MakeContext(string connectionString)
- {
- var options = new DbContextOptionsBuilder()
- .UseNpgsql(connectionString)
- .Options;
- var context = new AsbCloudDbContext(options);
- return context;
- }
+ public static IAsbCloudDbContext MakeContext(string connectionString)
+ {
+ var options = new DbContextOptionsBuilder()
+ .UseNpgsql(connectionString)
+ .Options;
+ var context = new AsbCloudDbContext(options);
+ return context;
+ }
- public static void MapsterSetup()
- {
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => source.DateTime);
+ public static void MapsterSetup()
+ {
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => source.DateTime);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => source == default ? new DateTime(0, DateTimeKind.Utc) : source);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => source == default ? new DateTime(0, DateTimeKind.Utc) : source);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => source.MakeTimeOnly());
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => source.MakeTimeOnly());
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => new(source));
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => new(source));
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .MapWith((source) => new(source));
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .MapWith((source) => new(source));
#pragma warning disable CS8603 // Possible null reference return.
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Ignore(dst => dst.Cluster,
- dst => dst.RelationCompaniesWells,
- dst => dst.Telemetry,
- dst => dst.WellComposites,
- dst => dst.WellCompositeSrcs,
- dst => dst.WellOperations,
- dst => dst.WellType);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Ignore(dst => dst.Cluster,
+ dst => dst.RelationCompaniesWells,
+ dst => dst.Telemetry,
+ dst => dst.WellComposites,
+ dst => dst.WellCompositeSrcs,
+ dst => dst.WellOperations,
+ dst => dst.WellType);
#pragma warning restore CS8603 // Possible null reference return.
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Ignore(dst => dst.Deposit,
- dst => dst.Wells);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Ignore(dst => dst.Deposit,
+ dst => dst.Wells);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType();
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType();
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType();
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType();
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Ignore(dst => dst.NotificationCategory,
- dst => dst.User);
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Ignore(dst => dst.NotificationCategory,
+ dst => dst.User);
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Map(dest => dest.AxialLoad, src => new PlanLimitDto
- {
- LimitMax = src.AxialLoadLimitMax,
- Plan = src.AxialLoadPlan
- })
- .Map(dest => dest.Flow, src => new PlanLimitDto
- {
- LimitMax = src.FlowLimitMax,
- Plan = src.FlowPlan
- })
- .Map(dest => dest.Pressure, src => new PlanLimitDto
- {
- LimitMax = src.PressureLimitMax,
- Plan = src.PressurePlan
- })
- .Map(dest => dest.TopDriveSpeed, src => new PlanLimitDto
- {
- LimitMax = src.TopDriveSpeedLimitMax,
- Plan = src.TopDriveSpeedPlan
- })
- .Map(dest => dest.TopDriveTorque, src => new PlanLimitDto
- {
- LimitMax = src.TopDriveTorqueLimitMax,
- Plan = src.TopDriveTorquePlan
- });
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Map(dest => dest.AxialLoad, src => new PlanLimitDto
+ {
+ LimitMax = src.AxialLoadLimitMax,
+ Plan = src.AxialLoadPlan
+ })
+ .Map(dest => dest.Flow, src => new PlanLimitDto
+ {
+ LimitMax = src.FlowLimitMax,
+ Plan = src.FlowPlan
+ })
+ .Map(dest => dest.Pressure, src => new PlanLimitDto
+ {
+ LimitMax = src.PressureLimitMax,
+ Plan = src.PressurePlan
+ })
+ .Map(dest => dest.TopDriveSpeed, src => new PlanLimitDto
+ {
+ LimitMax = src.TopDriveSpeedLimitMax,
+ Plan = src.TopDriveSpeedPlan
+ })
+ .Map(dest => dest.TopDriveTorque, src => new PlanLimitDto
+ {
+ LimitMax = src.TopDriveTorqueLimitMax,
+ Plan = src.TopDriveTorquePlan
+ });
- TypeAdapterConfig.GlobalSettings.Default.Config
- .ForType()
- .Map(dest => dest.AxialLoadPlan, src => src.AxialLoad.Plan)
- .Map(dest => dest.AxialLoadLimitMax, src => src.AxialLoad.LimitMax)
- .Map(dest => dest.FlowPlan, src => src.Flow.Plan)
- .Map(dest => dest.FlowLimitMax, src => src.Flow.LimitMax)
- .Map(dest => dest.PressurePlan, src => src.Pressure.Plan)
- .Map(dest => dest.PressureLimitMax, src => src.Pressure.LimitMax)
- .Map(dest => dest.TopDriveSpeedPlan, src => src.TopDriveSpeed.Plan)
- .Map(dest => dest.TopDriveSpeedLimitMax, src => src.TopDriveSpeed.LimitMax)
- .Map(dest => dest.TopDriveTorquePlan, src => src.TopDriveTorque.Plan)
- .Map(dest => dest.TopDriveTorqueLimitMax, src => src.TopDriveTorque.LimitMax);
- }
+ TypeAdapterConfig.GlobalSettings.Default.Config
+ .ForType()
+ .Map(dest => dest.AxialLoadPlan, src => src.AxialLoad.Plan)
+ .Map(dest => dest.AxialLoadLimitMax, src => src.AxialLoad.LimitMax)
+ .Map(dest => dest.FlowPlan, src => src.Flow.Plan)
+ .Map(dest => dest.FlowLimitMax, src => src.Flow.LimitMax)
+ .Map(dest => dest.PressurePlan, src => src.Pressure.Plan)
+ .Map(dest => dest.PressureLimitMax, src => src.Pressure.LimitMax)
+ .Map(dest => dest.TopDriveSpeedPlan, src => src.TopDriveSpeed.Plan)
+ .Map(dest => dest.TopDriveSpeedLimitMax, src => src.TopDriveSpeed.LimitMax)
+ .Map(dest => dest.TopDriveTorquePlan, src => src.TopDriveTorque.Plan)
+ .Map(dest => dest.TopDriveTorqueLimitMax, src => src.TopDriveTorque.LimitMax);
+ }
- public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
- {
- MapsterSetup();
- string connectionStringName = "DefaultConnection";
+ public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
+ {
+ MapsterSetup();
+ string connectionStringName = "DefaultConnection";
#if DEBUG
- connectionStringName = "DebugConnection";
+ connectionStringName = "DebugConnection";
#endif
- services.AddDbContext(options =>
- options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
+ services.AddDbContext(options =>
+ options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
- services.AddMemoryCache();
- services.AddScoped(provider => provider.GetRequiredService());
+ services.AddMemoryCache();
+ services.AddScoped(provider => provider.GetRequiredService());
- services.AddSingleton(new WitsInfoService());
- services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
- services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
- services.AddSingleton();
- services.AddSingleton();
- services.AddSingleton();
- services.AddSingleton(provider => ReduceSamplingService.GetInstance(configuration));
+ services.AddSingleton(new WitsInfoService());
+ services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
+ services.AddSingleton(provider => TelemetryDataCache.GetInstance(provider));
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton(provider => ReduceSamplingService.GetInstance(configuration));
- services.AddTransient();
- services.AddTransient, ProcessMapPlanRepository>();
- services.AddTransient, ProcessMapPlanRepository>();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient, CrudWellRelatedRepositoryBase>();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, ProcessMapPlanRepository>();
+ services.AddTransient, ProcessMapPlanRepository>();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, CrudWellRelatedRepositoryBase>();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
- services.AddTransient();
+ services.AddTransient();
- services.AddTransient();
+ services.AddTransient();
services.AddTransient();
services.AddTransient();
- services.AddTransient, CrudCacheRepositoryBase, CrudCacheRepositoryBase>();
services.AddTransient();
- // admin crud services:
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet.Include(t => t.Well))); // может быть включен в сервис TelemetryService
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet.Include(d => d.Clusters)));
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet.Include(c => c.CompanyType)));
+ // admin crud services:
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet.Include(t => t.Well))); // может быть включен в сервис TelemetryService
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet.Include(d => d.Clusters)));
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet.Include(c => c.CompanyType)));
- services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient, CrudCacheRepositoryBase>(s =>
- new CrudCacheRepositoryBase(
- s.GetRequiredService(),
- s.GetRequiredService(),
- dbSet => dbSet
- .Include(c => c.Wells)
- .Include(c => c.Deposit))); // может быть включен в сервис ClusterService
+ services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient, CrudCacheRepositoryBase>(s =>
+ new CrudCacheRepositoryBase(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ dbSet => dbSet
+ .Include(c => c.Wells)
+ .Include(c => c.Deposit))); // может быть включен в сервис ClusterService
- services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient();
- services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, CrudCacheRepositoryBase>();
- // Subsystem service
- services.AddTransient, CrudCacheRepositoryBase>();
- services.AddTransient();
+ // Subsystem service
+ services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient();
- services.AddTransient, CrudCacheRepositoryBase>();
+ services.AddTransient, CrudCacheRepositoryBase>();
- // TelemetryData services
- services.AddTransient();
- services.AddTransient, TelemetryDataSpinService>();
+ // TelemetryData services
+ services.AddTransient();
+ services.AddTransient, TelemetryDataSpinService>();
- // Wits
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
- services.AddTransient, WitsRecordRepository>();
+ // Wits
+ services.AddTransient, WitsRecordRepository>();
+ services.AddTransient, WitsRecordRepository>();
+ services.AddTransient, WitsRecordRepository>();
+ services.AddTransient, WitsRecordRepository