diff --git a/AsbCloudApp/Services/IParserService.cs b/AsbCloudApp/Services/IParserService.cs
index 6fa095cd..8c01af5a 100644
--- a/AsbCloudApp/Services/IParserService.cs
+++ b/AsbCloudApp/Services/IParserService.cs
@@ -8,10 +8,8 @@ namespace AsbCloudApp.Services;
/// Сервис парсинга
///
///
-///
-public interface IParserService : IParserService
+public interface IParserService : IParserService
where TDto : class, IId
- where TOptions : IParserOptionsRequest
{
///
/// Распарсить файл
@@ -19,7 +17,8 @@ public interface IParserService : IParserService
///
///
///
- ParserResultDto Parse(Stream file, TOptions options);
+ ParserResultDto Parse(Stream file, TOptions options)
+ where TOptions : IParserOptionsRequest;
///
/// Получение шаблона для заполнения
diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs
index 1aaeab0c..7356f9a3 100644
--- a/AsbCloudInfrastructure/DependencyInjection.cs
+++ b/AsbCloudInfrastructure/DependencyInjection.cs
@@ -332,21 +332,11 @@ namespace AsbCloudInfrastructure
services.AddTransient();
services.AddTransient();
services.AddTransient();
-
-
- services.AddTransient(serviceProvider =>
- {
- var parsers = new Dictionary>
- {
- { ParserIds.IdTrajectoryPlanParser, () => new TrajectoryPlanParser(serviceProvider) },
- { ParserIds.IdTrajectoryFactManualParser, () => new TrajectoryFactManualParser(serviceProvider) },
- { ParserIds.IdProcessMapPlanDrillingParser, () => new ProcessMapPlanDrillingParser(serviceProvider) }
- };
- var factory = new ParserServiceFactory(parsers);
- return factory;
- });
-
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+
return services;
}
}
diff --git a/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs b/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs
index dabf5d50..661c729f 100644
--- a/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs
+++ b/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs
@@ -12,17 +12,9 @@ using Mapster;
namespace AsbCloudInfrastructure.Services.Parser;
-public abstract class ParserExcelService : IParserService
+public abstract class ParserExcelService : IParserService
where TDto : class, IValidatableObject, IId
- where TOptions : IParserOptionsRequest
{
- protected readonly IServiceProvider serviceProvider;
-
- protected ParserExcelService(IServiceProvider serviceProvider)
- {
- this.serviceProvider = serviceProvider;
- }
-
protected abstract string SheetName { get; }
protected virtual int HeaderRowsCount => 0;
@@ -31,7 +23,8 @@ public abstract class ParserExcelService : IParserService Cells { get; }
- public virtual ParserResultDto Parse(Stream file, TOptions options)
+ public virtual ParserResultDto Parse(Stream file, TOptions options)
+ where TOptions : IParserOptionsRequest
{
using var workbook = new XLWorkbook(file);
var sheet = workbook.GetWorksheet(SheetName);
diff --git a/AsbCloudInfrastructure/Services/Parser/ParserIds.cs b/AsbCloudInfrastructure/Services/Parser/ParserIds.cs
deleted file mode 100644
index 45b9d915..00000000
--- a/AsbCloudInfrastructure/Services/Parser/ParserIds.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace AsbCloudInfrastructure.Services.Parser;
-
-public static class ParserIds
-{
- public const int IdTrajectoryFactManualParser = 1;
- public const int IdTrajectoryPlanParser = 2;
- public const int IdProcessMapPlanDrillingParser = 3;
-}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/Parser/ParserServiceFactory.cs b/AsbCloudInfrastructure/Services/Parser/ParserServiceFactory.cs
deleted file mode 100644
index 36718cfd..00000000
--- a/AsbCloudInfrastructure/Services/Parser/ParserServiceFactory.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using AsbCloudApp.Data;
-using AsbCloudApp.Requests.ParserOptions;
-using AsbCloudApp.Services;
-
-namespace AsbCloudInfrastructure.Services.Parser;
-
-public class ParserServiceFactory
-{
- private readonly IDictionary> parsers;
-
- public ParserServiceFactory(IDictionary> parsers)
- {
- this.parsers = parsers;
- }
-
- public IParserService Create(int idParserService)
- where TDto : class, IId
- where TOptions : IParserOptionsRequest
- {
- if (!parsers.TryGetValue(idParserService, out var parserService))
- throw new ArgumentNullException(nameof(idParserService), "Не правильный идентификатор парсера");
-
- return parserService.Invoke() as IParserService
- ?? throw new ArgumentNullException(nameof(idParserService), "Ошибка приведения типа");
- }
-}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs
index e0073bee..2268b821 100644
--- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs
+++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs
@@ -14,11 +14,8 @@ public class ProcessMapPlanDrillingParser : ProcessMapPlanParser sections;
- public ProcessMapPlanDrillingParser(IServiceProvider serviceProvider)
- : base(serviceProvider)
+ public ProcessMapPlanDrillingParser(IWellOperationRepository wellOperationRepository)
{
- var wellOperationRepository = serviceProvider.GetRequiredService();
-
sections = wellOperationRepository.GetSectionTypes();
}
diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs
index 3a427738..c08ec6e8 100644
--- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs
+++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs
@@ -1,20 +1,12 @@
using System;
-using System.IO;
-using AsbCloudApp.Data;
using AsbCloudApp.Data.ProcessMapPlan;
-using AsbCloudApp.Requests.ParserOptions;
using AsbCloudInfrastructure.Services.Parser;
namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser;
-public abstract class ProcessMapPlanParser : ParserExcelService
+public abstract class ProcessMapPlanParser : ParserExcelService
where TDto : ProcessMapPlanBaseDto
{
- protected ProcessMapPlanParser(IServiceProvider serviceProvider)
- : base(serviceProvider)
- {
- }
-
protected override int HeaderRowsCount => 2;
protected static int? GetIdMode(string? modeName) =>
diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs
index 4b7ddb53..5de4e2c5 100644
--- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs
+++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs
@@ -1,18 +1,11 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using AsbCloudApp.Data.Trajectory;
-using AsbCloudApp.Requests.ParserOptions;
using AsbCloudInfrastructure.Services.Parser;
namespace AsbCloudInfrastructure.Services.Trajectory.Parser;
-public class TrajectoryFactManualParser : ParserExcelService
+public class TrajectoryFactManualParser : ParserExcelService
{
- public TrajectoryFactManualParser(IServiceProvider serviceProvider)
- : base(serviceProvider)
- {
- }
-
protected override string SheetName => "Фактическая траектория";
protected override int HeaderRowsCount => 2;
diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs
index b7a03696..4c100766 100644
--- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs
+++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs
@@ -1,18 +1,11 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using AsbCloudApp.Data.Trajectory;
-using AsbCloudApp.Requests.ParserOptions;
using AsbCloudInfrastructure.Services.Parser;
namespace AsbCloudInfrastructure.Services.Trajectory.Parser;
-public class TrajectoryPlanParser : ParserExcelService
+public class TrajectoryPlanParser : ParserExcelService
{
- public TrajectoryPlanParser(IServiceProvider serviceProvider)
- : base(serviceProvider)
- {
- }
-
protected override string SheetName => "Плановая траектория";
protected override int HeaderRowsCount => 2;
diff --git a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs
index dcda8a58..8921d982 100644
--- a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs
+++ b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs
@@ -2,6 +2,7 @@
using AsbCloudApp.Data.Trajectory;
using AsbCloudApp.Requests.ParserOptions;
using AsbCloudInfrastructure.Services.Parser;
+using AsbCloudInfrastructure.Services.Trajectory.Parser;
using Xunit;
namespace AsbCloudWebApi.Tests.Services.Trajectory;
@@ -10,8 +11,9 @@ public class TrajectoryParserTest
{
private const string UsingTemplateFile = "AsbCloudWebApi.Tests.Services.Trajectory.Templates";
- private readonly ParserServiceFactory parserServiceFactory;
-
+ private readonly TrajectoryPlanParser trajectoryPlanParser = new();
+ private readonly TrajectoryFactManualParser trajectoryFactManualParser = new();
+
[Fact]
public void Parse_trajectory_plan()
{
@@ -20,11 +22,8 @@ public class TrajectoryParserTest
if (stream is null)
Assert.Fail("Файла для импорта не существует");
-
- var parserService = parserServiceFactory.Create(
- ParserIds.IdTrajectoryPlanParser);
- var trajectoryRows = parserService.Parse(stream, IParserOptionsRequest.Empty());
+ var trajectoryRows = trajectoryPlanParser.Parse(stream, IParserOptionsRequest.Empty());
Assert.Equal(3, trajectoryRows.Item.Count());
}
@@ -38,10 +37,7 @@ public class TrajectoryParserTest
if (stream is null)
Assert.Fail("Файла для импорта не существует");
- var parserService = parserServiceFactory.Create(
- ParserIds.IdTrajectoryFactManualParser);
-
- var trajectoryRows = parserService.Parse(stream, IParserOptionsRequest.Empty());
+ var trajectoryRows = trajectoryFactManualParser.Parse(stream, IParserOptionsRequest.Empty());
Assert.Equal(4, trajectoryRows.Item.Count());
}